/* Options: Date: 2025-12-14 05:16:27 SwiftVersion: 6.0 Version: 8.80 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://api.bokamera.se //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: CreateVossUsage.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/voss/usage", "POST") // @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401) // @ValidateRequest(Validator="IsAuthenticated") public class CreateVossUsage : IReturn, Codable { public typealias Return = CreateSubscriptionProductGroupResult /** * The company id */ // @ApiMember(Description="The company id", IsRequired=true) public var companyId:String? /** * Article number. Can be fetched from products */ // @ApiMember(Description="Article number. Can be fetched from products", IsRequired=true) public var articleNumber:String? /** * Example: developer worked 6 hours */ // @ApiMember(Description="Example: developer worked 6 hours", IsRequired=true) public var quantity:Int? required public init(){} } // @DataContract(Name="CreateSubscriptionProductGroupResult") public class CreateSubscriptionProductGroupResult : Codable { // @DataMember(Name="productGroupType", IsRequired=true) public var productGroupType:ProductGroupTypeEnum? // @DataMember(Name="status", IsRequired=true) public var status:StatusEnum? // @DataMember(Name="id", IsRequired=true) public var id:String? // @DataMember(Name="name", IsRequired=true) public var name:String? // @DataMember(Name="products", EmitDefaultValue=false) public var products:[SubscriptionProductGroupProductResultDto] = [] // @DataMember(Name="termination") public var termination:SubscriptionItemTerminationDto? // @DataMember(Name="created", IsRequired=true) public var created:Date? // @DataMember(Name="customerBalanceChange", IsRequired=true) public var customerBalanceChange:CustomerBalanceChangeDto? required public init(){} } public enum CreditKindEnum : String, Codable { case Normal case Internal } public enum ProductTypeEnum : String, Codable { case Main case Addon case License case Usage } public enum SubscriptionBehaviourEnum : String, Codable { case Prorate case Full case None } // @DataContract(Name="SubscriptionItemTerminationReasonDto") public class SubscriptionItemTerminationReasonDto : Codable { // @DataMember(Name="reasonId", IsRequired=true) public var reasonId:String? // @DataMember(Name="reasonName", IsRequired=true) public var reasonName:String? // @DataMember(Name="reasonExternalId") public var reasonExternalId:String? // @DataMember(Name="subReasonId") public var subReasonId:String? // @DataMember(Name="subReasonName") public var subReasonName:String? // @DataMember(Name="subReasonExternalId") public var subReasonExternalId:String? // @DataMember(Name="comment", IsRequired=true) public var comment:String? required public init(){} } // @DataContract(Name="CustomerBalanceChangeDto") public class CustomerBalanceChangeDto : Codable { // @DataMember(Name="items", EmitDefaultValue=false) public var items:[CustomerBalanceChangeItemDto] = [] // @DataMember(Name="totalAmount", EmitDefaultValue=false) public var totalAmount:Double? // @DataMember(Name="totalDiscountAmount", EmitDefaultValue=false) public var totalDiscountAmount:Double? required public init(){} } public enum ProductGroupTypeEnum : String, Codable { case Optional case Included } public enum StatusEnum : String, Codable { case Active case Terminated } // @DataContract(Name="SubscriptionProductGroupProductResultDto") public class SubscriptionProductGroupProductResultDto : Codable { // @DataMember(Name="id", IsRequired=true) public var id:String? // @DataMember(Name="name", IsRequired=true) public var name:String? // @DataMember(Name="externalId") public var externalId:String? // @DataMember(Name="articleNumber", IsRequired=true) public var articleNumber:String? required public init(){} } // @DataContract(Name="SubscriptionItemTerminationDto") public class SubscriptionItemTerminationDto : Codable { // @DataMember(Name="type") public var type:TypeEnum? // @DataMember(Name="source", IsRequired=true) public var source:SourceEnum? // @DataMember(Name="scheduledDate", IsRequired=true) public var scheduledDate:Date? // @DataMember(Name="reason") public var reason:SubscriptionItemTerminationReasonDto? // @DataMember(Name="creditOptions", IsRequired=true) public var creditOptions:CreditOptionsDto? required public init(){} } // @DataContract(Name="CustomerBalanceChangeItemDto") public class CustomerBalanceChangeItemDto : Codable { // @DataMember(Name="type", IsRequired=true) public var type:ProductTypeEnum? // @DataMember(Name="id", IsRequired=true) public var id:String? // @DataMember(Name="name", IsRequired=true) public var name:String? // @DataMember(Name="productGroupId", IsRequired=true) public var productGroupId:String? // @DataMember(Name="productGroupName", IsRequired=true) public var productGroupName:String? // @DataMember(Name="quantity", IsRequired=true) public var quantity:Double? // @DataMember(Name="amount", IsRequired=true) public var amount:Double? // @DataMember(Name="discountAmount", IsRequired=true) public var discountAmount:Double? // @DataMember(Name="totalAmount", EmitDefaultValue=false) public var totalAmount:Double? // @DataMember(Name="invoiceRecipientCustomerId", IsRequired=true) public var invoiceRecipientCustomerId:String? required public init(){} } public enum TypeEnum : String, Codable { case AtSubscriptionBillingPeriodEnd case AtBindingPeriodEnd case Immediately } public enum SourceEnum : String, Codable { case Direct case Plan case CustomerExpiration case Update case Unpaid } // @DataContract(Name="CreditOptionsDto") public class CreditOptionsDto : Codable { // @DataMember(Name="behaviour", IsRequired=true) public var behaviour:SubscriptionBehaviourEnum? // @DataMember(Name="creditKind", IsRequired=true) public var creditKind:CreditKindEnum? // @DataMember(Name="prorateTimeAnchor") public var prorateTimeAnchor:Date? required public init(){} }