Consent agreement for customer tenant ===================================== Consent to an end customer agreement. Prerequisites ^^^^^^^^^^^^^ - Credentials as described in :doc:`/getting-started/authentication` - A customer tenant - An agreement consent C# ^^ To create service account agreement, first instantiate **ServiceAccountAgreement** and set all properties. Next, get the instance of **CrayonApiClient** and then get the client token using the instance. This client token will be passed when consenting the service account agreement. Finally, call **CustomerTenant.AddAgreementAsync()** method to consent the customer tenant agreement by passing the token, the CustomerTenantId and the instance of **ServiceAccountAgreement**. .. code-block:: c# :emphasize-lines: 15 int customerTenantId = 0; var serviceAccountAgreement = new ServiceAccountAgreement { FirstName = "Firstname", LastName = "Lastname", Email = "firstname.lastname@email.com", PhoneNumber = "000-12345689", DateAgreed = DateTimeOffset.UtcNow.AddDays(-1), AgreementType = AgreementTypeConsent.MicrosoftCustomerAgreement }; var client = new CrayonApiClient("https://api.crayon.com/"); var token = client.Tokens.GetUserToken(clientId, clientSecret, userName, password).GetData().AccessToken; var result = client.CustomerTenants.AddAgreementAsync(token, customerTenantId, serviceAccountAgreement); Request ^^^^^^^ Request Syntax: +---------+-----------------------------------------------------------------------+ | Method | Request URI | +=========+=======================================================================+ | POST | *https://api.crayon.com/api/v1/customertenants/{id}/agreements* | +---------+-----------------------------------------------------------------------+ Request Body: +----------------------------+----------------------------------------------+-----------------------------------------------+ | Name | Type | Description | +============================+==============================================+===============================================+ | serviceAccountAgreement | :doc:`/resources/ServiceAccountAgreement` | The service account agreement to be consented | +----------------------------+----------------------------------------------+-----------------------------------------------+ CustomerTenantAgreement Properties: +--------------------------------+-----------------------------+----------+ | Name | Type | Required | +================================+=============================+==========+ | FirstName | string | Yes | +--------------------------------+-----------------------------+----------+ | LastName | string | Yes | +--------------------------------+-----------------------------+----------+ | PhoneNumber | string | No | +--------------------------------+-----------------------------+----------+ | Email | string | Yes | +--------------------------------+-----------------------------+----------+ | DateAgreed | string | Yes | +--------------------------------+-----------------------------+----------+ | AgreementType | AgreementTypeConsent | Yes | +--------------------------------+-----------------------------+----------+ 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/{id}/agreements" Accept: application/json Content-Type: application/json Authorization: Bearer < Token > .. literalinclude:: /scenarios/_static/ServiceAccountAgreementRequest.json :language: json Response ^^^^^^^^ If successful, this method returns the created customer tenant as a :doc:`/resources/ServiceAccountAgreement` resource in the response body. Response Body: .. literalinclude:: /resources/_static/ServiceAccountAgreement.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. | +--------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+