/* Options: Date: 2026-05-25 01:07:51 SwiftVersion: 6.0 Version: 10.05 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://api.bookmore.com //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: CreateRebateCode.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/rebatecodes", "POST") // @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401) // @ValidateRequest(Validator="IsAuthenticated") public class CreateRebateCode : IReturn, Codable { public typealias Return = RebateCodeResponse /** * */ // @ApiMember(Description="") public var companyId:String? /** * The default value is 9999 */ // @ApiMember(Description="The default value is 9999") public var maxNumberOfUses:Int? /** * The default value is 1 */ // @ApiMember(Description="The default value is 1") public var maxNumberOfUsesPerCustomer:Int? /** * */ // @ApiMember(Description="", IsRequired=true) public var validFrom:Date? /** * */ // @ApiMember(Description="", IsRequired=true) public var validTo:Date? /** * If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update. */ // @ApiMember(Description="If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.") @TimeSpan public var fromTime:TimeInterval? /** * If the price is only valid for a specific time span during a time of day enter the FromTime and ToTime parameters. */ // @ApiMember(Description="If the price is only valid for a specific time span during a time of day enter the FromTime and ToTime parameters.") @TimeSpan public var toTime:TimeInterval? /** * 1 - Percent, 2 - Сurrency, 3 - PunchTicket, 4 - ValueCard, 5 - GiftCard */ // @ApiMember(Description="1 - Percent, 2 - Сurrency, 3 - PunchTicket, 4 - ValueCard, 5 - GiftCard", IsRequired=true) public var rebateCodeTypeId:Int? /** * If it's connected to an Article, add the Article Id here. */ // @ApiMember(Description="If it's connected to an Article, add the Article Id here.") public var articleId:Int? /** * */ // @ApiMember(Description="", IsRequired=true) public var rebateCodeValue:Int? /** * If AutoGenerateRebateCodeSign=false - more than four letters, unique among active codes */ // @ApiMember(Description="If AutoGenerateRebateCodeSign=false - more than four letters, unique among active codes") public var rebateCodeSign:String? /** * AutoGenerateRebateCodeSign=true - random generate code */ // @ApiMember(Description="AutoGenerateRebateCodeSign=true - random generate code") public var autoGenerateRebateCodeSign:Bool? /** * */ // @ApiMember(Description="") public var personalNote:String? /** * */ // @ApiMember(Description="") public var daysOfWeek:[Int] = [] /** * */ // @ApiMember(Description="") public var services:[Int] = [] /** * */ // @ApiMember(Description="") public var customers:[String] = [] /** * The price */ // @ApiMember(Description="The price") public var priceVat:Double? /** * The price VAT in percent */ // @ApiMember(Description="The price VAT in percent") public var vat:Double? /** * The price currency */ // @ApiMember(Description="The price currency") public var currencyId:String? /** * Promo code receiver information */ // @ApiMember(Description="Promo code receiver information") public var promoCodeReceiver:PromoCodeReceiver? /** * If you wish to save some invoice address information for the rebate code, you can do so here. This is optional. */ // @ApiMember(Description="If you wish to save some invoice address information for the rebate code, you can do so here. This is optional.") public var invoiceAddress:InvoiceAddressToHandle? /** * Determines if the rebate code is active on creation or if it should await payment. If you set this to true, make sure to mark the code as payed when you receive the payment, by using the MarkRebateCodeAsPayed endpoint. The default value is false. */ // @ApiMember(Description="Determines if the rebate code is active on creation or if it should await payment. If you set this to true, make sure to mark the code as payed when you receive the payment, by using the MarkRebateCodeAsPayed endpoint. The default value is false.") public var paid:Bool? required public init(){} } public class RebateCodeResponse : Codable { public var id:Int? public var companyId:String? public var validFrom:Date? public var validTo:Date? /** * If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update. */ // @ApiMember(Description="If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.") @TimeSpan public var fromTime:TimeInterval? /** * If the price is only valid for a specific time span during a time of day enter the FromTime and ToTime parameters. */ // @ApiMember(Description="If the price is only valid for a specific time span during a time of day enter the FromTime and ToTime parameters.") @TimeSpan public var toTime:TimeInterval? public var createdBy:String? public var created:Date? public var updatedBy:String? public var updated:Date? public var personalNote:String? public var rebateCodeSign:String? public var rebateCodeValue:Int? public var rebateCodeTypeId:Int? public var name:String? public var rebateCodeStatusId:Int? public var statusName:String? public var maxNumberOfUses:Int? public var maxNumberOfUsesPerCustomer:Int? public var numberOfUsesUsed:Int? public var daysOfWeek:[DaysOfWeekResponse] = [] public var services:[RebateCodeServiceResponse] = [] public var article:ArticleResponse? public var transactions:[RebateCodeTransactionQueryResponse] = [] public var remainingAmount:Double? public var remainingUsage:Int? public var customers:[RebateCodeCustomerResponse] = [] public var responseStatus:ResponseStatus? public var paymentReceived:Bool? public var rebateCodeCurrencySign:String? public var activeByStatus:Bool? public var priceSign:String? public var rebateCodeTypeName:String? public var company:RebateCodeCompanyResponse? public var paymentLog:[PaymentLogResponse] = [] required public init(){} } public class InvoiceAddressToHandle : IInvoiceAddress, Codable { public var corporateIdentityNumber:String? public var invoiceAddress1:String? public var invoiceAddress2:String? public var invoiceCity:String? public var invoicePostalCode:String? public var invoiceCountryCode:String? required public init(){} } public class PromoCodeReceiver : Codable { public var customerId:String? public var firstname:String? public var lastname:String? public var email:String? public var receiverMessage:String? required public init(){} } public class RebateCodeTransactionQueryResponse : Codable { public var id:Int? public var companyId:String? public var note:String? public var rebateCodeId:Int? public var rebateCodeSign:String? public var rebateCodeTypeId:Int? public var rebateCodeTypeName:String? public var amount:Double? public var usage:String? public var bookingId:Int? public var updatedDate:Date? public var createdDate:Date? public var service:RebateCodeServiceResponse? public var customer:RebateCodeCustomerResponse? public var priceSign:String? required public init(){} } public class PaymentLogResponse : Codable { public var id:Int? public var amount:Double? public var amountCredited:Double? public var currencyId:String? public var comments:String? public var created:Date? public var updated:Date? required public init(){} } public class DaysOfWeekResponse : Codable { public var id:Int? public var dayOfWeek:String? public var dayOfWeekTranslation:String? public var dayOfWeekActive:Bool? public var dayOfWeekSortOrder:Int16? required public init(){} } public class RebateCodeServiceResponse : Codable { public var id:Int? public var name:String? public var Description:String? public var active:Bool? required public init(){} } public class RebateCodeCustomerResponse : Codable { public var id:String? public var firstname:String? public var lastname:String? public var email:String? public var phone:String? public var imageUrl:String? required public init(){} } public class RebateCodeCompanyResponse : Codable { public var sitePath:String? public var paymentProviderId:Int? required public init(){} } public protocol IInvoiceAddress { var corporateIdentityNumber:String? { get set } var invoiceAddress1:String? { get set } var invoiceAddress2:String? { get set } var invoiceCity:String? { get set } var invoicePostalCode:String? { get set } var invoiceCountryCode:String? { get set } } public class ArticleResponse : Codable { public var companyId:String? public var id:Int? public var name:String? public var articleTypeId:Int? public var Description:String? public var imageUrl:String? public var active:Bool? public var amount:Int? public var price:Double? public var currencyId:String? public var sortOrder:Int? public var updatedDate:Date? public var createdDate:Date? public var duration:Int? public var services:[ArticleServiceRelation] = [] public var serviceIds:[Int] = [] public var priceSign:String? public var vat:Double? public var validDays:Int? public var sendNotification:Bool? public var notificationEmail:String? required public init(){} }