| Requires any of the roles: | bookingsupplier-administrator-write, superadmin |
| POST | /rebatecodes | Create RebateCode. | Create RebateCode. |
|---|
import Foundation
import ServiceStack
// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
// @ValidateRequest(Validator="IsAuthenticated")
public class CreateRebateCode : Codable
{
/**
*
*/
// @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 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 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 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 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 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(){}
}
public class ArticleServiceRelation : BaseModel
{
// @Required()
public var companyId:String?
public var id:Int
// @Required()
public var serviceId:Int?
// @Required()
public var articleId:Int?
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case companyId
case id
case serviceId
case articleId
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
companyId = try container.decodeIfPresent(String.self, forKey: .companyId)
id = try container.decodeIfPresent(Int.self, forKey: .id)
serviceId = try container.decodeIfPresent(Int.self, forKey: .serviceId)
articleId = try container.decodeIfPresent(Int.self, forKey: .articleId)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if companyId != nil { try container.encode(companyId, forKey: .companyId) }
if id != nil { try container.encode(id, forKey: .id) }
if serviceId != nil { try container.encode(serviceId, forKey: .serviceId) }
if articleId != nil { try container.encode(articleId, forKey: .articleId) }
}
}
public class BaseModel : Codable
{
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 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 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(){}
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .other suffix or ?format=other
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /rebatecodes HTTP/1.1
Host: testapi.bokamera.se
Accept: text/jsonl
Content-Type: text/jsonl
Content-Length: length
{"CompanyId":"00000000-0000-0000-0000-000000000000","MaxNumberOfUses":0,"MaxNumberOfUsesPerCustomer":0,"FromTime":"00:00:00","ToTime":"00:00:00","RebateCodeTypeId":0,"ArticleId":0,"RebateCodeValue":0,"RebateCodeSign":"String","AutoGenerateRebateCodeSign":false,"PersonalNote":"String","DaysOfWeek":[0],"Services":[0],"Customers":["00000000-0000-0000-0000-000000000000"],"PriceVat":0,"VAT":0,"CurrencyId":"String","PromoCodeReceiver":{"CustomerId":"00000000-0000-0000-0000-000000000000","Firstname":"String","Lastname":"String","Email":"String","ReceiverMessage":"String"},"InvoiceAddress":{"CorporateIdentityNumber":"String","InvoiceAddress1":"String","InvoiceAddress2":"String","InvoiceCity":"String","InvoicePostalCode":"String","InvoiceCountryCode":"String"},"Paid":false}
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length
{"Id":0,"CompanyId":"00000000-0000-0000-0000-000000000000","FromTime":"00:00:00","ToTime":"00:00:00","CreatedBy":"String","UpdatedBy":"String","PersonalNote":"String","RebateCodeSign":"String","RebateCodeValue":0,"RebateCodeTypeId":0,"Name":"String","RebateCodeStatusId":0,"StatusName":"String","MaxNumberOfUses":0,"MaxNumberOfUsesPerCustomer":0,"NumberOfUsesUsed":0,"DaysOfWeek":[{"Id":0,"DayOfWeek":"String","DayOfWeekTranslation":"String","DayOfWeekActive":false,"DayOfWeekSortOrder":0}],"Services":[{"Id":0,"Name":"String","Description":"String","Active":false}],"Article":{"Id":0,"Name":"String","ArticleTypeId":0,"Description":"String","ImageUrl":"String","Active":false,"Amount":0,"Price":0,"CurrencyId":"String","SortOrder":0,"Duration":0,"Services":[{"Id":0,"ServiceId":0,"ArticleId":0}],"ServiceIds":[0],"PriceSign":"String","VAT":0,"ValidDays":0,"SendNotification":false,"NotificationEmail":"String"},"Transactions":[{"Id":0,"Note":"String","RebateCodeId":0,"RebateCodeSign":"String","RebateCodeTypeId":0,"RebateCodeTypeName":"String","Amount":0,"Usage":"String","BookingId":0,"Service":{"Id":0,"Name":"String","Description":"String","Active":false},"Customer":{"Firstname":"String","Lastname":"String","Email":"String","Phone":"String","ImageUrl":"String"},"PriceSign":"String"}],"RemainingAmount":0,"RemainingUsage":0,"Customers":[{"Firstname":"String","Lastname":"String","Email":"String","Phone":"String","ImageUrl":"String"}],"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}},"PaymentReceived":false,"RebateCodeCurrencySign":"String","ActiveByStatus":false,"PriceSign":"String","RebateCodeTypeName":"String","Company":{"SitePath":"String","PaymentProviderId":0},"PaymentLog":[{"Id":0,"Amount":0,"AmountCredited":0,"CurrencyId":"String","Comments":"String"}]}