Richemont.Booster2.PublicApi

<back to all web services

CreateCustomer

Requires Authentication
The following routes are available for this service:
POST/customerCreate customerCreate CRM customer
import 'package:servicestack/servicestack.dart';

class Email implements IConvertible
{
    /**
    * Email
    */
    // @ApiMember(Description="Email", IsRequired=true)
    String? email;

    /**
    * Main email
    */
    // @ApiMember(Description="Main email", IsRequired=true)
    bool? isMainEmail;

    Email({this.email,this.isMainEmail});
    Email.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        email = json['email'];
        isMainEmail = json['isMainEmail'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'email': email,
        'isMainEmail': isMainEmail
    };

    getTypeName() => "Email";
    TypeContext? context = _ctx;
}

class Phone implements IConvertible
{
    /**
    * Phone e.g. cn: 13888889999, jp: 352858088, kr: 023123456
    */
    // @ApiMember(Description="Phone e.g. cn: 13888889999, jp: 352858088, kr: 023123456", IsRequired=true)
    String? phone;

    /**
    * Prefix Country Id e.g. it, fr, az
    */
    // @ApiMember(Description="Prefix Country Id e.g. it, fr, az", IsRequired=true)
    String? countryPrefix;

    /**
    * Phone type e.g. 'Home', 'Mobile', 'Work', 'Other', 'Secondary Address'
    */
    // @ApiMember(Description="Phone type e.g. 'Home', 'Mobile', 'Work', 'Other', 'Secondary Address'")
    String? phoneType;

    /**
    * Main Phone
    */
    // @ApiMember(Description="Main Phone", IsRequired=true)
    bool? isMainPhone;

    Phone({this.phone,this.countryPrefix,this.phoneType,this.isMainPhone});
    Phone.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        phone = json['phone'];
        countryPrefix = json['countryPrefix'];
        phoneType = json['phoneType'];
        isMainPhone = json['isMainPhone'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'phone': phone,
        'countryPrefix': countryPrefix,
        'phoneType': phoneType,
        'isMainPhone': isMainPhone
    };

    getTypeName() => "Phone";
    TypeContext? context = _ctx;
}

class Address implements IConvertible
{
    /**
    * Address type e.g. Home, Office, Shipping
    */
    // @ApiMember(Description="Address type e.g. Home, Office, Shipping", IsRequired=true)
    String? addressType;

    /**
    * Country Id e.g. it, cn, az, gb, de
    */
    // @ApiMember(Description="Country Id e.g. it, cn, az, gb, de", IsRequired=true)
    String? countryId;

    /**
    * House Number
    */
    // @ApiMember(Description="House Number")
    String? houseNumber;

    /**
    * Region/State
    */
    // @ApiMember(Description="Region/State")
    String? stateId;

    /**
    * City Name
    */
    // @ApiMember(Description="City Name")
    String? city;

    /**
    * Postal Code
    */
    // @ApiMember(Description="Postal Code")
    String? zipCode;

    /**
    * Street Name and Number
    */
    // @ApiMember(Description="Street Name and Number")
    String? street;

    /**
    * Street 2
    */
    // @ApiMember(Description="Street 2")
    String? street2;

    /**
    * Street 3
    */
    // @ApiMember(Description="Street 3")
    String? street3;

    /**
    * Street 4
    */
    // @ApiMember(Description="Street 4")
    String? street4;

    /**
    * Street 5
    */
    // @ApiMember(Description="Street 5")
    String? street5;

    /**
    * Main Address
    */
    // @ApiMember(Description="Main Address", IsRequired=true)
    bool? isMainAddress;

    /**
    * Post Office Box
    */
    // @ApiMember(Description="Post Office Box")
    String? poBox;

    /**
    * Additional Information
    */
    // @ApiMember(Description="Additional Information")
    String? additionalInformation;

    Address({this.addressType,this.countryId,this.houseNumber,this.stateId,this.city,this.zipCode,this.street,this.street2,this.street3,this.street4,this.street5,this.isMainAddress,this.poBox,this.additionalInformation});
    Address.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        addressType = json['addressType'];
        countryId = json['countryId'];
        houseNumber = json['houseNumber'];
        stateId = json['stateId'];
        city = json['city'];
        zipCode = json['zipCode'];
        street = json['street'];
        street2 = json['street2'];
        street3 = json['street3'];
        street4 = json['street4'];
        street5 = json['street5'];
        isMainAddress = json['isMainAddress'];
        poBox = json['poBox'];
        additionalInformation = json['additionalInformation'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'addressType': addressType,
        'countryId': countryId,
        'houseNumber': houseNumber,
        'stateId': stateId,
        'city': city,
        'zipCode': zipCode,
        'street': street,
        'street2': street2,
        'street3': street3,
        'street4': street4,
        'street5': street5,
        'isMainAddress': isMainAddress,
        'poBox': poBox,
        'additionalInformation': additionalInformation
    };

    getTypeName() => "Address";
    TypeContext? context = _ctx;
}

class Event implements IConvertible
{
    /**
    * Event type e.g. 'Birthday', 'Wedding', 'Anniversary', 'Barmitza', 'Other'
    */
    // @ApiMember(Description="Event type e.g. 'Birthday', 'Wedding', 'Anniversary', 'Barmitza', 'Other'", IsRequired=true)
    String? eventType;

    /**
    * Event date e.g. '2021-01-20'
    */
    // @ApiMember(Description="Event date e.g. '2021-01-20'", IsRequired=true)
    DateTime? eventDate;

    /**
    * Event notes
    */
    // @ApiMember(Description="Event notes")
    String? eventNotes;

    /**
    * Event other name
    */
    // @ApiMember(Description="Event other name")
    String? eventOtherName;

    Event({this.eventType,this.eventDate,this.eventNotes,this.eventOtherName});
    Event.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        eventType = json['eventType'];
        eventDate = JsonConverters.fromJson(json['eventDate'],'DateTime',context!);
        eventNotes = json['eventNotes'];
        eventOtherName = json['eventOtherName'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'eventType': eventType,
        'eventDate': JsonConverters.toJson(eventDate,'DateTime',context!),
        'eventNotes': eventNotes,
        'eventOtherName': eventOtherName
    };

    getTypeName() => "Event";
    TypeContext? context = _ctx;
}

class Interest implements IConvertible
{
    /**
    * Interest description
    */
    // @ApiMember(Description="Interest description", IsRequired=true)
    String? interest;

    /**
    * SAP Interest ID, e.g. 'CA-1'
    */
    // @ApiMember(Description="SAP Interest ID, e.g. 'CA-1'", IsRequired=true)
    String? sapInterestId;

    /**
    * Interest description translation
    */
    // @ApiMember(Description="Interest description translation")
    String? translation;

    Interest({this.interest,this.sapInterestId,this.translation});
    Interest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        interest = json['interest'];
        sapInterestId = json['sapInterestId'];
        translation = json['translation'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'interest': interest,
        'sapInterestId': sapInterestId,
        'translation': translation
    };

    getTypeName() => "Interest";
    TypeContext? context = _ctx;
}

class Hobby implements IConvertible
{
    /**
    * Hobby description
    */
    // @ApiMember(Description="Hobby description", IsRequired=true)
    String? hobby;

    /**
    * SAP Hobby ID, e.g. 'ART'
    */
    // @ApiMember(Description="SAP Hobby ID, e.g. 'ART'", IsRequired=true)
    String? sapHobbyId;

    /**
    * Hobby description translation
    */
    // @ApiMember(Description="Hobby description translation")
    String? translation;

    Hobby({this.hobby,this.sapHobbyId,this.translation});
    Hobby.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        hobby = json['hobby'];
        sapHobbyId = json['sapHobbyId'];
        translation = json['translation'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'hobby': hobby,
        'sapHobbyId': sapHobbyId,
        'translation': translation
    };

    getTypeName() => "Hobby";
    TypeContext? context = _ctx;
}

class ProductCollection implements IConvertible
{
    /**
    * Product Collection description
    */
    // @ApiMember(Description="Product Collection description", IsRequired=true)
    String? productCollection;

    /**
    * SAP ProductCollection ID, e.g. 'CA-1'
    */
    // @ApiMember(Description="SAP ProductCollection ID, e.g. 'CA-1'", IsRequired=true)
    String? sapProductCollectionId;

    /**
    * Product Collection description translation
    */
    // @ApiMember(Description="Product Collection description translation", IsRequired=true)
    String? translation;

    ProductCollection({this.productCollection,this.sapProductCollectionId,this.translation});
    ProductCollection.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        productCollection = json['productCollection'];
        sapProductCollectionId = json['sapProductCollectionId'];
        translation = json['translation'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'productCollection': productCollection,
        'sapProductCollectionId': sapProductCollectionId,
        'translation': translation
    };

    getTypeName() => "ProductCollection";
    TypeContext? context = _ctx;
}

class Customer implements IConvertible
{
    /**
    * 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'")
    String? title;

    /**
    * First Name
    */
    // @ApiMember(Description="First Name")
    String? firstName;

    /**
    * Last Name - Mandatory only when customer type is 'PRIVATE'
    */
    // @ApiMember(Description="Last Name - Mandatory only when customer type is 'PRIVATE'")
    String? lastName;

    /**
    * First Name Not Latin
    */
    // @ApiMember(Description="First Name Not Latin")
    String? firstNameNotLatin;

    /**
    * Last Name Not Latin
    */
    // @ApiMember(Description="Last Name Not Latin")
    String? lastNameNotLatin;

    /**
    * Middle Name
    */
    // @ApiMember(Description="Middle Name")
    String? middleName;

    /**
    * Name Suffix
    */
    // @ApiMember(Description="Name Suffix")
    String? nameSuffix;

    /**
    * Can be Contacted by Maison e.g. true or false
    */
    // @ApiMember(Description="Can be Contacted by Maison e.g. true or false", IsRequired=true)
    bool? canBeContactedByMaison;

    /**
    * Customer Type e.g. 'PRIVATE' or 'COMPANY'
    */
    // @ApiMember(Description="Customer Type e.g. 'PRIVATE' or 'COMPANY'", IsRequired=true)
    String? clientType;

    /**
    * Company Name - Mandatory only when customer type is 'COMPANY'
    */
    // @ApiMember(Description="Company Name - Mandatory only when customer type is 'COMPANY'")
    String? companyName;

    /**
    * 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'")
    String? languageId;

    /**
    * 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'")
    String? gender;

    /**
    * Country Id e.g. it, cn, az, gb, de
    */
    // @ApiMember(Description="Country Id e.g. it, cn, az, gb, de", IsRequired=true)
    String? countryId;

    /**
    * Birth Date e.g. '2020-12-30'
    */
    // @ApiMember(Description="Birth Date e.g. '2020-12-30'")
    DateTime? birthDate;

    /**
    * Customer reference
    */
    // @ApiMember(Description="Customer reference")
    String? customerReference;

    /**
    * POS Code e.g. ES100:102048
    */
    // @ApiMember(Description="POS Code e.g. ES100:102048", IsRequired=true)
    String? posCode;

    /**
    * Brand e.g. CAR, MTB
    */
    // @ApiMember(Description="Brand e.g. CAR, MTB", IsRequired=true)
    String? brand;

    /**
    * Wedding Date, e.g. '2020-01-18'
    */
    // @ApiMember(Description="Wedding Date, e.g. '2020-01-18'")
    DateTime? weddingDate;

    /**
    * Preferred Contact Method e.g. 'Fax', 'Tel', 'EMail', 'Mail', 'Survey'
    */
    // @ApiMember(Description="Preferred Contact Method e.g. 'Fax', 'Tel', 'EMail', 'Mail', 'Survey'")
    String? preferredContactMethod;

    /**
    * 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.")
    bool? contactByEmailFlag;

    /**
    * 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.")
    bool? contactByMailFlag;

    /**
    * 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.")
    bool? contactByPhoneFlag;

    /**
    * 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.")
    bool? contactBySMSFlag;

    /**
    * 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.")
    bool? contactBySocialMediaFlag;

    /**
    * Sale Representative Email e.g. rauf.aliyev@richemont.com
    */
    // @ApiMember(Description="Sale Representative Email e.g. rauf.aliyev@richemont.com")
    String? saleRepresentativeEmail;

    /**
    * Consent for allowing Cross Border Data Transfer
    */
    // @ApiMember(Description="Consent for allowing Cross Border Data Transfer")
    bool? allowStoreDataAbroad;

    /**
    * Consent for allowing Cross Border Data Transfer For TimeVallée
    */
    // @ApiMember(Description="Consent for allowing Cross Border Data Transfer For TimeVallée")
    bool? tvAllowStoreDataAbroad;

    /**
    * Customer emails
    */
    // @ApiMember(Description="Customer emails")
    List<Email>? emails;

    /**
    * Customer phones
    */
    // @ApiMember(Description="Customer phones")
    List<Phone>? phones;

    /**
    * Customer addresses
    */
    // @ApiMember(Description="Customer addresses")
    List<Address>? addresses;

    /**
    * Customer events
    */
    // @ApiMember(Description="Customer events")
    List<Event>? events;

    /**
    * Customer interests
    */
    // @ApiMember(Description="Customer interests")
    List<Interest>? interests;

    /**
    * Customer hobbies
    */
    // @ApiMember(Description="Customer hobbies")
    List<Hobby>? hobbies;

    /**
    * Customer product collections
    */
    // @ApiMember(Description="Customer product collections")
    List<ProductCollection>? productCollections;

    /**
    * 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.")
    bool? dataSharingConsent;

    /**
    * Notes
    */
    // @ApiMember(Description="Notes")
    String? notes;

    /**
    * Reference Sale Representative Email
    */
    // @ApiMember(Description="Reference Sale Representative Email")
    String? referenceSaleRepresentativeEmail;

    /**
    * Registration Date
    */
    // @ApiMember(Description="Registration Date")
    DateTime? registrationDate;

    Customer({this.title,this.firstName,this.lastName,this.firstNameNotLatin,this.lastNameNotLatin,this.middleName,this.nameSuffix,this.canBeContactedByMaison,this.clientType,this.companyName,this.languageId,this.gender,this.countryId,this.birthDate,this.customerReference,this.posCode,this.brand,this.weddingDate,this.preferredContactMethod,this.contactByEmailFlag,this.contactByMailFlag,this.contactByPhoneFlag,this.contactBySMSFlag,this.contactBySocialMediaFlag,this.saleRepresentativeEmail,this.allowStoreDataAbroad,this.tvAllowStoreDataAbroad,this.emails,this.phones,this.addresses,this.events,this.interests,this.hobbies,this.productCollections,this.dataSharingConsent,this.notes,this.referenceSaleRepresentativeEmail,this.registrationDate});
    Customer.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        title = json['title'];
        firstName = json['firstName'];
        lastName = json['lastName'];
        firstNameNotLatin = json['firstNameNotLatin'];
        lastNameNotLatin = json['lastNameNotLatin'];
        middleName = json['middleName'];
        nameSuffix = json['nameSuffix'];
        canBeContactedByMaison = json['canBeContactedByMaison'];
        clientType = json['clientType'];
        companyName = json['companyName'];
        languageId = json['languageId'];
        gender = json['gender'];
        countryId = json['countryId'];
        birthDate = JsonConverters.fromJson(json['birthDate'],'DateTime',context!);
        customerReference = json['customerReference'];
        posCode = json['posCode'];
        brand = json['brand'];
        weddingDate = JsonConverters.fromJson(json['weddingDate'],'DateTime',context!);
        preferredContactMethod = json['preferredContactMethod'];
        contactByEmailFlag = json['contactByEmailFlag'];
        contactByMailFlag = json['contactByMailFlag'];
        contactByPhoneFlag = json['contactByPhoneFlag'];
        contactBySMSFlag = json['contactBySMSFlag'];
        contactBySocialMediaFlag = json['contactBySocialMediaFlag'];
        saleRepresentativeEmail = json['saleRepresentativeEmail'];
        allowStoreDataAbroad = json['allowStoreDataAbroad'];
        tvAllowStoreDataAbroad = json['tvAllowStoreDataAbroad'];
        emails = JsonConverters.fromJson(json['emails'],'List<Email>',context!);
        phones = JsonConverters.fromJson(json['phones'],'List<Phone>',context!);
        addresses = JsonConverters.fromJson(json['addresses'],'List<Address>',context!);
        events = JsonConverters.fromJson(json['events'],'List<Event>',context!);
        interests = JsonConverters.fromJson(json['interests'],'List<Interest>',context!);
        hobbies = JsonConverters.fromJson(json['hobbies'],'List<Hobby>',context!);
        productCollections = JsonConverters.fromJson(json['productCollections'],'List<ProductCollection>',context!);
        dataSharingConsent = json['dataSharingConsent'];
        notes = json['notes'];
        referenceSaleRepresentativeEmail = json['referenceSaleRepresentativeEmail'];
        registrationDate = JsonConverters.fromJson(json['registrationDate'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'title': title,
        'firstName': firstName,
        'lastName': lastName,
        'firstNameNotLatin': firstNameNotLatin,
        'lastNameNotLatin': lastNameNotLatin,
        'middleName': middleName,
        'nameSuffix': nameSuffix,
        'canBeContactedByMaison': canBeContactedByMaison,
        'clientType': clientType,
        'companyName': companyName,
        'languageId': languageId,
        'gender': gender,
        'countryId': countryId,
        'birthDate': JsonConverters.toJson(birthDate,'DateTime',context!),
        'customerReference': customerReference,
        'posCode': posCode,
        'brand': brand,
        'weddingDate': JsonConverters.toJson(weddingDate,'DateTime',context!),
        'preferredContactMethod': preferredContactMethod,
        'contactByEmailFlag': contactByEmailFlag,
        'contactByMailFlag': contactByMailFlag,
        'contactByPhoneFlag': contactByPhoneFlag,
        'contactBySMSFlag': contactBySMSFlag,
        'contactBySocialMediaFlag': contactBySocialMediaFlag,
        'saleRepresentativeEmail': saleRepresentativeEmail,
        'allowStoreDataAbroad': allowStoreDataAbroad,
        'tvAllowStoreDataAbroad': tvAllowStoreDataAbroad,
        'emails': JsonConverters.toJson(emails,'List<Email>',context!),
        'phones': JsonConverters.toJson(phones,'List<Phone>',context!),
        'addresses': JsonConverters.toJson(addresses,'List<Address>',context!),
        'events': JsonConverters.toJson(events,'List<Event>',context!),
        'interests': JsonConverters.toJson(interests,'List<Interest>',context!),
        'hobbies': JsonConverters.toJson(hobbies,'List<Hobby>',context!),
        'productCollections': JsonConverters.toJson(productCollections,'List<ProductCollection>',context!),
        'dataSharingConsent': dataSharingConsent,
        'notes': notes,
        'referenceSaleRepresentativeEmail': referenceSaleRepresentativeEmail,
        'registrationDate': JsonConverters.toJson(registrationDate,'DateTime',context!)
    };

    getTypeName() => "Customer";
    TypeContext? context = _ctx;
}

class CreateCustomerResponse implements IConvertible
{
    /**
    * Booster Customer ID
    */
    // @ApiMember(Description="Booster Customer ID", IsRequired=true)
    int? boosterCustomerId;

    CreateCustomerResponse({this.boosterCustomerId});
    CreateCustomerResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        boosterCustomerId = json['boosterCustomerId'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'boosterCustomerId': boosterCustomerId
    };

    getTypeName() => "CreateCustomerResponse";
    TypeContext? context = _ctx;
}

class CreateCustomer extends Customer implements IConvertible
{
    /**
    * Privacy policy acceptance for data storage
    */
    // @ApiMember(Description="Privacy policy acceptance for data storage", IsRequired=true)
    bool? privacyPolicyAcceptanceStorage;

    /**
    * Privacy policy acceptance of data storage for TimeVallée
    */
    // @ApiMember(Description="Privacy policy acceptance of data storage for TimeVallée")
    bool? tvPrivacyPolicyAcceptanceStorage;

    CreateCustomer({this.privacyPolicyAcceptanceStorage,this.tvPrivacyPolicyAcceptanceStorage});
    CreateCustomer.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        privacyPolicyAcceptanceStorage = json['privacyPolicyAcceptanceStorage'];
        tvPrivacyPolicyAcceptanceStorage = json['tvPrivacyPolicyAcceptanceStorage'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'privacyPolicyAcceptanceStorage': privacyPolicyAcceptanceStorage,
        'tvPrivacyPolicyAcceptanceStorage': tvPrivacyPolicyAcceptanceStorage
    });

    getTypeName() => "CreateCustomer";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'dev_api_booster.richemont.com', types: <String, TypeInfo> {
    'Email': TypeInfo(TypeOf.Class, create:() => Email()),
    'Phone': TypeInfo(TypeOf.Class, create:() => Phone()),
    'Address': TypeInfo(TypeOf.Class, create:() => Address()),
    'Event': TypeInfo(TypeOf.Class, create:() => Event()),
    'Interest': TypeInfo(TypeOf.Class, create:() => Interest()),
    'Hobby': TypeInfo(TypeOf.Class, create:() => Hobby()),
    'ProductCollection': TypeInfo(TypeOf.Class, create:() => ProductCollection()),
    'Customer': TypeInfo(TypeOf.Class, create:() => Customer()),
    'List<Email>': TypeInfo(TypeOf.Class, create:() => <Email>[]),
    'List<Phone>': TypeInfo(TypeOf.Class, create:() => <Phone>[]),
    'List<Address>': TypeInfo(TypeOf.Class, create:() => <Address>[]),
    'List<Event>': TypeInfo(TypeOf.Class, create:() => <Event>[]),
    'List<Interest>': TypeInfo(TypeOf.Class, create:() => <Interest>[]),
    'List<Hobby>': TypeInfo(TypeOf.Class, create:() => <Hobby>[]),
    'List<ProductCollection>': TypeInfo(TypeOf.Class, create:() => <ProductCollection>[]),
    'CreateCustomerResponse': TypeInfo(TypeOf.Class, create:() => CreateCustomerResponse()),
    'CreateCustomer': TypeInfo(TypeOf.Class, create:() => CreateCustomer()),
});

Dart CreateCustomer DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv

HTTP + 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}