/* Options: Date: 2025-12-14 05:16:02 Version: 8.80 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://api.bokamera.se //Package: //AddServiceStackTypes: True //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True IncludeTypes: CreateVossUsage.* //ExcludeTypes: //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: java.math.*,java.util.*,java.io.InputStream,net.servicestack.client.*,com.google.gson.annotations.*,com.google.gson.reflect.* */ import java.math.* import java.util.* import java.io.InputStream import net.servicestack.client.* import com.google.gson.annotations.* import com.google.gson.reflect.* @Route(Path="/voss/usage", Verbs="POST") @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401) @ValidateRequest(Validator="IsAuthenticated") open class CreateVossUsage : IReturn { /** * The company id */ @ApiMember(Description="The company id", IsRequired=true) open var CompanyId:UUID? = null /** * Article number. Can be fetched from products */ @ApiMember(Description="Article number. Can be fetched from products", IsRequired=true) open var ArticleNumber:String? = null /** * Example: developer worked 6 hours */ @ApiMember(Description="Example: developer worked 6 hours", IsRequired=true) open var Quantity:Int? = null companion object { private val responseType = CreateSubscriptionProductGroupResult::class.java } override fun getResponseType(): Any? = CreateVossUsage.responseType } @DataContract(Name="CreateSubscriptionProductGroupResult") open class CreateSubscriptionProductGroupResult { @DataMember(Name="productGroupType", IsRequired=true) @SerializedName("productGroupType") open var ProductGroupType:ProductGroupTypeEnum? = null @DataMember(Name="status", IsRequired=true) @SerializedName("status") open var Status:StatusEnum? = null @DataMember(Name="id", IsRequired=true) @SerializedName("id") open var Id:UUID? = null @DataMember(Name="name", IsRequired=true) @SerializedName("name") open var Name:String? = null @DataMember(Name="products", EmitDefaultValue=false) @SerializedName("products") open var Products:ArrayList = ArrayList() @DataMember(Name="termination") @SerializedName("termination") open var Termination:SubscriptionItemTerminationDto? = null @DataMember(Name="created", IsRequired=true) @SerializedName("created") open var Created:Date? = null @DataMember(Name="customerBalanceChange", IsRequired=true) @SerializedName("customerBalanceChange") open var CustomerBalanceChange:CustomerBalanceChangeDto? = null } enum class CreditKindEnum { Normal, Internal, } enum class ProductTypeEnum { Main, Addon, License, Usage, } enum class SubscriptionBehaviourEnum { Prorate, Full, None, } @DataContract(Name="SubscriptionItemTerminationReasonDto") open class SubscriptionItemTerminationReasonDto { @DataMember(Name="reasonId", IsRequired=true) @SerializedName("reasonId") open var ReasonId:UUID? = null @DataMember(Name="reasonName", IsRequired=true) @SerializedName("reasonName") open var ReasonName:String? = null @DataMember(Name="reasonExternalId") @SerializedName("reasonExternalId") open var ReasonExternalId:String? = null @DataMember(Name="subReasonId") @SerializedName("subReasonId") open var SubReasonId:UUID? = null @DataMember(Name="subReasonName") @SerializedName("subReasonName") open var SubReasonName:String? = null @DataMember(Name="subReasonExternalId") @SerializedName("subReasonExternalId") open var SubReasonExternalId:String? = null @DataMember(Name="comment", IsRequired=true) @SerializedName("comment") open var Comment:String? = null } @DataContract(Name="CustomerBalanceChangeDto") open class CustomerBalanceChangeDto { @DataMember(Name="items", EmitDefaultValue=false) @SerializedName("items") open var Items:ArrayList = ArrayList() @DataMember(Name="totalAmount", EmitDefaultValue=false) @SerializedName("totalAmount") open var TotalAmount:Double? = null @DataMember(Name="totalDiscountAmount", EmitDefaultValue=false) @SerializedName("totalDiscountAmount") open var TotalDiscountAmount:Double? = null } enum class ProductGroupTypeEnum { Optional, Included, } enum class StatusEnum { Active, Terminated, } @DataContract(Name="SubscriptionProductGroupProductResultDto") open class SubscriptionProductGroupProductResultDto { @DataMember(Name="id", IsRequired=true) @SerializedName("id") open var Id:UUID? = null @DataMember(Name="name", IsRequired=true) @SerializedName("name") open var Name:String? = null @DataMember(Name="externalId") @SerializedName("externalId") open var ExternalId:String? = null @DataMember(Name="articleNumber", IsRequired=true) @SerializedName("articleNumber") open var ArticleNumber:String? = null } @DataContract(Name="SubscriptionItemTerminationDto") open class SubscriptionItemTerminationDto { @DataMember(Name="type") @SerializedName("type") open var Type:TypeEnum? = null @DataMember(Name="source", IsRequired=true) @SerializedName("source") open var Source:SourceEnum? = null @DataMember(Name="scheduledDate", IsRequired=true) @SerializedName("scheduledDate") open var ScheduledDate:Date? = null @DataMember(Name="reason") @SerializedName("reason") open var Reason:SubscriptionItemTerminationReasonDto? = null @DataMember(Name="creditOptions", IsRequired=true) @SerializedName("creditOptions") open var CreditOptions:CreditOptionsDto? = null } @DataContract(Name="CustomerBalanceChangeItemDto") open class CustomerBalanceChangeItemDto { @DataMember(Name="type", IsRequired=true) @SerializedName("type") open var ProductType:ProductTypeEnum? = null @DataMember(Name="id", IsRequired=true) @SerializedName("id") open var Id:UUID? = null @DataMember(Name="name", IsRequired=true) @SerializedName("name") open var Name:String? = null @DataMember(Name="productGroupId", IsRequired=true) @SerializedName("productGroupId") open var ProductGroupId:UUID? = null @DataMember(Name="productGroupName", IsRequired=true) @SerializedName("productGroupName") open var ProductGroupName:String? = null @DataMember(Name="quantity", IsRequired=true) @SerializedName("quantity") open var Quantity:Double? = null @DataMember(Name="amount", IsRequired=true) @SerializedName("amount") open var Amount:Double? = null @DataMember(Name="discountAmount", IsRequired=true) @SerializedName("discountAmount") open var DiscountAmount:Double? = null @DataMember(Name="totalAmount", EmitDefaultValue=false) @SerializedName("totalAmount") open var TotalAmount:Double? = null @DataMember(Name="invoiceRecipientCustomerId", IsRequired=true) @SerializedName("invoiceRecipientCustomerId") open var InvoiceRecipientCustomerId:UUID? = null } enum class TypeEnum { AtSubscriptionBillingPeriodEnd, AtBindingPeriodEnd, Immediately, } enum class SourceEnum { Direct, Plan, CustomerExpiration, Update, Unpaid, } @DataContract(Name="CreditOptionsDto") open class CreditOptionsDto { @DataMember(Name="behaviour", IsRequired=true) @SerializedName("behaviour") open var SubscriptionBehaviour:SubscriptionBehaviourEnum? = null @DataMember(Name="creditKind", IsRequired=true) @SerializedName("creditKind") open var CreditKind:CreditKindEnum? = null @DataMember(Name="prorateTimeAnchor") @SerializedName("prorateTimeAnchor") open var ProrateTimeAnchor:Date? = null }