Create customer tenant ====================== Create a customer tenant. Prerequisites ^^^^^^^^^^^^^ - Credentials as described in :doc:`/getting-started/authentication` - A customer tenant type - An invoice profile identifier C# ^^ To create customer tenant, first instantiate **CustomerTenantDetailed** and set **Tenant** property with the instantiated **CustomerTenant** along with its properties **Consumer**, **InvoiceProfile** and **CustomerTenantType** set with consumer id, invoice profile id and tenant type respectively. Next, get the instance of **CrayonApiClient** and then get the client token using the instance. This client token will be passed when creating the customer tenant. Finally, call **CustomerTenants.Create()** method to create new customer tenant by passing the token and the instance of **CustomerTenantDetailed**. .. code-block:: c# :emphasize-lines: 36 var customerTenantDetailed = new CustomerTenantDetailed { Tenant = new CustomerTenant { CustomerTenantType = 2, DomainPrefix = "mycustomer", InvoiceProfile = new ObjectReference { Id = }, Name = "My customer AB", Organization = new Organization { Id = }, Publisher = new ObjectReference { Id = } }, Profile = new CustomerTenantProfile { Address = new CustomerTenantAddress { FirstName = "firstname", LastName = "lastname", AddressLine1 = "addressline 1", City = "city", Region = "state", CountryCode = "SE", PostalCode = "181 61" }, Contact = new CustomerTenantContact { FirstName = "firstname", LastName = "lastname", Email = "firstname.lastname@email.com", PhoneNumber = "000-12345689" } }, Company = new CustomerTenantCompany { OrganizationRegistrationNumber = "12345678" } }; var client = new CrayonApiClient("https://api.crayon.com/"); var token = client.Tokens.GetUserToken(clientId, clientSecret, userName, password).GetData().AccessToken; var result = client.CustomerTenants.Create(token, customerTenantDetailed); Request ^^^^^^^ Request Syntax: +---------+--------------------------------------------------------+ | Method | Request URI | +=========+========================================================+ | POST | *https://api.crayon.com/api/v1/customertenants/* | +---------+--------------------------------------------------------+ Request Body: +-------------------+----------------------------------------------+-----------------------------------+ | Name | Type | Description | +===================+==============================================+===================================+ | customertenant | :doc:`/resources/CustomerTenantDetailed` | The customer tenant to create | +-------------------+----------------------------------------------+-----------------------------------+ CustomerTenantDetailed Properties: +--------------------------------+-------------------------------------+------------+ | Name | Type | Required | +================================+=====================================+============+ | Tenant | :doc:`/resources/CustomerTenant` | Yes | +--------------------------------+-------------------------------------+------------+ | Profile | CustomerTenantProfile | Yes | +--------------------------------+-------------------------------------+------------+ | Company | CustomerTenantCompany | Yes | +--------------------------------+-------------------------------------+------------+ | User | CustomerTenantUser | No | +--------------------------------+-------------------------------------+------------+ CustomerTenant Properties: +--------------------------------+--------------------+-------------------------------------------------------------------------+ | Name | Type | Required | +================================+====================+=========================================================================+ | Id | int | No | +--------------------------------+--------------------+-------------------------------------------------------------------------+ | Name | string | Yes | +--------------------------------+--------------------+-------------------------------------------------------------------------+ | Publisher | ObjectReference | Yes | +--------------------------------+--------------------+-------------------------------------------------------------------------+ | PublisherCustomerId | string | No | +--------------------------------+--------------------+-------------------------------------------------------------------------+ | ExternalPublisherCustomerId | string | No | +--------------------------------+--------------------+-------------------------------------------------------------------------+ | DomainPrefix | string | Yes | +--------------------------------+--------------------+-------------------------------------------------------------------------+ | Reference | string | No | +--------------------------------+--------------------+-------------------------------------------------------------------------+ | Organization | Organization | Yes | +--------------------------------+--------------------+-------------------------------------------------------------------------+ | InvoiceProfile | ObjectReference | Yes | +--------------------------------+--------------------+-------------------------------------------------------------------------+ | CustomerTenantType | CustomerTenantType | Yes | +--------------------------------+--------------------+-------------------------------------------------------------------------+ | EntityStatus | EntityStatus | No | +--------------------------------+--------------------+-------------------------------------------------------------------------+ ObjectReference Properties: +---------------+--------------------+------------+ | Name | Type | Required | +===============+====================+============+ | Id | string | Yes | +---------------+--------------------+------------+ | Name | string | No | +---------------+--------------------+------------+ CustomerTenantProfile Properties: +--------------------------------+----------------------------+------------+ | Name | Type | Required | +================================+============================+============+ | Address | CustomerTenantAddress | Yes | +--------------------------------+----------------------------+------------+ | Contact | CustomerTenantContact | Yes | +--------------------------------+----------------------------+------------+ | CultureCode | string | No | +--------------------------------+----------------------------+------------+ | LanguageCode | string | No | +--------------------------------+----------------------------+------------+ CustomerTenantAddress Properties: +--------------------------------+----------------------------+------------+ | Name | Type | Required | +================================+============================+============+ | AddressLine1 | string | Yes | +--------------------------------+----------------------------+------------+ | AddressLine2 | string | No | +--------------------------------+----------------------------+------------+ | AddressLine3 | string | No | +--------------------------------+----------------------------+------------+ | City | string | Yes | +--------------------------------+----------------------------+------------+ | CountryCode | string | Yes | +--------------------------------+----------------------------+------------+ | CountryName | string | No | +--------------------------------+----------------------------+------------+ | FirstName | string | Yes | +--------------------------------+----------------------------+------------+ | LastName | string | Yes | +--------------------------------+----------------------------+------------+ | PostalCode | string | Yes | +--------------------------------+----------------------------+------------+ | Region | string | Yes | +--------------------------------+----------------------------+------------+ CustomerTenantContact Properties: +--------------------------------+----------------------------+------------+ | Name | Type | Required | +================================+============================+============+ | Email | string | Yes | +--------------------------------+----------------------------+------------+ | FirstName | string | Yes | +--------------------------------+----------------------------+------------+ | LastName | string | Yes | +--------------------------------+----------------------------+------------+ | PhoneNumber | string | Yes | +--------------------------------+----------------------------+------------+ CustomerTenantCompany Properties: +--------------------------------+----------------------------+------------+ | Name | Type | Required | +================================+============================+============+ | OrganizationRegistrationNumber | string | Yes | +--------------------------------+----------------------------+------------+ CustomerTenantUser Properties: +--------------------------------+----------------------------+------------+ | Name | Type | Required | +================================+============================+============+ | UserName | string | No | +--------------------------------+----------------------------+------------+ | Password | string | No | +--------------------------------+----------------------------+------------+ Request Headers: The following HTTP request headers are supported +------------------+----------------+-----------------------------------------------------------------+ | Header | Type | Description | +==================+================+=================================================================+ | Authorization | string | Required. The authorization token in the form Bearer . | +------------------+----------------+----------------------------------------------+------------------+ | Accept | string | Specifies the request and response type, "application/json". | +------------------+----------------+----------------------------------------------+------------------+ | Content-Type | string | Specifies the media type of the resource, "application/json". | +------------------+----------------+----------------------------------------------+------------------+ Request Example: :: POST $"https://api.crayon.com/api/v1/customertenants/" Accept: application/json Content-Type: application/json Authorization: Bearer < Token > .. literalinclude:: /scenarios/_static/CustomerTenantRequest.json :language: json Response ^^^^^^^^ If successful, this method returns the created customer tenant as a :doc:`/resources/CustomerTenantDetailed` resource in the response body. Response Body: .. literalinclude:: /resources/_static/CustomerTenantDetailed.json :language: json Response success and error codes: Each response comes with an HTTP status code that indicates success or failure and additional debugging information. Use a network trace tool to read this code, error type, and additional parameters. +--------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Error Codes | Description | +================================+===========================================================================================================================================================================================================================================================================================+ | 200 Ok | The request has succeeded. | +--------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 400 Bad Request | The request could not be understood by the server due to malformed syntax, missing required properties, properties that couldn't be parsed according to their type (and length). It is a non-retryable error condition. The client should not repeat the request without modifications. | +--------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 401 Unauthorized | The request requires user authentication. If the request already included Authorization credentials, then the 401 (Unauthorized) status code means that authorization has been refused for those credentials. It is a non-retryable error condition. | +--------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 502 Bad Gateway | The server acting as a gateway or proxy received an incorrect response from the upstream server it accessed in attempting to fulfill the request. This is a non-retryable error condition. | +--------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+