POST | /rebatecodes/fromarticle | Create RebateCode. | Create RebateCode. |
---|
import Foundation
import ServiceStack
// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
public class CreateArticleRebateCode : ICompany, Codable
{
/**
*
*/
// @ApiMember(Description="")
public var companyId:String?
/**
* Article ID for the rebate code
*/
// @ApiMember(Description="Article ID for the rebate code", IsRequired=true)
public var articleId:Int
/**
* Customer information
*/
// @ApiMember(Description="Customer information")
public var customer:CustomerToHandle
/**
* If you want to book with customer information instead of the Customer Id send the customer information here. Note: If customer profile already exists with the same email the information will not be changed, instead the provided information will be added as BookingsComments if it differs from the ordinairy profile.
*/
// @ApiMember(Description="If you want to book with customer information instead of the Customer Id send the customer information here. Note: If customer profile already exists with the same email the information will not be changed, instead the provided information will be added as BookingsComments if it differs from the ordinairy profile. ")
public var invoiceAddress:InvoiceAddressToHandle
/**
* Promo code Receiver information
*/
// @ApiMember(Description="Promo code Receiver information")
public var receiver:PromoCodeReceiver
required public init(){}
}
public class CustomerToHandle : Codable
{
public var customerId:String?
public var firstname:String
public var lastname:String
public var email:String
public var phone:String
public var subscribedToNewsletter:Bool
required public init(){}
}
public class InvoiceAddressToHandle : 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 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
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 updatedDate:Date
public var createdDate:Date
public var services:[ArticleServiceRelation] = []
public var serviceIds:[Int] = []
public var priceSign:String
public var vat:Double?
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(){}
}
Swift CreateArticleRebateCode DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /rebatecodes/fromarticle HTTP/1.1
Host: api.bokamera.se
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
CompanyId: 00000000-0000-0000-0000-000000000000,
ArticleId: 0,
Customer:
{
CustomerId: 00000000-0000-0000-0000-000000000000,
Firstname: String,
Lastname: String,
Email: String,
Phone: String,
SubscribedToNewsletter: False
},
InvoiceAddress:
{
CorporateIdentityNumber: String,
InvoiceAddress1: String,
InvoiceAddress2: String,
InvoiceCity: String,
InvoicePostalCode: String,
InvoiceCountryCode: String
},
Receiver:
{
CustomerId: 00000000-0000-0000-0000-000000000000,
Firstname: String,
Lastname: String,
Email: String,
ReceiverMessage: String
}
}
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { Id: 0, CompanyId: 00000000-0000-0000-0000-000000000000, FromTime: PT0S, ToTime: PT0S, 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, Services: [ { Id: 0, ServiceId: 0, ArticleId: 0 } ], ServiceIds: [ 0 ], PriceSign: String, VAT: 0 }, 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 } }