POST | /customer | Create customer | Create CRM customer |
---|
import Foundation
import ServiceStack
public class CreateCustomer : Customer
{
/**
* Privacy policy acceptance for data storage
*/
// @ApiMember(Description="Privacy policy acceptance for data storage", IsRequired=true)
public var privacyPolicyAcceptanceStorage:Bool
/**
* Privacy policy acceptance of data storage for TimeVallée
*/
// @ApiMember(Description="Privacy policy acceptance of data storage for TimeVallée")
public var tvPrivacyPolicyAcceptanceStorage:Bool?
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case privacyPolicyAcceptanceStorage
case tvPrivacyPolicyAcceptanceStorage
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
privacyPolicyAcceptanceStorage = try container.decodeIfPresent(Bool.self, forKey: .privacyPolicyAcceptanceStorage)
tvPrivacyPolicyAcceptanceStorage = try container.decodeIfPresent(Bool.self, forKey: .tvPrivacyPolicyAcceptanceStorage)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if privacyPolicyAcceptanceStorage != nil { try container.encode(privacyPolicyAcceptanceStorage, forKey: .privacyPolicyAcceptanceStorage) }
if tvPrivacyPolicyAcceptanceStorage != nil { try container.encode(tvPrivacyPolicyAcceptanceStorage, forKey: .tvPrivacyPolicyAcceptanceStorage) }
}
}
public class Customer : Codable
{
/**
* Title e.g. 'Mr & Mrs', 'Mr.', 'Mrs.', 'Sama', 'Captain' - Mandatory only when customer type is 'PRIVATE'
*/
// @ApiMember(Description="Title e.g. 'Mr & Mrs', 'Mr.', 'Mrs.', 'Sama', 'Captain' - Mandatory only when customer type is 'PRIVATE'")
public var title:String
/**
* First Name
*/
// @ApiMember(Description="First Name")
public var firstName:String
/**
* Last Name - Mandatory only when customer type is 'PRIVATE'
*/
// @ApiMember(Description="Last Name - Mandatory only when customer type is 'PRIVATE'")
public var lastName:String
/**
* First Name Not Latin
*/
// @ApiMember(Description="First Name Not Latin")
public var firstNameNotLatin:String
/**
* Last Name Not Latin
*/
// @ApiMember(Description="Last Name Not Latin")
public var lastNameNotLatin:String
/**
* Middle Name
*/
// @ApiMember(Description="Middle Name")
public var middleName:String
/**
* Name Suffix
*/
// @ApiMember(Description="Name Suffix")
public var nameSuffix:String
/**
* Can be Contacted by Maison e.g. true or false
*/
// @ApiMember(Description="Can be Contacted by Maison e.g. true or false", IsRequired=true)
public var canBeContactedByMaison:Bool
/**
* Customer Type e.g. 'PRIVATE' or 'COMPANY'
*/
// @ApiMember(Description="Customer Type e.g. 'PRIVATE' or 'COMPANY'", IsRequired=true)
public var clientType:String
/**
* Company Name - Mandatory only when customer type is 'COMPANY'
*/
// @ApiMember(Description="Company Name - Mandatory only when customer type is 'COMPANY'")
public var companyName:String
/**
* Language Id e.g. ita, chi, aze, eng, ger - Mandatory only when customer type is 'PRIVATE'
*/
// @ApiMember(Description="Language Id e.g. ita, chi, aze, eng, ger - Mandatory only when customer type is 'PRIVATE'")
public var languageId:String
/**
* Gender e.g. M, F - Mandatory only when customer type is 'PRIVATE'
*/
// @ApiMember(Description="Gender e.g. M, F - Mandatory only when customer type is 'PRIVATE'")
public var gender:String
/**
* Country Id e.g. it, cn, az, gb, de
*/
// @ApiMember(Description="Country Id e.g. it, cn, az, gb, de", IsRequired=true)
public var countryId:String
/**
* Birth Date e.g. '2020-12-30'
*/
// @ApiMember(Description="Birth Date e.g. '2020-12-30'")
public var birthDate:Date?
/**
* Customer reference
*/
// @ApiMember(Description="Customer reference")
public var customerReference:String
/**
* POS Code e.g. ES100:102048
*/
// @ApiMember(Description="POS Code e.g. ES100:102048", IsRequired=true)
public var posCode:String
/**
* Brand e.g. CAR, MTB
*/
// @ApiMember(Description="Brand e.g. CAR, MTB", IsRequired=true)
public var brand:String
/**
* Wedding Date, e.g. '2020-01-18'
*/
// @ApiMember(Description="Wedding Date, e.g. '2020-01-18'")
public var weddingDate:Date?
/**
* Preferred Contact Method e.g. 'Fax', 'Tel', 'EMail', 'Mail', 'Survey'
*/
// @ApiMember(Description="Preferred Contact Method e.g. 'Fax', 'Tel', 'EMail', 'Mail', 'Survey'")
public var preferredContactMethod:String
/**
* Provide 'true' if you want to be contacted by email. Leave empty or 'false' if you do not.
*/
// @ApiMember(Description="Provide 'true' if you want to be contacted by email. Leave empty or 'false' if you do not.")
public var contactByEmailFlag:Bool
/**
* Provide 'true' if you want to be contacted by mail. Leave empty or 'false' if you do not.
*/
// @ApiMember(Description="Provide 'true' if you want to be contacted by mail. Leave empty or 'false' if you do not.")
public var contactByMailFlag:Bool
/**
* Provide 'true' if you want to be contacted by phone. Leave empty or 'false' if you do not.
*/
// @ApiMember(Description="Provide 'true' if you want to be contacted by phone. Leave empty or 'false' if you do not.")
public var contactByPhoneFlag:Bool
/**
* Provide 'true' if you want to be contacted by SMS. Leave empty or 'false' if you do not.
*/
// @ApiMember(Description="Provide 'true' if you want to be contacted by SMS. Leave empty or 'false' if you do not.")
public var contactBySMSFlag:Bool
/**
* Provide 'true' if you want to be contacted by social media. Leave empty or 'false' if you do not.
*/
// @ApiMember(Description="Provide 'true' if you want to be contacted by social media. Leave empty or 'false' if you do not.")
public var contactBySocialMediaFlag:Bool
/**
* Sale Representative Email e.g. rauf.aliyev@richemont.com
*/
// @ApiMember(Description="Sale Representative Email e.g. rauf.aliyev@richemont.com")
public var saleRepresentativeEmail:String
/**
* Consent for allowing Cross Border Data Transfer
*/
// @ApiMember(Description="Consent for allowing Cross Border Data Transfer")
public var allowStoreDataAbroad:Bool?
/**
* Consent for allowing Cross Border Data Transfer For TimeVallée
*/
// @ApiMember(Description="Consent for allowing Cross Border Data Transfer For TimeVallée")
public var tvAllowStoreDataAbroad:Bool?
/**
* Customer emails
*/
// @ApiMember(Description="Customer emails")
public var emails:[Email] = []
/**
* Customer phones
*/
// @ApiMember(Description="Customer phones")
public var phones:[Phone] = []
/**
* Customer addresses
*/
// @ApiMember(Description="Customer addresses")
public var addresses:[Address] = []
/**
* Customer events
*/
// @ApiMember(Description="Customer events")
public var events:[Event] = []
/**
* Customer interests
*/
// @ApiMember(Description="Customer interests")
public var interests:[Interest] = []
/**
* Customer hobbies
*/
// @ApiMember(Description="Customer hobbies")
public var hobbies:[Hobby] = []
/**
* Customer product collections
*/
// @ApiMember(Description="Customer product collections")
public var productCollections:[ProductCollection] = []
/**
* Provide 'true' if you allow data sharing consent. Leave empty or 'false' if you do not.
*/
// @ApiMember(Description="Provide 'true' if you allow data sharing consent. Leave empty or 'false' if you do not.")
public var dataSharingConsent:Bool?
/**
* Notes
*/
// @ApiMember(Description="Notes")
public var notes:String
/**
* Reference Sale Representative Email
*/
// @ApiMember(Description="Reference Sale Representative Email")
public var referenceSaleRepresentativeEmail:String
/**
* Registration Date
*/
// @ApiMember(Description="Registration Date")
public var registrationDate:Date?
required public init(){}
}
public class Email : Codable
{
/**
* Email
*/
// @ApiMember(Description="Email", IsRequired=true)
public var email:String
/**
* Main email
*/
// @ApiMember(Description="Main email", IsRequired=true)
public var isMainEmail:Bool
required public init(){}
}
public class Phone : Codable
{
/**
* Phone e.g. cn: 13888889999, jp: 352858088, kr: 023123456
*/
// @ApiMember(Description="Phone e.g. cn: 13888889999, jp: 352858088, kr: 023123456", IsRequired=true)
public var phone:String
/**
* Prefix Country Id e.g. it, fr, az
*/
// @ApiMember(Description="Prefix Country Id e.g. it, fr, az", IsRequired=true)
public var countryPrefix:String
/**
* Phone type e.g. 'Home', 'Mobile', 'Work', 'Other', 'Secondary Address'
*/
// @ApiMember(Description="Phone type e.g. 'Home', 'Mobile', 'Work', 'Other', 'Secondary Address'")
public var phoneType:String
/**
* Main Phone
*/
// @ApiMember(Description="Main Phone", IsRequired=true)
public var isMainPhone:Bool
required public init(){}
}
public class Address : Codable
{
/**
* Address type e.g. Home, Office, Shipping
*/
// @ApiMember(Description="Address type e.g. Home, Office, Shipping", IsRequired=true)
public var addressType:String
/**
* Country Id e.g. it, cn, az, gb, de
*/
// @ApiMember(Description="Country Id e.g. it, cn, az, gb, de", IsRequired=true)
public var countryId:String
/**
* House Number
*/
// @ApiMember(Description="House Number")
public var houseNumber:String
/**
* Region/State
*/
// @ApiMember(Description="Region/State")
public var stateId:String
/**
* City Name
*/
// @ApiMember(Description="City Name")
public var city:String
/**
* Postal Code
*/
// @ApiMember(Description="Postal Code")
public var zipCode:String
/**
* Street Name and Number
*/
// @ApiMember(Description="Street Name and Number")
public var street:String
/**
* Street 2
*/
// @ApiMember(Description="Street 2")
public var street2:String
/**
* Street 3
*/
// @ApiMember(Description="Street 3")
public var street3:String
/**
* Street 4
*/
// @ApiMember(Description="Street 4")
public var street4:String
/**
* Street 5
*/
// @ApiMember(Description="Street 5")
public var street5:String
/**
* Main Address
*/
// @ApiMember(Description="Main Address", IsRequired=true)
public var isMainAddress:Bool
/**
* Post Office Box
*/
// @ApiMember(Description="Post Office Box")
public var poBox:String
/**
* Additional Information
*/
// @ApiMember(Description="Additional Information")
public var additionalInformation:String
required public init(){}
}
public class Event : Codable
{
/**
* Event type e.g. 'Birthday', 'Wedding', 'Anniversary', 'Barmitza', 'Other'
*/
// @ApiMember(Description="Event type e.g. 'Birthday', 'Wedding', 'Anniversary', 'Barmitza', 'Other'", IsRequired=true)
public var eventType:String
/**
* Event date e.g. '2021-01-20'
*/
// @ApiMember(Description="Event date e.g. '2021-01-20'", IsRequired=true)
public var eventDate:Date
/**
* Event notes
*/
// @ApiMember(Description="Event notes")
public var eventNotes:String
/**
* Event other name
*/
// @ApiMember(Description="Event other name")
public var eventOtherName:String
required public init(){}
}
public class Interest : Codable
{
/**
* Interest description
*/
// @ApiMember(Description="Interest description", IsRequired=true)
public var interest:String
/**
* SAP Interest ID, e.g. 'CA-1'
*/
// @ApiMember(Description="SAP Interest ID, e.g. 'CA-1'", IsRequired=true)
public var sapInterestId:String
/**
* Interest description translation
*/
// @ApiMember(Description="Interest description translation")
public var translation:String
required public init(){}
}
public class Hobby : Codable
{
/**
* Hobby description
*/
// @ApiMember(Description="Hobby description", IsRequired=true)
public var hobby:String
/**
* SAP Hobby ID, e.g. 'ART'
*/
// @ApiMember(Description="SAP Hobby ID, e.g. 'ART'", IsRequired=true)
public var sapHobbyId:String
/**
* Hobby description translation
*/
// @ApiMember(Description="Hobby description translation")
public var translation:String
required public init(){}
}
public class ProductCollection : Codable
{
/**
* Product Collection description
*/
// @ApiMember(Description="Product Collection description", IsRequired=true)
public var productCollection:String
/**
* SAP ProductCollection ID, e.g. 'CA-1'
*/
// @ApiMember(Description="SAP ProductCollection ID, e.g. 'CA-1'", IsRequired=true)
public var sapProductCollectionId:String
/**
* Product Collection description translation
*/
// @ApiMember(Description="Product Collection description translation", IsRequired=true)
public var translation:String
required public init(){}
}
public class CreateCustomerResponse : Codable
{
/**
* Booster Customer ID
*/
// @ApiMember(Description="Booster Customer ID", IsRequired=true)
public var boosterCustomerId:Int
required public init(){}
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /customer HTTP/1.1
Host: dev-api-booster.richemont.com
Accept: text/csv
Content-Type: text/csv
Content-Length: length
{"privacyPolicyAcceptanceStorage":false,"tvPrivacyPolicyAcceptanceStorage":false,"title":"String","firstName":"String","lastName":"String","firstNameNotLatin":"String","lastNameNotLatin":"String","middleName":"String","nameSuffix":"String","canBeContactedByMaison":false,"clientType":"String","companyName":"String","languageId":"String","gender":"String","countryId":"String","birthDate":"\/Date(-62135596800000-0000)\/","customerReference":"String","posCode":"String","brand":"String","weddingDate":"\/Date(-62135596800000-0000)\/","preferredContactMethod":"String","contactByEmailFlag":false,"contactByMailFlag":false,"contactByPhoneFlag":false,"contactBySMSFlag":false,"contactBySocialMediaFlag":false,"saleRepresentativeEmail":"String","allowStoreDataAbroad":false,"tvAllowStoreDataAbroad":false,"emails":[{"email":"String","isMainEmail":false}],"phones":[{"phone":"String","countryPrefix":"String","phoneType":"String","isMainPhone":false}],"addresses":[{"addressType":"String","countryId":"String","houseNumber":"String","stateId":"String","city":"String","zipCode":"String","street":"String","street2":"String","street3":"String","street4":"String","street5":"String","isMainAddress":false,"poBox":"String","additionalInformation":"String"}],"events":[{"eventType":"String","eventDate":"\/Date(-62135596800000-0000)\/","eventNotes":"String","eventOtherName":"String"}],"interests":[{"interest":"String","sapInterestId":"String","translation":"String"}],"hobbies":[{"hobby":"String","sapHobbyId":"String","translation":"String"}],"productCollections":[{"productCollection":"String","sapProductCollectionId":"String","translation":"String"}],"dataSharingConsent":false,"notes":"String","referenceSaleRepresentativeEmail":"String","registrationDate":"\/Date(-62135596800000-0000)\/"}
HTTP/1.1 200 OK Content-Type: text/csv Content-Length: length {"boosterCustomerId":0}