# Update a profile (identify by customId)

- Operation ID: `UpdateAClientByCustomId`
- HTTP method: `POST`
- Path: `/v4/clients/by-customid/{customId}`
- [Human-readable API reference](https://hub.synerise.com/api-reference/data-management#tag/Profile-management/operation/UpdateAClientByCustomId)

## Self-contained OpenAPI method

The fenced document below contains this method's documentation and all of its local references. It is self-contained; no category or master specification fetch is required.

```yaml
openapi: 3.0.0
info:
  title: Synerise Public API
  version: 1.9.1
paths:
  /v4/clients/by-customid/{customId}:
    post:
      summary: Update a profile (identify by customId)
      description: |
        Change the details of a profile in the Synerise application database. <br/><br/>Sending a null value <strong>deletes an attribute</strong> (if it's a custom attribute) or <strong>sets it to null/default value</strong> (if the attribute is Synerise-native).
         
        The `attributes` object can be used to add custom attributes of your choice. For example, `"hasDog":true`.

        The `tags` array contains custom tags of your choice.

        This is an asynchronous operation. After the request body is validated, the request is added to the queue (HTTP 202).

        ---

        **API consumers:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>, <a href="/api-reference/authorization?tag=Authorization&amp;operationId=profileLogin" target="_blank" rel="noopener">Workspace (Business Profile)</a>

        **API key permission required:** `API_BY_CUSTOM_ID_CLIENT_UPDATE`

        **User role permission required:** `client_info: update`
      operationId: UpdateAClientByCustomId
      parameters:
        - name: customId
          in: path
          description: |
            The custom ID of the profile

            **Upcoming breaking change (effective July 6, 2026):** Synerise is introducing changes to how user identifiers and UUIDs are handled. These changes may affect profiles with accented or diacritical characters in identifiers, profiles with leading or trailing whitespace in identifiers, and profiles with duplicate UUIDs. For details and recommended actions, see [Upcoming changes to identifier and UUID handling](https://hub.synerise.com/docs/settings/configuration/identifier-standardization/).
          required: true
          schema:
            type: string
            example: customIdExample
        - name: Api-Version
          in: header
          required: true
          style: simple
          explode: false
          schema:
            type: string
            enum:
              - "4.4"
      requestBody:
        description: ""
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: |
                    The profile's e-mail address. 

                    - Must match the pattern (ECMA flavor): `/^(([^<>()[\]\\.,;:\s@\\"]+(\.[^<>()[\]\\.,;:\s@\\"]+)*)|(\\".+\\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/`  
                    - The value can't include any characters that match the pattern (ECMA flavor): `/([\uD800-\uDBFF][\uDC00-\uDFFF])|([\r\n\u2028\u2029\u00AD]|[\uFE00-\uFE0F]|[\u0000])/`

                    By default, email is a unique identifier.

                    If [non-unique emails](https://hub.synerise.com/docs/settings/configuration/non-unique-emails/) are enabled, this field should not be used. It is no longer an identifier. The configuration of non-unique emails includes creating an email parameter for communication.

                    **Upcoming breaking change (effective July 6, 2026):** Synerise is introducing changes to how user identifiers and UUIDs are handled. These changes may affect profiles with accented or diacritical characters in identifiers, profiles with leading or trailing whitespace in identifiers, and profiles with duplicate UUIDs. For details and recommended actions, see [Upcoming changes to identifier and UUID handling](https://hub.synerise.com/docs/settings/configuration/identifier-standardization/).
                phone:
                  type: string
                  description: |
                    Phone number of the profile

                    - Must match the pattern (ECMA flavor): `/(^\+[0-9 \-()/]{6,19}$)|(^[0-9 \-()/]{6,20}$)/`  
                    - The value can't include any characters that match the pattern (ECMA flavor): `/([\uD800-\uDBFF][\uDC00-\uDFFF])|([\r\n\u2028\u2029\u00AD]|[\uFE00-\uFE0F]|[\u0000])/`

                    **Upcoming breaking change (effective July 6, 2026):** Synerise is introducing changes to how user identifiers and UUIDs are handled. These changes may affect profiles with accented or diacritical characters in identifiers, profiles with leading or trailing whitespace in identifiers, and profiles with duplicate UUIDs. For details and recommended actions, see [Upcoming changes to identifier and UUID handling](https://hub.synerise.com/docs/settings/configuration/identifier-standardization/).
                  example: "+48111222333"
                customId:
                  type: string
                  description: |
                    A custom ID for the Profile. It is a unique identifier.

                    The value can't include any characters that match the pattern (ECMA flavor): `/([\uD800-\uDBFF][\uDC00-\uDFFF])|([\r\n\u2028\u2029\u00AD]|[\uFE00-\uFE0F]|[\u0000])/`

                    **Upcoming breaking change (effective July 6, 2026):** Synerise is introducing changes to how user identifiers and UUIDs are handled. These changes may affect profiles with accented or diacritical characters in identifiers, profiles with leading or trailing whitespace in identifiers, and profiles with duplicate UUIDs. For details and recommended actions, see [Upcoming changes to identifier and UUID handling](https://hub.synerise.com/docs/settings/configuration/identifier-standardization/).
                firstName:
                  type: string
                  description: |
                    Profile's first name.

                    The value:
                      - can't include variation selectors (`[\uFE00-\uFE0F]`), unless there are other characters in the string.
                      - can't include the "null" control character (`\u0000`)
                lastName:
                  type: string
                  description: |
                    Profile's last name

                    The value:
                      - can't include variation selectors (`[\uFE00-\uFE0F]`), unless there are other characters in the string.
                    - can't include the "null" control character (`\u0000`)
                displayName:
                  type: string
                  description: Currently unused
                uuid:
                  type: string
                  description: |
                    UUID of the Profile. It is a unique identifier.

                    The value can't include any characters that match the pattern (ECMA flavor): `/([\uD800-\uDBFF][\uDC00-\uDFFF])|([\r\n\u2028\u2029\u00AD]|[\uFE00-\uFE0F]|[\u0000])/`

                    **Upcoming breaking change (effective July 6, 2026):** Synerise is introducing changes to how user identifiers and UUIDs are handled. These changes may affect profiles with accented or diacritical characters in identifiers, profiles with leading or trailing whitespace in identifiers, and profiles with duplicate UUIDs. For details and recommended actions, see [Upcoming changes to identifier and UUID handling](https://hub.synerise.com/docs/settings/configuration/identifier-standardization/).
                  example: 07243772-008a-42e1-ba37-c3807cebde8f
                avatarUrl:
                  type: string
                  nullable: true
                  description: |
                    URL of the profile's avatar picture

                    The value:
                      - can't include variation selectors (`[\uFE00-\uFE0F]`), unless there are other characters in the string.
                    - can't include the "null" control character (`\u0000`)
                birthDate:
                  type: string
                  description: "Date of birth in the profile. Must be in `yyyy-mm-dd` format and later than `1900-01-01`. Must be a date in the past. <br>**IMPORTANT**: Months and days must be zero-padded. For example: May 3, 1993 is `1993-05-03`."
                  example: 1987-10-24
                company:
                  type: string
                  description: |
                    Profiles's company

                    The value:
                      - can't include variation selectors (`[\uFE00-\uFE0F]`), unless there are other characters in the string.
                    - can't include the "null" control character (`\u0000`)
                city:
                  type: string
                  description: |
                    Profile's city of residence.

                    The value:
                      - can't include variation selectors (`[\uFE00-\uFE0F]`), unless there are other characters in the string.
                    - can't include the "null" control character (`\u0000`)
                address:
                  type: string
                  description: |
                    Profile's street address.

                    The value:
                      - can't include variation selectors (`[\uFE00-\uFE0F]`), unless there are other characters in the string.
                    - can't include the "null" control character (`\u0000`)
                zipCode:
                  type: string
                  description: |
                    Profile's zip code

                    The value:
                      - can't include variation selectors (`[\uFE00-\uFE0F]`), unless there are other characters in the string.
                    - can't include the "null" control character (`\u0000`)
                province:
                  type: string
                  description: |
                    Profile's province of residence

                    The value:
                      - can't include variation selectors (`[\uFE00-\uFE0F]`), unless there are other characters in the string.
                    - can't include the "null" control character (`\u0000`)
                countryCode:
                  type: string
                  description: Code of profile's country of residence in accordance with the ISO 3166 format
                  example: PL
                sex:
                  type: string
                  description: Profile's sex
                  enum:
                    - FEMALE
                    - MALE
                    - NOT_SPECIFIED
                    - OTHER
                whatsAppId:
                  type: string
                  nullable: true
                  description: |
                    WhatsApp identifier of the profile, used for WhatsApp communication.

                    The value:
                      - can't include variation selectors (`[\uFE00-\uFE0F]`), unless there are other characters in the string.
                      - can't include the "null" control character (`\u0000`)
                  example: TestWhatsappId
                agreements:
                  description: |-
                    This object contains the marketing agreements of the Profile.

                    You can also pass the values as strings (`"true"`;`"True"`/`"false"`;`"False"`) or integers (`1` for true and `0` for false).
                  type: object
                  properties:
                    email:
                      type: boolean
                      description: Permission to receive marketing information by e-mail. This field has no effect if [email is not a unique identifier](https://hub.synerise.com/docs/settings/configuration/non-unique-emails/).
                      default: false
                    sms:
                      type: boolean
                      description: Permission to receive marketing information by SMS
                      default: false
                    push:
                      type: boolean
                      description: Permission to receive push notifications
                      default: false
                    webPush:
                      type: boolean
                      description: Permission to receive webpush notifications
                      default: false
                    whatsApp:
                      type: boolean
                      description: Permission to receive marketing information via WhatsApp
                      default: false
                    bluetooth:
                      type: boolean
                      deprecated: true
                      description: This field is ignored when sent.
                      default: false
                    rfid:
                      type: boolean
                      deprecated: true
                      description: This field is ignored when sent.
                      default: false
                    wifi:
                      type: boolean
                      deprecated: true
                      description: This field is ignored when sent.
                      default: false
                attributes:
                  type: object
                  description: |
                    This object contains custom attributes that can have any name (except for reserved attributes, see warning below) and data type, as required by your integration.

                    The attribute names can't include any characters that match the pattern (ECMA flavor): `/[\r\n\u2028\u2029\u00AD\u0000\uFE00-\uFE0F]/`

                    String values:
                      - can't include variation selectors (`[\uFE00-\uFE0F]`), unless there are other characters in the string.
                      - can't include the "null" control character (`\u0000`)

                    If you want to send a date/time attribute for use in analytics, take the following into account:
                    - The date/time should be formatted according to ISO 8601.
                    - The time zone of the workspace affects dates/times in the attributes that DON'T have a defined timezone. Example:
                        - `2023-10-09T12:00:00` doesn't have a timezone indicator and will be considered as a time in the workspace's time zone.
                        - `2023-10-09T12:00:00+02:00` has a timezone indicator (`+02:00`), so the timezone of the workspace doesn't affect it.
                        - `2023-10-09T12:00:00Z` is a time in the UTC time zone (denoted by the `Z` at the end), so the timezone of the workspace doesn't affect it.

                    <strong><span style="color:red">WARNING<span></strong>: Some attributes cannot be sent in this object and will be ignored. Some of these are reserved for system use, and others must be sent as properties of the profile in the root object of the request body instead of inside the `attributes` object.

                    <details><summary><span style="background:red;color:white">Click to expand the list of reserved attributes</span></summary>
                    <code>email</code><br><code>id</code><br><code>clientId</code><br><code>phone</code><br><code>customId</code><br><code>uuid</code><br><code>firstName</code><br><code>lastName</code><br>
                    <code>displayName</code><br><code>company</code><br><code>address</code><br><code>city</code><br><code>province</code><br><code>zipCode</code><br><code>countryCode</code><br>
                    <code>birthDate</code><br><code>sex</code><br><code>avatarUrl</code><br><code>anonymous</code><br><code>agreements</code><br><code>tags</code><br><code>businessProfileId</code><br>
                    <code>time</code><br><code>ip</code><br><code>source</code><br><code>newsletter_agreement</code><br><code>custom_identify</code><br><code>firstname</code><br>
                    <code>lastname</code><br><code>created</code><br><code>updated</code><br><code>last_activity_date</code><br><code>birthdate</code><br><code>external_avatar_url</code><br>
                    <code>displayname</code><br><code>receive_smses</code><br><code>receive_push_messages</code><br><code>receive_webpush_messages</code><br>
                    <code>receive_whatsapp_messages</code><br><code>whatsAppId</code><br><code>whatsapp_id</code><br>
                    <code>receive_btooth_messages</code><br><code>receive_rfid_messages</code><br><code>receive_wifi_messages</code><br>
                    <code>zipCode</code><br><code>anonymous_type</code><br><code>country_id</code><br><code>geo_loc_country</code><br><code>geo_loc_isp</code><br>
                    <code>geo_loc_lat</code><br><code>geo_loc_lon</code><br><code>club_card_id</code><br><code>type</code><br><code>confirmed</code><br><code>facebookId</code><br><code>deletedAt</code><br><code>deleted_unique</code><br><code>status</code><br><code>recognized</code><br><code>previous_clients</code><br><code>testProfile</code><br>
                    <code>apikey</code><br><code>apiKey</code><br><code>ApiKey</code><br><code>Apikey</code><br><code>tracker</code><br><code>snr_sdk_version</code><br><code>eventCreateTime</code><br><code>correlationId</code>
                    </details>
                  additionalProperties:
                    description: |
                      The attribute names can't include any characters that match the pattern (ECMA flavor): `/[\r\n\u2028\u2029\u00AD\u0000\uFE00-\uFE0F]/`

                      String values:
                      - can't include variation selectors (`[\uFE00-\uFE0F]`), unless there are other characters in the string.
                      - can't include the "null" control character (`\u0000`)
                tags:
                  type: array
                  description: |
                    Tags can be used to group profiles.

                    Tag names (strings):
                    - can't include variation selectors (`[\uFE00-\uFE0F]`), unless there are other characters in the string.
                    - can't include the "null" control character (`\u0000`)
                  items:
                    type: string
                    description: |
                      Tag names (strings):
                      - can't include variation selectors (`[\uFE00-\uFE0F]`), unless there are other characters in the string.
                      - can't include the "null" control character (`\u0000`)
        required: true
      responses:
        "202":
          description: Accepted, queued for processing
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Summary of the error
                  status:
                    type: integer
                    format: int32
                    description: Status code
                  timestamp:
                    type: string
                    description: Time when the message was sent
                  path:
                    type: string
                    description: URL of the requested resource
                  message:
                    type: string
                    description: Description of the problem
                  errors:
                    type: array
                    description: Additional details of the errors, if applicable
                    items:
                      type: object
                      properties:
                        code:
                          type: integer
                          format: int32
                          example: 12082
                          description: A numeric identifier of the error type
                        field:
                          type: string
                          example: countryCode
                          description: Field in the request body that caused the error
                        message:
                          type: string
                          example: Country Code must have 0 or 3 characters as per ISO format.
                          description: A detailed description of the problem
                        rejectedValue:
                          type: string
                          example: Poland
                          description: The value that caused the error
              example:
                error: Bad Request
                status: 400
                timestamp: 2019-03-21T08:37:34.526Z
                path: /clients/by-customid/customId1234
                message: Some fields did not pass validation
                errors:
                  - code: 12053
                    field: uuid
                    message: UUID must be well-formed value as per RFC 4122
                    rejectedValue: "4321"
        "401":
          description: "Unauthorized: wrong consumer scope; token missing/expired/invalid; invalid API key; etc."
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Summary of the error
                  status:
                    type: integer
                    format: int32
                    description: Status code
                  timestamp:
                    type: string
                    description: Time when the message was sent
                  path:
                    type: string
                    description: URL of the requested resource
                  message:
                    type: string
                    description: Description of the problem
                  errors:
                    type: array
                    description: Additional details of the errors, if applicable
                    items:
                      type: object
                      properties:
                        code:
                          type: integer
                          format: int32
                          example: 12082
                          description: A numeric identifier of the error type
                        field:
                          type: string
                          example: countryCode
                          description: Field in the request body that caused the error
                        message:
                          type: string
                          example: Country Code must have 0 or 3 characters as per ISO format.
                          description: A detailed description of the problem
                        rejectedValue:
                          type: string
                          example: Poland
                          description: The value that caused the error
              example:
                error: Bad Request
                status: 400
                timestamp: 2020-10-29T13:08:16.235Z
                path: /exampleEndpoint
                message: Some fields did not pass validation
                errors:
                  - code: 120
                    field: exampleField
                    message: "120"
                    rejectedValue: exampleValue
        "403":
          description: Forbidden; insufficient permissions (when PII protection is enabled, PII permissions are required in addition to the permissions listed in the method description)
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Summary of the error
                  status:
                    type: integer
                    format: int32
                    description: Status code
                  timestamp:
                    type: string
                    description: Time when the message was sent
                  path:
                    type: string
                    description: URL of the requested resource
                  message:
                    type: string
                    description: Description of the problem
                  errors:
                    type: array
                    description: Additional details of the errors, if applicable
                    items:
                      type: object
                      properties:
                        code:
                          type: integer
                          format: int32
                          example: 12082
                          description: A numeric identifier of the error type
                        field:
                          type: string
                          example: countryCode
                          description: Field in the request body that caused the error
                        message:
                          type: string
                          example: Country Code must have 0 or 3 characters as per ISO format.
                          description: A detailed description of the problem
                        rejectedValue:
                          type: string
                          example: Poland
                          description: The value that caused the error
              example:
                timestamp: 2018-06-07T07:29:27.489+00:00
                status: 403
                error: Forbidden
                message: Forbidden
                path: /path_of_the_endpoint
        "404":
          description: Profile not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Summary of the error
                  status:
                    type: integer
                    format: int32
                    description: Status code
                  timestamp:
                    type: string
                    description: Time when the message was sent
                  path:
                    type: string
                    description: URL of the requested resource
                  message:
                    type: string
                    description: Description of the problem
                  errors:
                    type: array
                    description: Additional details of the errors, if applicable
                    items:
                      type: object
                      properties:
                        code:
                          type: integer
                          format: int32
                          example: 12082
                          description: A numeric identifier of the error type
                        field:
                          type: string
                          example: countryCode
                          description: Field in the request body that caused the error
                        message:
                          type: string
                          example: Country Code must have 0 or 3 characters as per ISO format.
                          description: A detailed description of the problem
                        rejectedValue:
                          type: string
                          example: Poland
                          description: The value that caused the error
              example:
                timestamp: 2018-06-07T09:48:56.522+00:00
                status: 404
                error: Not Found
                message: "No client record found for customId: customId1234"
                path: /clients/by-customid/customId1234
        "415":
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Summary of the error
                  status:
                    type: integer
                    format: int32
                    description: Status code
                  timestamp:
                    type: string
                    description: Time when the message was sent
                  path:
                    type: string
                    description: URL of the requested resource
                  message:
                    type: string
                    description: Description of the problem
                  errors:
                    type: array
                    description: Additional details of the errors, if applicable
                    items:
                      type: object
                      properties:
                        code:
                          type: integer
                          format: int32
                          example: 12082
                          description: A numeric identifier of the error type
                        field:
                          type: string
                          example: countryCode
                          description: Field in the request body that caused the error
                        message:
                          type: string
                          example: Country Code must have 0 or 3 characters as per ISO format.
                          description: A detailed description of the problem
                        rejectedValue:
                          type: string
                          example: Poland
                          description: The value that caused the error
              example:
                timestamp: 2018-06-07T07:27:23.136+00:00
                status: 415
                error: Unsupported Media Type
                message: Content type 'application/xml' not supported
                path: /path_of_the_endpoint
      deprecated: false
      security:
        - JWT: []
      tags:
        - Profile management
      x-snr-doc-urls:
        - /api-reference/data-management#tag/Profile-management/operation/UpdateAClientByCustomId
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/v4/clients/by-customid/customIdExample \
              --header 'Api-Version: SOME_STRING_VALUE' \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"email":"string","phone":"+48111222333","customId":"string","firstName":"string","lastName":"string","displayName":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f","avatarUrl":"string","birthDate":"1987-10-24","company":"string","city":"string","address":"string","zipCode":"string","province":"string","countryCode":"PL","sex":"FEMALE","whatsAppId":"TestWhatsappId","agreements":{"email":false,"sms":false,"push":false,"webPush":false,"whatsApp":false,"bluetooth":false,"rfid":false,"wifi":false},"attributes":{"property1":null,"property2":null},"tags":["string"]}'
        - lang: Python
          label: Python
          source: |-
            import http.client

            conn = http.client.HTTPSConnection("api.synerise.com")

            payload = "{\"email\":\"string\",\"phone\":\"+48111222333\",\"customId\":\"string\",\"firstName\":\"string\",\"lastName\":\"string\",\"displayName\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\",\"avatarUrl\":\"string\",\"birthDate\":\"1987-10-24\",\"company\":\"string\",\"city\":\"string\",\"address\":\"string\",\"zipCode\":\"string\",\"province\":\"string\",\"countryCode\":\"PL\",\"sex\":\"FEMALE\",\"whatsAppId\":\"TestWhatsappId\",\"agreements\":{\"email\":false,\"sms\":false,\"push\":false,\"webPush\":false,\"whatsApp\":false,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}"

            headers = {
                'Api-Version': "SOME_STRING_VALUE",
                'Authorization': "Bearer REPLACE_BEARER_TOKEN",
                'content-type': "application/json"
                }

            conn.request("POST", "/v4/clients/by-customid/customIdExample", payload, headers)

            res = conn.getresponse()
            data = res.read()

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "email": "string",
              "phone": "+48111222333",
              "customId": "string",
              "firstName": "string",
              "lastName": "string",
              "displayName": "string",
              "uuid": "07243772-008a-42e1-ba37-c3807cebde8f",
              "avatarUrl": "string",
              "birthDate": "1987-10-24",
              "company": "string",
              "city": "string",
              "address": "string",
              "zipCode": "string",
              "province": "string",
              "countryCode": "PL",
              "sex": "FEMALE",
              "whatsAppId": "TestWhatsappId",
              "agreements": {
                "email": false,
                "sms": false,
                "push": false,
                "webPush": false,
                "whatsApp": false,
                "bluetooth": false,
                "rfid": false,
                "wifi": false
              },
              "attributes": {
                "property1": null,
                "property2": null
              },
              "tags": [
                "string"
              ]
            });

            const xhr = new XMLHttpRequest();
            xhr.withCredentials = true;

            xhr.addEventListener("readystatechange", function () {
              if (this.readyState === this.DONE) {
                console.log(this.responseText);
              }
            });

            xhr.open("POST", "https://api.synerise.com/v4/clients/by-customid/customIdExample");
            xhr.setRequestHeader("Api-Version", "SOME_STRING_VALUE");
            xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
            xhr.setRequestHeader("content-type", "application/json");

            xhr.send(data);
        - lang: Node.js
          label: Node.js
          source: |-
            const http = require("https");

            const options = {
              "method": "POST",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/v4/clients/by-customid/customIdExample",
              "headers": {
                "Api-Version": "SOME_STRING_VALUE",
                "Authorization": "Bearer REPLACE_BEARER_TOKEN",
                "content-type": "application/json"
              }
            };

            const req = http.request(options, function (res) {
              const chunks = [];

              res.on("data", function (chunk) {
                chunks.push(chunk);
              });

              res.on("end", function () {
                const body = Buffer.concat(chunks);
                console.log(body.toString());
              });
            });

            req.write(JSON.stringify({
              email: 'string',
              phone: '+48111222333',
              customId: 'string',
              firstName: 'string',
              lastName: 'string',
              displayName: 'string',
              uuid: '07243772-008a-42e1-ba37-c3807cebde8f',
              avatarUrl: 'string',
              birthDate: '1987-10-24',
              company: 'string',
              city: 'string',
              address: 'string',
              zipCode: 'string',
              province: 'string',
              countryCode: 'PL',
              sex: 'FEMALE',
              whatsAppId: 'TestWhatsappId',
              agreements: {
                email: false,
                sms: false,
                push: false,
                webPush: false,
                whatsApp: false,
                bluetooth: false,
                rfid: false,
                wifi: false
              },
              attributes: {property1: null, property2: null},
              tags: ['string']
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/v4/clients/by-customid/customIdExample');
            $request->setMethod(HTTP_METH_POST);

            $request->setHeaders([
              'Api-Version' => 'SOME_STRING_VALUE',
              'Authorization' => 'Bearer REPLACE_BEARER_TOKEN',
              'content-type' => 'application/json'
            ]);

            $request->setBody('{"email":"string","phone":"+48111222333","customId":"string","firstName":"string","lastName":"string","displayName":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f","avatarUrl":"string","birthDate":"1987-10-24","company":"string","city":"string","address":"string","zipCode":"string","province":"string","countryCode":"PL","sex":"FEMALE","whatsAppId":"TestWhatsappId","agreements":{"email":false,"sms":false,"push":false,"webPush":false,"whatsApp":false,"bluetooth":false,"rfid":false,"wifi":false},"attributes":{"property1":null,"property2":null},"tags":["string"]}');

            try {
              $response = $request->send();

              echo $response->getBody();
            } catch (HttpException $ex) {
              echo $ex;
            }
        - lang: Java
          label: Java
          source: |-
            HttpResponse<String> response = Unirest.post("https://api.synerise.com/v4/clients/by-customid/customIdExample")
              .header("Api-Version", "SOME_STRING_VALUE")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"email\":\"string\",\"phone\":\"+48111222333\",\"customId\":\"string\",\"firstName\":\"string\",\"lastName\":\"string\",\"displayName\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\",\"avatarUrl\":\"string\",\"birthDate\":\"1987-10-24\",\"company\":\"string\",\"city\":\"string\",\"address\":\"string\",\"zipCode\":\"string\",\"province\":\"string\",\"countryCode\":\"PL\",\"sex\":\"FEMALE\",\"whatsAppId\":\"TestWhatsappId\",\"agreements\":{\"email\":false,\"sms\":false,\"push\":false,\"webPush\":false,\"whatsApp\":false,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}")
              .asString();
servers:
  - description: Microsoft Azure EU
    url: https://api.synerise.com
  - description: Microsoft Azure USA
    url: https://api.azu.synerise.com
  - description: Google Cloud Platform
    url: https://api.geb.synerise.com
tags:
  - name: Profile management
components:
  securitySchemes:
    JWT:
      type: http
      scheme: bearer
      description: |-
        JWT Bearer token. The header looks like this: `Bearer {JWT}`

        Remember to include the space between 'Bearer' and the token.

        Generate a token via the **Authorization** endpoints.
```
