openapi: 3.0.0
info:
  title: Authorization - Synerise Public API
  version: 1.2.1
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: Authorization
  - name: Authorization (deprecated)
x-tagGroups:
  - name: Authorization
    tags:
      - Authorization
      - Authorization (deprecated)
paths:
  /sauth/v3/auth/refresh/client:
    post:
      tags:
        - Authorization
      summary: Refresh a Profile token
      description: |
        Retrieve a refreshed JWT Token to prolong the session.

        The current token must still be active at the time of the request.

        ---

        **API consumers:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=authenticateUsingPOST_v3" target="_blank" rel="noopener">Profile (Client)</a>, <a href="/api-reference/authorization?tag=Authorization&amp;operationId=LogInAnonymouslyV3" target="_blank" rel="noopener">Anonymous Profile</a>

        **Authentication:** Not required
      operationId: RefreshAClientTokenV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-ClientRefreshRequest"
        required: true
      responses:
        "200":
          description: New authorization token
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-JWTtokenV3"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
              example:
                timestamp: 2019-03-19T13:57:33.244+00:00
                status: 401
                error: Unauthorized
                message: Full authentication is required to access this resource
                path: /v3/auth/refresh/client
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization/operation/RefreshAClientTokenV3
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/v3/auth/refresh/client \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"apiKey":"string"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"apiKey\":\"string\"}"

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

            conn.request("POST", "/sauth/v3/auth/refresh/client", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "apiKey": "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/sauth/v3/auth/refresh/client");
            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": "/sauth/v3/auth/refresh/client",
              "headers": {
                "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({apiKey: 'string'}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/sauth/v3/auth/refresh/client');
            $request->setMethod(HTTP_METH_POST);

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

            $request->setBody('{"apiKey":"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/sauth/v3/auth/refresh/client")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"apiKey\":\"string\"}")
              .asString();
  /sauth/v3/auth/login/client:
    post:
      tags:
        - Authorization
      summary: Authenticate as Profile
      description: |
        Obtain a new JWT for a Profile. If an account for the Profile does not exist and the `identityProvider` is different than `SYNERISE`, this request creates an account.

        ---

        **Authentication:** Not required
      operationId: authenticateUsingPOST_v3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-AuthenticationRequestV2_and_3"
      responses:
        "200":
          description: Profile authorization token
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-JWTtokenV3"
              example:
                token: eyJhbGciOiJSUzUxMiJ9.eyJzdinvalidwYmZkM2FkNDg2ZjQ3ZGRiMjE5MSIsImF1ZCI6IkFQSSIsInJsbSI6ImFub255bW91c19jbGllbnQiLCJjdGQiOjE1NTMwMDQxNTkxNTEsImVtbCI6IjYyMjM3NmY4LTAwMDAtMjIyMi1kN2Y5LTA3MGZhOTU2ZTk2M0Bhbm9ueW1vdXMuaW52YWxpZCIsImF1dGgiOiJINHNJQUFBQUFBQUFBSXVPQlFBcHUwd05BZ0FBQUE9PSIsImlzcyI6IlN5bmVyaXNlIiwiYnBpIjo0OCwiY2xJZCI6NDMzMjMwMjg4LCJleHAiOjE1NTMwMDcxNTksImFwayI6IjVBRUFBM0Q1LUUxNDctQzdFQi1ENTlFLUJDRjUwMTA5QTNEMSJ9.QOmSqrneR4mJFv4JdxTYsw_wGcDawDsVQuB-GVTcPPwijiP7lQ_Jzqq2Mypg1BS6WFlfGB8fzqCY9iMF_TdtjmoB4xBrY95ylU8L9qto-9Cw5x5TURkfxq31eryiHe2IteRAEtoVzYg2_s9QhlH6ANVcFOVp8dMno0V9bfMYfeSQa3FkjEbxFsseHkMOiADmp9-tOGtLXO942Ir-2W_Hz3Utlpt4erz0dVJBw8a-mFavPA8EEDWR7ACJNocrVHFkS3wFISh3LqLn6KkXiowaynKlJOEHGctuahzKmF3ZOJ1BvGgKohxF9OXvQs9IdmCfWhYsLr5Q2p04TJJ-MyvTipuggKVioh8mHmOFdfnN-Zused6tXzhZtKPUWTmM8cBKoAOBHExxcMQ8SVSjxnw_7_eLKm7S2wNpu0V-tiPZPCH4wYZXtWBYjmfy0V9ydjXnNunXfgxKixLeFNnONUXxEuqPLvM_xAuonQBXVN4nYrgJv8p8U6_ZlGMPjJq1szfcuBZnzI34LSEWx_nSof0XC5Czm8iG_ihG8naivNWS8h-Q-qKMP_3PPFsLSH4Egh03pH93EJUuNAeSO4RGfUX1wzMvrv1nBC1SM660uFMbq-wkplFBbKnHKMYe-qRs1-lZPG5PwPWJJdpGqOUzbnoMOJYmiq06OHHVQyJSkcEHLCk
        "400":
          description: Request failed, see error message for details
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/sauth-4xx-base"
                  - type: object
                    properties:
                      errorCode:
                        type: string
                        description: |
                          Error code, if applicable.
                          - `SAU-601`: Device ID is required and missing
        "401":
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
              example:
                timestamp: 2018-06-07T07:17:41.734+00:00
                status: 401
                error: Unauthorized
                message: Access denied
                path: /v3/auth/login/client
                traceId: 61b4aa7c0cb1167a
        "403":
          $ref: "#/components/responses/sauth-403-login"
        "404":
          description: Profile not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
              example:
                timestamp: 2018-06-07T07:17:41.734+00:00
                status: 404
                error: Not Found
                message: Account does not exist
                path: /v3/auth/login/client
                traceId: 61b4aa7c0cb1167a
        "406":
          $ref: "#/components/responses/sauth-406-account-locked"
        "423":
          $ref: "#/components/responses/sauth-423-device-control-enabled"
      deprecated: false
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization/operation/authenticateUsingPOST_v3
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/v3/auth/login/client \
              --header 'content-type: application/json' \
              --data '{"apiKey":"string","identityProvider":"SYNERISE","identityProviderToken":"string","email":"string","customId":null,"password":"string","uuid":"string","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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 = "{\"apiKey\":\"string\",\"identityProvider\":\"SYNERISE\",\"identityProviderToken\":\"string\",\"email\":\"string\",\"customId\":null,\"password\":\"string\",\"uuid\":\"string\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}"

            headers = { 'content-type': "application/json" }

            conn.request("POST", "/sauth/v3/auth/login/client", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "apiKey": "string",
              "identityProvider": "SYNERISE",
              "identityProviderToken": "string",
              "email": "string",
              "customId": null,
              "password": "string",
              "uuid": "string",
              "deviceId": "string",
              "agreements": {
                "email": true,
                "sms": true,
                "push": true,
                "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/sauth/v3/auth/login/client");
            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": "/sauth/v3/auth/login/client",
              "headers": {
                "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({
              apiKey: 'string',
              identityProvider: 'SYNERISE',
              identityProviderToken: 'string',
              email: 'string',
              customId: null,
              password: 'string',
              uuid: 'string',
              deviceId: 'string',
              agreements: {email: true, sms: true, push: true, 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/sauth/v3/auth/login/client');
            $request->setMethod(HTTP_METH_POST);

            $request->setHeaders([
              'content-type' => 'application/json'
            ]);

            $request->setBody('{"apiKey":"string","identityProvider":"SYNERISE","identityProviderToken":"string","email":"string","customId":null,"password":"string","uuid":"string","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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/sauth/v3/auth/login/client")
              .header("content-type", "application/json")
              .body("{\"apiKey\":\"string\",\"identityProvider\":\"SYNERISE\",\"identityProviderToken\":\"string\",\"email\":\"string\",\"customId\":null,\"password\":\"string\",\"uuid\":\"string\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}")
              .asString();
  /sauth/v3/auth/server/login/client:
    post:
      tags:
        - Authorization
      summary: Authenticate Profile with a server
      description: |
        Obtain a new JWT for a Profile. This method is designed to be used from a backend server that handles login requests and communicates with Synerise to execute them.  
        If an account for the Profile does not exist and the `identityProvider` is different than `SYNERISE`, this request creates an account.


        ---

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

        **API key permission required:** `SAUTH_SERVER_LOGIN_CLIENT_CREATE`
      operationId: authenticateViaServerV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-ServerAuthenticationRequestV2_and_3"
      responses:
        "200":
          description: Profile authorization token
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-JWTtokenV3"
              example:
                token: eyJhbGciOiJSUzUxMiJ9.eyJzdinvalidwYmZkM2FkNDg2ZjQ3ZGRiMjE5MSIsImF1ZCI6IkFQSSIsInJsbSI6ImFub255bW91c19jbGllbnQiLCJjdGQiOjE1NTMwMDQxNTkxNTEsImVtbCI6IjYyMjM3NmY4LTAwMDAtMjIyMi1kN2Y5LTA3MGZhOTU2ZTk2M0Bhbm9ueW1vdXMuaW52YWxpZCIsImF1dGgiOiJINHNJQUFBQUFBQUFBSXVPQlFBcHUwd05BZ0FBQUE9PSIsImlzcyI6IlN5bmVyaXNlIiwiYnBpIjo0OCwiY2xJZCI6NDMzMjMwMjg4LCJleHAiOjE1NTMwMDcxNTksImFwayI6IjVBRUFBM0Q1LUUxNDctQzdFQi1ENTlFLUJDRjUwMTA5QTNEMSJ9.QOmSqrneR4mJFv4JdxTYsw_wGcDawDsVQuB-GVTcPPwijiP7lQ_Jzqq2Mypg1BS6WFlfGB8fzqCY9iMF_TdtjmoB4xBrY95ylU8L9qto-9Cw5x5TURkfxq31eryiHe2IteRAEtoVzYg2_s9QhlH6ANVcFOVp8dMno0V9bfMYfeSQa3FkjEbxFsseHkMOiADmp9-tOGtLXO942Ir-2W_Hz3Utlpt4erz0dVJBw8a-mFavPA8EEDWR7ACJNocrVHFkS3wFISh3LqLn6KkXiowaynKlJOEHGctuahzKmF3ZOJ1BvGgKohxF9OXvQs9IdmCfWhYsLr5Q2p04TJJ-MyvTipuggKVioh8mHmOFdfnN-Zused6tXzhZtKPUWTmM8cBKoAOBHExxcMQ8SVSjxnw_7_eLKm7S2wNpu0V-tiPZPCH4wYZXtWBYjmfy0V9ydjXnNunXfgxKixLeFNnONUXxEuqPLvM_xAuonQBXVN4nYrgJv8p8U6_ZlGMPjJq1szfcuBZnzI34LSEWx_nSof0XC5Czm8iG_ihG8naivNWS8h-Q-qKMP_3PPFsLSH4Egh03pH93EJUuNAeSO4RGfUX1wzMvrv1nBC1SM660uFMbq-wkplFBbKnHKMYe-qRs1-lZPG5PwPWJJdpGqOUzbnoMOJYmiq06OHHVQyJSkcEHLCk
        "400":
          description: Request failed, see error message for details
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/sauth-4xx-base"
                  - type: object
                    properties:
                      errorCode:
                        type: string
                        description: |
                          Error code, if applicable.
                          - `SAU-601`: Device ID is required and missing
        "401":
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
              example:
                timestamp: 2018-06-07T07:17:41.734+00:00
                status: 401
                error: Unauthorized
                message: Access denied
                path: /v3/auth/login/client
                traceId: 61b4aa7c0cb1167a
        "403":
          $ref: "#/components/responses/sauth-403-login"
        "404":
          description: Profile not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
              example:
                timestamp: 2018-06-07T07:17:41.734+00:00
                status: 404
                error: Not Found
                message: Account does not exist
                path: /v3/auth/login/client
                traceId: 61b4aa7c0cb1167a
        "406":
          $ref: "#/components/responses/sauth-406-account-locked"
        "423":
          $ref: "#/components/responses/sauth-423-device-control-enabled"
      deprecated: false
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization/operation/authenticateViaServerV3
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/v3/auth/server/login/client \
              --header 'content-type: application/json' \
              --data '{"ipAddress":"string","apiKey":"string","identityProvider":"SYNERISE","identityProviderToken":"string","email":"string","customId":null,"password":"string","uuid":"string","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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 = "{\"ipAddress\":\"string\",\"apiKey\":\"string\",\"identityProvider\":\"SYNERISE\",\"identityProviderToken\":\"string\",\"email\":\"string\",\"customId\":null,\"password\":\"string\",\"uuid\":\"string\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}"

            headers = { 'content-type': "application/json" }

            conn.request("POST", "/sauth/v3/auth/server/login/client", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "ipAddress": "string",
              "apiKey": "string",
              "identityProvider": "SYNERISE",
              "identityProviderToken": "string",
              "email": "string",
              "customId": null,
              "password": "string",
              "uuid": "string",
              "deviceId": "string",
              "agreements": {
                "email": true,
                "sms": true,
                "push": true,
                "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/sauth/v3/auth/server/login/client");
            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": "/sauth/v3/auth/server/login/client",
              "headers": {
                "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({
              ipAddress: 'string',
              apiKey: 'string',
              identityProvider: 'SYNERISE',
              identityProviderToken: 'string',
              email: 'string',
              customId: null,
              password: 'string',
              uuid: 'string',
              deviceId: 'string',
              agreements: {email: true, sms: true, push: true, 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/sauth/v3/auth/server/login/client');
            $request->setMethod(HTTP_METH_POST);

            $request->setHeaders([
              'content-type' => 'application/json'
            ]);

            $request->setBody('{"ipAddress":"string","apiKey":"string","identityProvider":"SYNERISE","identityProviderToken":"string","email":"string","customId":null,"password":"string","uuid":"string","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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/sauth/v3/auth/server/login/client")
              .header("content-type", "application/json")
              .body("{\"ipAddress\":\"string\",\"apiKey\":\"string\",\"identityProvider\":\"SYNERISE\",\"identityProviderToken\":\"string\",\"email\":\"string\",\"customId\":null,\"password\":\"string\",\"uuid\":\"string\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}")
              .asString();
  /sauth/v3/auth/login/client/conditional:
    post:
      summary: Authenticate as Profile (conditional)
      description: |
        Obtain a new JWT token for a Profile.

        - If the account does not exist, an account is not created.
        - If any additional conditions are required for logging in, the response is HTTP200 and lists the conditions.
        - Note that using this endpoint requires authenticating as an anonymous Profile first.


        ---

        **Authentication:** Not required
      security:
        - JWT: []
      tags:
        - Authorization
      operationId: authenticateConditionalUsingPOSTv3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-AuthenticationRequestV2_and_3"
      responses:
        "200":
          description: Details of the login operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-ConditionalAuthenticationResponseV3"
        "400":
          description: Request failed, see error message for details
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/sauth-4xx-base"
                  - type: object
                    properties:
                      errorCode:
                        type: string
                        description: |
                          Error code, if applicable.
                          - `SAU-601`: Device ID is required and missing
        "401":
          description: See error message for details
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
        "403":
          $ref: "#/components/responses/sauth-403-login"
        "404":
          description: Profile not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
              example:
                timestamp: 2018-06-07T07:17:41.734+00:00
                status: 404
                error: Not Found
                message: Account does not exist
                path: /v3/auth/login/client/conditional
                traceId: 61b4aa7c0cb1167a
        "406":
          $ref: "#/components/responses/sauth-406-account-locked"
        "423":
          $ref: "#/components/responses/sauth-423-device-control-enabled"
      deprecated: false
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization/operation/authenticateConditionalUsingPOSTv3
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/v3/auth/login/client/conditional \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"apiKey":"string","identityProvider":"SYNERISE","identityProviderToken":"string","email":"string","customId":null,"password":"string","uuid":"string","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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 = "{\"apiKey\":\"string\",\"identityProvider\":\"SYNERISE\",\"identityProviderToken\":\"string\",\"email\":\"string\",\"customId\":null,\"password\":\"string\",\"uuid\":\"string\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}"

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

            conn.request("POST", "/sauth/v3/auth/login/client/conditional", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "apiKey": "string",
              "identityProvider": "SYNERISE",
              "identityProviderToken": "string",
              "email": "string",
              "customId": null,
              "password": "string",
              "uuid": "string",
              "deviceId": "string",
              "agreements": {
                "email": true,
                "sms": true,
                "push": true,
                "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/sauth/v3/auth/login/client/conditional");
            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": "/sauth/v3/auth/login/client/conditional",
              "headers": {
                "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({
              apiKey: 'string',
              identityProvider: 'SYNERISE',
              identityProviderToken: 'string',
              email: 'string',
              customId: null,
              password: 'string',
              uuid: 'string',
              deviceId: 'string',
              agreements: {email: true, sms: true, push: true, 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/sauth/v3/auth/login/client/conditional');
            $request->setMethod(HTTP_METH_POST);

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

            $request->setBody('{"apiKey":"string","identityProvider":"SYNERISE","identityProviderToken":"string","email":"string","customId":null,"password":"string","uuid":"string","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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/sauth/v3/auth/login/client/conditional")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"apiKey\":\"string\",\"identityProvider\":\"SYNERISE\",\"identityProviderToken\":\"string\",\"email\":\"string\",\"customId\":null,\"password\":\"string\",\"uuid\":\"string\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}")
              .asString();
  /sauth/v3/auth/login/client/anonymous:
    post:
      tags:
        - Authorization
      summary: Authenticate anonymously
      description: |
        Obtain a new JWT for an anonymous Profile. The token can be used and refreshed in the same way as tokens of registered Profiles.

        ---

        **Authentication:** Not required
      operationId: LogInAnonymouslyV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-LogInAnonymouslyV3RequestBody"
        required: true
      responses:
        "200":
          description: Anonymous authorization token
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-JWTtokenV3"
              example:
                token: eyJhbGciOiJSUzUxMiJ9.eyJzdinvalidwYmZkM2FkNDg2ZjQ3ZGRiMjE5MSIsImF1ZCI6IkFQSSIsInJsbSI6ImFub255bW91c19jbGllbnQiLCJjdGQiOjE1NTMwMDQxNTkxNTEsImVtbCI6IjYyMjM3NmY4LTAwMDAtMjIyMi1kN2Y5LTA3MGZhOTU2ZTk2M0Bhbm9ueW1vdXMuaW52YWxpZCIsImF1dGgiOiJINHNJQUFBQUFBQUFBSXVPQlFBcHUwd05BZ0FBQUE9PSIsImlzcyI6IlN5bmVyaXNlIiwiYnBpIjo0OCwiY2xJZCI6NDMzMjMwMjg4LCJleHAiOjE1NTMwMDcxNTksImFwayI6IjVBRUFBM0Q1LUUxNDctQzdFQi1ENTlFLUJDRjUwMTA5QTNEMSJ9.QOmSqrneR4mJFv4JdxTYsw_wGcDawDsVQuB-GVTcPPwijiP7lQ_Jzqq2Mypg1BS6WFlfGB8fzqCY9iMF_TdtjmoB4xBrY95ylU8L9qto-9Cw5x5TURkfxq31eryiHe2IteRAEtoVzYg2_s9QhlH6ANVcFOVp8dMno0V9bfMYfeSQa3FkjEbxFsseHkMOiADmp9-tOGtLXO942Ir-2W_Hz3Utlpt4erz0dVJBw8a-mFavPA8EEDWR7ACJNocrVHFkS3wFISh3LqLn6KkXiowaynKlJOEHGctuahzKmF3ZOJ1BvGgKohxF9OXvQs9IdmCfWhYsLr5Q2p04TJJ-MyvTipuggKVioh8mHmOFdfnN-Zused6tXzhZtKPUWTmM8cBKoAOBHExxcMQ8SVSjxnw_7_eLKm7S2wNpu0V-tiPZPCH4wYZXtWBYjmfy0V9ydjXnNunXfgxKixLeFNnONUXxEuqPLvM_xAuonQBXVN4nYrgJv8p8U6_ZlGMPjJq1szfcuBZnzI34LSEWx_nSof0XC5Czm8iG_ihG8naivNWS8h-Q-qKMP_3PPFsLSH4Egh03pH93EJUuNAeSO4RGfUX1wzMvrv1nBC1SM660uFMbq-wkplFBbKnHKMYe-qRs1-lZPG5PwPWJJdpGqOUzbnoMOJYmiq06OHHVQyJSkcEHLCk
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
              example:
                timestamp: 2019-03-19T14:03:35.413+00:00
                status: 401
                error: Unauthorized
                message: Could not fetch ApiKey
                path: /v3/auth/login/client/anonymous
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization/operation/LogInAnonymouslyV3
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/v3/auth/login/client/anonymous \
              --header 'content-type: application/json' \
              --data '{"apiKey":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f","deviceId":"string"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"apiKey\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\",\"deviceId\":\"string\"}"

            headers = { 'content-type': "application/json" }

            conn.request("POST", "/sauth/v3/auth/login/client/anonymous", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "apiKey": "string",
              "uuid": "07243772-008a-42e1-ba37-c3807cebde8f",
              "deviceId": "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/sauth/v3/auth/login/client/anonymous");
            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": "/sauth/v3/auth/login/client/anonymous",
              "headers": {
                "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({
              apiKey: 'string',
              uuid: '07243772-008a-42e1-ba37-c3807cebde8f',
              deviceId: 'string'
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/sauth/v3/auth/login/client/anonymous');
            $request->setMethod(HTTP_METH_POST);

            $request->setHeaders([
              'content-type' => 'application/json'
            ]);

            $request->setBody('{"apiKey":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f","deviceId":"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/sauth/v3/auth/login/client/anonymous")
              .header("content-type", "application/json")
              .body("{\"apiKey\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\",\"deviceId\":\"string\"}")
              .asString();
  /uauth/auth/login/user:
    post:
      tags:
        - Authorization
      summary: Log in as User
      description: |
        Authenticate as a User.

        **Note:** To perform operations within a Workspace, you must [select a Workspace](#operation/userProfileLoginUsingPOST).

        ---

        **Authentication:** Not required
      operationId: userLogin
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-UserAuthenticationRequest"
        required: true
      responses:
        "200":
          description: Login details
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-AuthenticationResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization/operation/userLogin
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/auth/login/user \
              --header 'content-type: application/json' \
              --data '{"username":"string","password":"string","deviceId":"string","externalProviderToken":"string","externalProviderType":"GOOGLE","organizationName":"string"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"username\":\"string\",\"password\":\"string\",\"deviceId\":\"string\",\"externalProviderToken\":\"string\",\"externalProviderType\":\"GOOGLE\",\"organizationName\":\"string\"}"

            headers = { 'content-type': "application/json" }

            conn.request("POST", "/uauth/auth/login/user", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "username": "string",
              "password": "string",
              "deviceId": "string",
              "externalProviderToken": "string",
              "externalProviderType": "GOOGLE",
              "organizationName": "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/uauth/auth/login/user");
            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": "/uauth/auth/login/user",
              "headers": {
                "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({
              username: 'string',
              password: 'string',
              deviceId: 'string',
              externalProviderToken: 'string',
              externalProviderType: 'GOOGLE',
              organizationName: 'string'
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/auth/login/user');
            $request->setMethod(HTTP_METH_POST);

            $request->setHeaders([
              'content-type' => 'application/json'
            ]);

            $request->setBody('{"username":"string","password":"string","deviceId":"string","externalProviderToken":"string","externalProviderType":"GOOGLE","organizationName":"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/uauth/auth/login/user")
              .header("content-type", "application/json")
              .body("{\"username\":\"string\",\"password\":\"string\",\"deviceId\":\"string\",\"externalProviderToken\":\"string\",\"externalProviderType\":\"GOOGLE\",\"organizationName\":\"string\"}")
              .asString();
  /uauth/auth/login/user/mfa/verification:
    post:
      tags:
        - Authorization
      summary: Verify User multi-factor authentication
      description: |
        Authenticate as a User with multi-factor authentication.

        **Note:** To perform operations within a Workspace, you must [select a Workspace](#operation/userProfileLoginUsingPOST).

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>
      operationId: userMfaLogin
      parameters:
        - $ref: "#/components/parameters/uauth-mfaType"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-MultiFactorAuthVerificationRequest"
        required: true
      responses:
        "200":
          description: Login details
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-AuthenticationResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization/operation/userMfaLogin
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url 'https://api.synerise.com/uauth/auth/login/user/mfa/verification?mfaType=SOME_STRING_VALUE' \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"verificationCode":"string","deviceId":"string","externalProviderToken":"string","externalProviderType":"GOOGLE","organizationName":"string"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"verificationCode\":\"string\",\"deviceId\":\"string\",\"externalProviderToken\":\"string\",\"externalProviderType\":\"GOOGLE\",\"organizationName\":\"string\"}"

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

            conn.request("POST", "/uauth/auth/login/user/mfa/verification?mfaType=SOME_STRING_VALUE", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "verificationCode": "string",
              "deviceId": "string",
              "externalProviderToken": "string",
              "externalProviderType": "GOOGLE",
              "organizationName": "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/uauth/auth/login/user/mfa/verification?mfaType=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": "/uauth/auth/login/user/mfa/verification?mfaType=SOME_STRING_VALUE",
              "headers": {
                "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({
              verificationCode: 'string',
              deviceId: 'string',
              externalProviderToken: 'string',
              externalProviderType: 'GOOGLE',
              organizationName: 'string'
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/auth/login/user/mfa/verification');
            $request->setMethod(HTTP_METH_POST);

            $request->setQueryData([
              'mfaType' => 'SOME_STRING_VALUE'
            ]);

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

            $request->setBody('{"verificationCode":"string","deviceId":"string","externalProviderToken":"string","externalProviderType":"GOOGLE","organizationName":"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/uauth/auth/login/user/mfa/verification?mfaType=SOME_STRING_VALUE")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"verificationCode\":\"string\",\"deviceId\":\"string\",\"externalProviderToken\":\"string\",\"externalProviderType\":\"GOOGLE\",\"organizationName\":\"string\"}")
              .asString();
  /uauth/auth/login/user/profile/{businessProfileUUID}:
    post:
      tags:
        - Authorization
      summary: Select Workspace
      description: |
        After logging in as a User, select a Workspace where you want to perform operations.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>
      operationId: userProfileLoginUsingPOST
      security:
        - JWT: []
      parameters:
        - $ref: "#/components/parameters/uauth-businessProfileId"
      responses:
        "200":
          description: Login details
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-AuthenticationResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
        "423":
          $ref: "#/components/responses/uauth-423"
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization/operation/userProfileLoginUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/auth/login/user/profile/%7BbusinessProfileUUID%7D \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            headers = { 'Authorization': "Bearer REPLACE_BEARER_TOKEN" }

            conn.request("POST", "/uauth/auth/login/user/profile/%7BbusinessProfileUUID%7D", headers=headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = null;

            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/uauth/auth/login/user/profile/%7BbusinessProfileUUID%7D");
            xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");

            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": "/uauth/auth/login/user/profile/%7BbusinessProfileUUID%7D",
              "headers": {
                "Authorization": "Bearer REPLACE_BEARER_TOKEN"
              }
            };

            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.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/auth/login/user/profile/%7BbusinessProfileUUID%7D');
            $request->setMethod(HTTP_METH_POST);

            $request->setHeaders([
              'Authorization' => 'Bearer REPLACE_BEARER_TOKEN'
            ]);

            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/uauth/auth/login/user/profile/%7BbusinessProfileUUID%7D")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /uauth/business-profile/:
    get:
      tags:
        - Authorization
      summary: Get Workspaces
      description: |
        Retrieve a list of Workspaces available to the user.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>
      operationId: getBusinessProfilesUsingGET
      parameters:
        - name: page
          in: query
          description: Page number
          required: false
          schema:
            type: integer
            format: int32
            default: 0
        - name: size
          in: query
          description: Page size
          required: false
          schema:
            type: integer
            format: int32
            default: 5000
        - name: query
          in: query
          description: Search query
          required: false
          schema:
            type: string
            default: ""
        - name: sort
          in: query
          description: Sort field
          required: false
          schema:
            type: string
            default: ""
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/uauth-BusinessProfileResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization/operation/getBusinessProfilesUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url 'https://api.synerise.com/uauth/business-profile/?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE&query=SOME_STRING_VALUE&sort=SOME_STRING_VALUE' \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            headers = { 'Authorization': "Bearer REPLACE_BEARER_TOKEN" }

            conn.request("GET", "/uauth/business-profile/?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE&query=SOME_STRING_VALUE&sort=SOME_STRING_VALUE", headers=headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = null;

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

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

            xhr.open("GET", "https://api.synerise.com/uauth/business-profile/?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE&query=SOME_STRING_VALUE&sort=SOME_STRING_VALUE");
            xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");

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

            const options = {
              "method": "GET",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/uauth/business-profile/?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE&query=SOME_STRING_VALUE&sort=SOME_STRING_VALUE",
              "headers": {
                "Authorization": "Bearer REPLACE_BEARER_TOKEN"
              }
            };

            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.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/business-profile/');
            $request->setMethod(HTTP_METH_GET);

            $request->setQueryData([
              'page' => 'SOME_INTEGER_VALUE',
              'size' => 'SOME_INTEGER_VALUE',
              'query' => 'SOME_STRING_VALUE',
              'sort' => 'SOME_STRING_VALUE'
            ]);

            $request->setHeaders([
              'Authorization' => 'Bearer REPLACE_BEARER_TOKEN'
            ]);

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

              echo $response->getBody();
            } catch (HttpException $ex) {
              echo $ex;
            }
        - lang: Java
          label: Java
          source: |-
            HttpResponse<String> response = Unirest.get("https://api.synerise.com/uauth/business-profile/?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE&query=SOME_STRING_VALUE&sort=SOME_STRING_VALUE")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /uauth/business-profile/ids:
    get:
      tags:
        - Authorization
      summary: Get Workspaces ids with user-specific data
      description: |
        Retrieve a list of workspace ids available to the user, with added user-specific data

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>
      operationId: getBusinessProfilesIdsUsingGET
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/uauth-BusinessProfileUserSpecific"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization/operation/getBusinessProfilesIdsUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/uauth/business-profile/ids \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            headers = { 'Authorization': "Bearer REPLACE_BEARER_TOKEN" }

            conn.request("GET", "/uauth/business-profile/ids", headers=headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = null;

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

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

            xhr.open("GET", "https://api.synerise.com/uauth/business-profile/ids");
            xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");

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

            const options = {
              "method": "GET",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/uauth/business-profile/ids",
              "headers": {
                "Authorization": "Bearer REPLACE_BEARER_TOKEN"
              }
            };

            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.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/business-profile/ids');
            $request->setMethod(HTTP_METH_GET);

            $request->setHeaders([
              'Authorization' => 'Bearer REPLACE_BEARER_TOKEN'
            ]);

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

              echo $response->getBody();
            } catch (HttpException $ex) {
              echo $ex;
            }
        - lang: Java
          label: Java
          source: |-
            HttpResponse<String> response = Unirest.get("https://api.synerise.com/uauth/business-profile/ids")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /uauth/business-profile/current:
    get:
      tags:
        - Authorization
      summary: Get current Workspace
      description: |
        Retrieve information about the currently selected workspace.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>
      operationId: getCurrentBusinessProfileUsingGET
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-CurrentBusinessProfileResponse"
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: Not Found
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization/operation/getCurrentBusinessProfileUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/uauth/business-profile/current \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            headers = { 'Authorization': "Bearer REPLACE_BEARER_TOKEN" }

            conn.request("GET", "/uauth/business-profile/current", headers=headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = null;

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

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

            xhr.open("GET", "https://api.synerise.com/uauth/business-profile/current");
            xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");

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

            const options = {
              "method": "GET",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/uauth/business-profile/current",
              "headers": {
                "Authorization": "Bearer REPLACE_BEARER_TOKEN"
              }
            };

            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.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/business-profile/current');
            $request->setMethod(HTTP_METH_GET);

            $request->setHeaders([
              'Authorization' => 'Bearer REPLACE_BEARER_TOKEN'
            ]);

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

              echo $response->getBody();
            } catch (HttpException $ex) {
              echo $ex;
            }
        - lang: Java
          label: Java
          source: |-
            HttpResponse<String> response = Unirest.get("https://api.synerise.com/uauth/business-profile/current")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /uauth/v2/auth/login/profile:
    post:
      summary: Log in as Workspace
      description: |
        Obtain a new Workspace JWT Token.

        ---

        **Authentication:** Not required
      tags:
        - Authorization
      operationId: profileLogin
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-BusinessProfileAuthenticationRequest"
        required: true
      responses:
        "200":
          description: New JWT token for Workspace authentication
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-TokenResponse"
        "400":
          description: Request malformed
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-Error"
        "401":
          description: Unauthorized, API key does not exist
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-Error"
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization/operation/profileLogin
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/v2/auth/login/profile \
              --header 'content-type: application/json' \
              --data '{"apiKey":"64c09614-1b2a-42f7-804d-f647243eb1ab"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"apiKey\":\"64c09614-1b2a-42f7-804d-f647243eb1ab\"}"

            headers = { 'content-type': "application/json" }

            conn.request("POST", "/uauth/v2/auth/login/profile", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "apiKey": "64c09614-1b2a-42f7-804d-f647243eb1ab"
            });

            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/uauth/v2/auth/login/profile");
            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": "/uauth/v2/auth/login/profile",
              "headers": {
                "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({apiKey: '64c09614-1b2a-42f7-804d-f647243eb1ab'}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/v2/auth/login/profile');
            $request->setMethod(HTTP_METH_POST);

            $request->setHeaders([
              'content-type' => 'application/json'
            ]);

            $request->setBody('{"apiKey":"64c09614-1b2a-42f7-804d-f647243eb1ab"}');

            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/uauth/v2/auth/login/profile")
              .header("content-type", "application/json")
              .body("{\"apiKey\":\"64c09614-1b2a-42f7-804d-f647243eb1ab\"}")
              .asString();
  /v4/auth/refresh/profile:
    get:
      summary: Refresh a Workspace token
      description: |
        Retrieve a refreshed JWT Token to prolong the Workspace session.

        ---

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

        **Authentication:** Not required
      operationId: RefreshABusinessProfileToken
      parameters:
        - $ref: "#/components/parameters/api-service-contentTypeHeader-apiv4"
        - $ref: "#/components/parameters/api-service-apiVersionHeader-apiv4"
      responses:
        "200":
          description: New authorization token
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/api-service-JWTtoken-apiv4"
        "401":
          $ref: "#/components/responses/api-service-401-apiv4"
        "403":
          $ref: "#/components/responses/api-service-403-apiv4"
      deprecated: true
      security:
        - JWT: []
      tags:
        - Authorization (deprecated)
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization-(deprecated)/operation/RefreshABusinessProfileToken
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/v4/auth/refresh/profile \
              --header 'Api-Version: SOME_STRING_VALUE' \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'Content-Type: SOME_STRING_VALUE'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            headers = {
                'Content-Type': "SOME_STRING_VALUE",
                'Api-Version': "SOME_STRING_VALUE",
                'Authorization': "Bearer REPLACE_BEARER_TOKEN"
                }

            conn.request("GET", "/v4/auth/refresh/profile", headers=headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = null;

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

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

            xhr.open("GET", "https://api.synerise.com/v4/auth/refresh/profile");
            xhr.setRequestHeader("Content-Type", "SOME_STRING_VALUE");
            xhr.setRequestHeader("Api-Version", "SOME_STRING_VALUE");
            xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");

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

            const options = {
              "method": "GET",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/v4/auth/refresh/profile",
              "headers": {
                "Content-Type": "SOME_STRING_VALUE",
                "Api-Version": "SOME_STRING_VALUE",
                "Authorization": "Bearer REPLACE_BEARER_TOKEN"
              }
            };

            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.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/v4/auth/refresh/profile');
            $request->setMethod(HTTP_METH_GET);

            $request->setHeaders([
              'Content-Type' => 'SOME_STRING_VALUE',
              'Api-Version' => 'SOME_STRING_VALUE',
              'Authorization' => 'Bearer REPLACE_BEARER_TOKEN'
            ]);

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

              echo $response->getBody();
            } catch (HttpException $ex) {
              echo $ex;
            }
        - lang: Java
          label: Java
          source: |-
            HttpResponse<String> response = Unirest.get("https://api.synerise.com/v4/auth/refresh/profile")
              .header("Content-Type", "SOME_STRING_VALUE")
              .header("Api-Version", "SOME_STRING_VALUE")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /v4/auth/login/profile:
    post:
      summary: Log in as Workspace
      description: |
        This endpoint is deprecated. Use [this endpoint](#operation/profileLogin) instead.

        ---

        **Authentication:** Not required
      operationId: LogInAsBusinessProfile
      parameters:
        - $ref: "#/components/parameters/api-service-apiVersionHeader-apiv4"
      requestBody:
        description: ""
        content:
          application/json:
            schema:
              required:
                - apiKey
              type: object
              properties:
                apiKey:
                  type: string
                  description: Workspace (formerly Business Profile) API key
                  example: 64c09614-1b2a-42f7-804d-f647243eb1ab
        required: true
      responses:
        "200":
          description: Workspace authorization token
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/api-service-JWTtoken-apiv4"
        "401":
          $ref: "#/components/responses/api-service-401-apiv4"
      deprecated: true
      tags:
        - Authorization (deprecated)
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization-(deprecated)/operation/LogInAsBusinessProfile
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/v4/auth/login/profile \
              --header 'Api-Version: SOME_STRING_VALUE' \
              --header 'content-type: application/json' \
              --data '{"apiKey":"64c09614-1b2a-42f7-804d-f647243eb1ab"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"apiKey\":\"64c09614-1b2a-42f7-804d-f647243eb1ab\"}"

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

            conn.request("POST", "/v4/auth/login/profile", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "apiKey": "64c09614-1b2a-42f7-804d-f647243eb1ab"
            });

            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/auth/login/profile");
            xhr.setRequestHeader("Api-Version", "SOME_STRING_VALUE");
            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/auth/login/profile",
              "headers": {
                "Api-Version": "SOME_STRING_VALUE",
                "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({apiKey: '64c09614-1b2a-42f7-804d-f647243eb1ab'}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/v4/auth/login/profile');
            $request->setMethod(HTTP_METH_POST);

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

            $request->setBody('{"apiKey":"64c09614-1b2a-42f7-804d-f647243eb1ab"}');

            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/auth/login/profile")
              .header("Api-Version", "SOME_STRING_VALUE")
              .header("content-type", "application/json")
              .body("{\"apiKey\":\"64c09614-1b2a-42f7-804d-f647243eb1ab\"}")
              .asString();
  /sauth/auth/login/client:
    post:
      tags:
        - Authorization (deprecated)
      summary: Authenticate as Profile
      description: |
        Obtain a new Profile JWT Token.

        ---

        **Authentication:** Not required
      operationId: LogInAsClient
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-LogInAsClientRequestBody"
            example:
              apiKey: 5AEAA3D5-E147-C7EB-invalid50109A3D1
              email: testDoc@example.com
              password: testPass1!
              uuid: b3f56868-9667-4843-a8e5-0509456baa9b
        required: true
      responses:
        "200":
          description: Profile authorization token
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-JWTtoken"
              example:
                token: eyJhbGciOiJSUzUxMiJ9.eyJzdinvalidwYmZkM2FkNDg2ZjQ3ZGRiMjE5MSIsImF1ZCI6IkFQSSIsInJsbSI6ImFub255bW91c19jbGllbnQiLCJjdGQiOjE1NTMwMDQxNTkxNTEsImVtbCI6IjYyMjM3NmY4LTAwMDAtMjIyMi1kN2Y5LTA3MGZhOTU2ZTk2M0Bhbm9ueW1vdXMuaW52YWxpZCIsImF1dGgiOiJINHNJQUFBQUFBQUFBSXVPQlFBcHUwd05BZ0FBQUE9PSIsImlzcyI6IlN5bmVyaXNlIiwiYnBpIjo0OCwiY2xJZCI6NDMzMjMwMjg4LCJleHAiOjE1NTMwMDcxNTksImFwayI6IjVBRUFBM0Q1LUUxNDctQzdFQi1ENTlFLUJDRjUwMTA5QTNEMSJ9.QOmSqrneR4mJFv4JdxTYsw_wGcDawDsVQuB-GVTcPPwijiP7lQ_Jzqq2Mypg1BS6WFlfGB8fzqCY9iMF_TdtjmoB4xBrY95ylU8L9qto-9Cw5x5TURkfxq31eryiHe2IteRAEtoVzYg2_s9QhlH6ANVcFOVp8dMno0V9bfMYfeSQa3FkjEbxFsseHkMOiADmp9-tOGtLXO942Ir-2W_Hz3Utlpt4erz0dVJBw8a-mFavPA8EEDWR7ACJNocrVHFkS3wFISh3LqLn6KkXiowaynKlJOEHGctuahzKmF3ZOJ1BvGgKohxF9OXvQs9IdmCfWhYsLr5Q2p04TJJ-MyvTipuggKVioh8mHmOFdfnN-Zused6tXzhZtKPUWTmM8cBKoAOBHExxcMQ8SVSjxnw_7_eLKm7S2wNpu0V-tiPZPCH4wYZXtWBYjmfy0V9ydjXnNunXfgxKixLeFNnONUXxEuqPLvM_xAuonQBXVN4nYrgJv8p8U6_ZlGMPjJq1szfcuBZnzI34LSEWx_nSof0XC5Czm8iG_ihG8naivNWS8h-Q-qKMP_3PPFsLSH4Egh03pH93EJUuNAeSO4RGfUX1wzMvrv1nBC1SM660uFMbq-wkplFBbKnHKMYe-qRs1-lZPG5PwPWJJdpGqOUzbnoMOJYmiq06OHHVQyJSkcEHLCk
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
              example:
                timestamp: 2018-06-07T07:17:41.734+00:00
                status: 401
                error: Unauthorized
                message: Access denied
                path: /auth/login/client
                traceId: 61b4aa7c0cb1167a
        "404":
          description: Profile not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
              example:
                timestamp: 2018-06-07T07:17:41.734+00:00
                status: 404
                error: Not Found
                message: Account does not exist
                path: /auth/login/client
                traceId: 61b4aa7c0cb1167a
        "406":
          $ref: "#/components/responses/sauth-406-account-locked"
        "423":
          $ref: "#/components/responses/sauth-423-device-control-enabled"
      deprecated: true
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization-(deprecated)/operation/LogInAsClient
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/auth/login/client \
              --header 'content-type: application/json' \
              --data '{"apiKey":"string","email":"string","password":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f","deviceId":"string"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"apiKey\":\"string\",\"email\":\"string\",\"password\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\",\"deviceId\":\"string\"}"

            headers = { 'content-type': "application/json" }

            conn.request("POST", "/sauth/auth/login/client", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "apiKey": "string",
              "email": "string",
              "password": "string",
              "uuid": "07243772-008a-42e1-ba37-c3807cebde8f",
              "deviceId": "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/sauth/auth/login/client");
            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": "/sauth/auth/login/client",
              "headers": {
                "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({
              apiKey: 'string',
              email: 'string',
              password: 'string',
              uuid: '07243772-008a-42e1-ba37-c3807cebde8f',
              deviceId: 'string'
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/sauth/auth/login/client');
            $request->setMethod(HTTP_METH_POST);

            $request->setHeaders([
              'content-type' => 'application/json'
            ]);

            $request->setBody('{"apiKey":"string","email":"string","password":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f","deviceId":"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/sauth/auth/login/client")
              .header("content-type", "application/json")
              .body("{\"apiKey\":\"string\",\"email\":\"string\",\"password\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\",\"deviceId\":\"string\"}")
              .asString();
  /sauth/auth/login/client/anonymous:
    post:
      tags:
        - Authorization (deprecated)
      summary: Authenticate anonymously
      description: |
        Obtain a new JWT for an anonymous Profile. The token can be used and refreshed in the same way as tokens of registered Profiles.

        ---

        **Authentication:** Not required
      operationId: LogInAnonymously
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-LogInAnonymouslyRequestBody"
        required: true
      responses:
        "200":
          description: Anonymous authorization token
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-JWTtoken"
              example:
                token: eyJhbGciOiJSUzUxMiJ9.eyJzdinvalidwYmZkM2FkNDg2ZjQ3ZGRiMjE5MSIsImF1ZCI6IkFQSSIsInJsbSI6ImFub255bW91c19jbGllbnQiLCJjdGQiOjE1NTMwMDQxNTkxNTEsImVtbCI6IjYyMjM3NmY4LTAwMDAtMjIyMi1kN2Y5LTA3MGZhOTU2ZTk2M0Bhbm9ueW1vdXMuaW52YWxpZCIsImF1dGgiOiJINHNJQUFBQUFBQUFBSXVPQlFBcHUwd05BZ0FBQUE9PSIsImlzcyI6IlN5bmVyaXNlIiwiYnBpIjo0OCwiY2xJZCI6NDMzMjMwMjg4LCJleHAiOjE1NTMwMDcxNTksImFwayI6IjVBRUFBM0Q1LUUxNDctQzdFQi1ENTlFLUJDRjUwMTA5QTNEMSJ9.QOmSqrneR4mJFv4JdxTYsw_wGcDawDsVQuB-GVTcPPwijiP7lQ_Jzqq2Mypg1BS6WFlfGB8fzqCY9iMF_TdtjmoB4xBrY95ylU8L9qto-9Cw5x5TURkfxq31eryiHe2IteRAEtoVzYg2_s9QhlH6ANVcFOVp8dMno0V9bfMYfeSQa3FkjEbxFsseHkMOiADmp9-tOGtLXO942Ir-2W_Hz3Utlpt4erz0dVJBw8a-mFavPA8EEDWR7ACJNocrVHFkS3wFISh3LqLn6KkXiowaynKlJOEHGctuahzKmF3ZOJ1BvGgKohxF9OXvQs9IdmCfWhYsLr5Q2p04TJJ-MyvTipuggKVioh8mHmOFdfnN-Zused6tXzhZtKPUWTmM8cBKoAOBHExxcMQ8SVSjxnw_7_eLKm7S2wNpu0V-tiPZPCH4wYZXtWBYjmfy0V9ydjXnNunXfgxKixLeFNnONUXxEuqPLvM_xAuonQBXVN4nYrgJv8p8U6_ZlGMPjJq1szfcuBZnzI34LSEWx_nSof0XC5Czm8iG_ihG8naivNWS8h-Q-qKMP_3PPFsLSH4Egh03pH93EJUuNAeSO4RGfUX1wzMvrv1nBC1SM660uFMbq-wkplFBbKnHKMYe-qRs1-lZPG5PwPWJJdpGqOUzbnoMOJYmiq06OHHVQyJSkcEHLCk
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
              example:
                timestamp: 2019-03-19T14:03:35.413+00:00
                status: 401
                error: Unauthorized
                message: Could not fetch ApiKey
                path: /auth/login/client/anonymous
      deprecated: true
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization-(deprecated)/operation/LogInAnonymously
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/auth/login/client/anonymous \
              --header 'content-type: application/json' \
              --data '{"apiKey":"string","deviceId":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"apiKey\":\"string\",\"deviceId\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\"}"

            headers = { 'content-type': "application/json" }

            conn.request("POST", "/sauth/auth/login/client/anonymous", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "apiKey": "string",
              "deviceId": "string",
              "uuid": "07243772-008a-42e1-ba37-c3807cebde8f"
            });

            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/sauth/auth/login/client/anonymous");
            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": "/sauth/auth/login/client/anonymous",
              "headers": {
                "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({
              apiKey: 'string',
              deviceId: 'string',
              uuid: '07243772-008a-42e1-ba37-c3807cebde8f'
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/sauth/auth/login/client/anonymous');
            $request->setMethod(HTTP_METH_POST);

            $request->setHeaders([
              'content-type' => 'application/json'
            ]);

            $request->setBody('{"apiKey":"string","deviceId":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f"}');

            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/sauth/auth/login/client/anonymous")
              .header("content-type", "application/json")
              .body("{\"apiKey\":\"string\",\"deviceId\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\"}")
              .asString();
  /sauth/auth/login/client/facebook:
    post:
      tags:
        - Authorization (deprecated)
      summary: Authenticate with Facebook
      description: |
        Use a Facebook token to obtain a Profile JWT. If a Facebook account is logging on for the first time, a self-managed account for the profile is registered in Synerise.

        ---

        **Authentication:** Not required
      operationId: AuthenticateWithFacebook
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-AuthenticateWithFacebookRequestBody"
            example: '{"facebookToken":"EAAfsMmaWLW0BAOZAqSoh8ZB5y2ZAixtSrlvvq3fpWGlcrfcoWOiAwBCZBpBDlzwHFSZB58nUBjOz2UMuopO7p2Q65QU1ZAiB2XaxRzje0bBd7Tu87f6C2pcoZAP65agWAF0ElZCNyKn4iAtFd9RhppkwU9ll0AokBZBnDroZCIaxE3IHSWGtE567AUrXkZAsQEjYsZAZAcYx0ki1w7XUToy9Wps9NA0OuBdMhruB3htuiukwOFAZDZD","apiKey":"5AEAA3D5-E147-C7EB-invalid","uuid":"91b8e035-dca3-4805-8915-2cfb01d31fde","deviceId":"deviceId","agreements":{"email":true,"sms":true,"push":true,"bluetooth":true,"rfid":true,"wifi":true},"attributes":{"property1":"string","property2":"string"}}'
        required: true
      responses:
        "200":
          description: Profile authorization token
          headers: {}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-JWTtoken"
      deprecated: true
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization-(deprecated)/operation/AuthenticateWithFacebook
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/auth/login/client/facebook \
              --header 'content-type: application/json' \
              --data '{"facebookToken":"string","apiKey":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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 = "{\"facebookToken\":\"string\",\"apiKey\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}"

            headers = { 'content-type': "application/json" }

            conn.request("POST", "/sauth/auth/login/client/facebook", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "facebookToken": "string",
              "apiKey": "string",
              "uuid": "07243772-008a-42e1-ba37-c3807cebde8f",
              "deviceId": "string",
              "agreements": {
                "email": true,
                "sms": true,
                "push": true,
                "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/sauth/auth/login/client/facebook");
            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": "/sauth/auth/login/client/facebook",
              "headers": {
                "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({
              facebookToken: 'string',
              apiKey: 'string',
              uuid: '07243772-008a-42e1-ba37-c3807cebde8f',
              deviceId: 'string',
              agreements: {email: true, sms: true, push: true, 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/sauth/auth/login/client/facebook');
            $request->setMethod(HTTP_METH_POST);

            $request->setHeaders([
              'content-type' => 'application/json'
            ]);

            $request->setBody('{"facebookToken":"string","apiKey":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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/sauth/auth/login/client/facebook")
              .header("content-type", "application/json")
              .body("{\"facebookToken\":\"string\",\"apiKey\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}")
              .asString();
  /sauth/auth/login/client/facebook/no-registration:
    post:
      tags:
        - Authorization (deprecated)
      summary: Authenticate with Facebook without registration
      description: |
        Use a Facebook token to obtain a Profile JWT without creating a self-managed account for this Profile in Synerise.

        ---

        **Authentication:** Not required
      operationId: AuthenticateWithFacebookWithoutRegistration
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-AuthenticateWithFacebookWithoutRegistrationRequestBody"
            example: '{"facebookToken":"EAAfsMmaWLW0BAOZAqSoh8ZB5y2ZAixtSrlvvq3fpWGlcrfcoWOiAwBCZBpBDlzwHFSZB58nUBjOz2UMuopO7p2Q65QU1ZAiB2XaxRzje0bBd7Tu87f6C2pcoZAP65agWAF0ElZCNyKn4iAtFd9RhppkwU9ll0AokBZBnDroZCIaxE3IHSWGtE567AUrXkZAsQEjYsZAZAcYx0ki1w7XUToy9Wps9NA0OuBdMhruB3htuiukwOFAZDZD","apiKey":"5AEAA3D5-E147-C7EB-invalid","uuid":"91b8e035-dca3-4805-8915-2cfb01d31fde","deviceId":"deviceId","agreements":{"email":true,"sms":true,"push":true,"bluetooth":true,"rfid":true,"wifi":true},"attributes":{"property1":"string","property2":"string"}}'
        required: true
      responses:
        "200":
          description: Profile authorization token
          headers: {}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-JWTtoken"
      deprecated: true
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization-(deprecated)/operation/AuthenticateWithFacebookWithoutRegistration
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/auth/login/client/facebook/no-registration \
              --header 'content-type: application/json' \
              --data '{"facebookToken":"string","apiKey":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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 = "{\"facebookToken\":\"string\",\"apiKey\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}"

            headers = { 'content-type': "application/json" }

            conn.request("POST", "/sauth/auth/login/client/facebook/no-registration", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "facebookToken": "string",
              "apiKey": "string",
              "uuid": "07243772-008a-42e1-ba37-c3807cebde8f",
              "deviceId": "string",
              "agreements": {
                "email": true,
                "sms": true,
                "push": true,
                "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/sauth/auth/login/client/facebook/no-registration");
            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": "/sauth/auth/login/client/facebook/no-registration",
              "headers": {
                "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({
              facebookToken: 'string',
              apiKey: 'string',
              uuid: '07243772-008a-42e1-ba37-c3807cebde8f',
              deviceId: 'string',
              agreements: {email: true, sms: true, push: true, 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/sauth/auth/login/client/facebook/no-registration');
            $request->setMethod(HTTP_METH_POST);

            $request->setHeaders([
              'content-type' => 'application/json'
            ]);

            $request->setBody('{"facebookToken":"string","apiKey":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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/sauth/auth/login/client/facebook/no-registration")
              .header("content-type", "application/json")
              .body("{\"facebookToken\":\"string\",\"apiKey\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}")
              .asString();
  /sauth/auth/login/client/oauth:
    post:
      tags:
        - Authorization (deprecated)
      summary: Authenticate with OAuth
      description: |
        Obtain a new JWT token by using OAuth authentication token.

        ---

        **Authentication:** Not required
      operationId: AuthenticateWithOauth
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-OauthAuthBody"
        required: true
      responses:
        "200":
          description: Profile authorization token
          headers: {}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-JWTtoken"
      deprecated: true
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization-(deprecated)/operation/AuthenticateWithOauth
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/auth/login/client/oauth \
              --header 'content-type: application/json' \
              --data '{"accessToken":"string","apiKey":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"bluetooth":false,"rfid":false,"wifi":false},"attributes":{"property1":null,"property2":null},"tags":["string"],"customId":"string"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"accessToken\":\"string\",\"apiKey\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"],\"customId\":\"string\"}"

            headers = { 'content-type': "application/json" }

            conn.request("POST", "/sauth/auth/login/client/oauth", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "accessToken": "string",
              "apiKey": "string",
              "uuid": "07243772-008a-42e1-ba37-c3807cebde8f",
              "deviceId": "string",
              "agreements": {
                "email": true,
                "sms": true,
                "push": true,
                "bluetooth": false,
                "rfid": false,
                "wifi": false
              },
              "attributes": {
                "property1": null,
                "property2": null
              },
              "tags": [
                "string"
              ],
              "customId": "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/sauth/auth/login/client/oauth");
            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": "/sauth/auth/login/client/oauth",
              "headers": {
                "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({
              accessToken: 'string',
              apiKey: 'string',
              uuid: '07243772-008a-42e1-ba37-c3807cebde8f',
              deviceId: 'string',
              agreements: {email: true, sms: true, push: true, bluetooth: false, rfid: false, wifi: false},
              attributes: {property1: null, property2: null},
              tags: ['string'],
              customId: 'string'
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/sauth/auth/login/client/oauth');
            $request->setMethod(HTTP_METH_POST);

            $request->setHeaders([
              'content-type' => 'application/json'
            ]);

            $request->setBody('{"accessToken":"string","apiKey":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"bluetooth":false,"rfid":false,"wifi":false},"attributes":{"property1":null,"property2":null},"tags":["string"],"customId":"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/sauth/auth/login/client/oauth")
              .header("content-type", "application/json")
              .body("{\"accessToken\":\"string\",\"apiKey\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"],\"customId\":\"string\"}")
              .asString();
  /sauth/auth/login/client/oauth/no-registration:
    post:
      tags:
        - Authorization (deprecated)
      summary: Authenticate with OAuth without registration
      description: |
        Use an OAuth token to obtain a Profile JWT. This method does not create a Profile in Synerise.

        ---

        **Authentication:** Not required
      operationId: loginWithOauthWithoutRegistrationUsingPOST
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-OauthAuthBody"
        required: true
      responses:
        "200":
          description: Profile authorization token
          headers: {}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-JWTtoken"
      deprecated: true
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization-(deprecated)/operation/loginWithOauthWithoutRegistrationUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/auth/login/client/oauth/no-registration \
              --header 'content-type: application/json' \
              --data '{"accessToken":"string","apiKey":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"bluetooth":false,"rfid":false,"wifi":false},"attributes":{"property1":null,"property2":null},"tags":["string"],"customId":"string"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"accessToken\":\"string\",\"apiKey\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"],\"customId\":\"string\"}"

            headers = { 'content-type': "application/json" }

            conn.request("POST", "/sauth/auth/login/client/oauth/no-registration", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "accessToken": "string",
              "apiKey": "string",
              "uuid": "07243772-008a-42e1-ba37-c3807cebde8f",
              "deviceId": "string",
              "agreements": {
                "email": true,
                "sms": true,
                "push": true,
                "bluetooth": false,
                "rfid": false,
                "wifi": false
              },
              "attributes": {
                "property1": null,
                "property2": null
              },
              "tags": [
                "string"
              ],
              "customId": "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/sauth/auth/login/client/oauth/no-registration");
            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": "/sauth/auth/login/client/oauth/no-registration",
              "headers": {
                "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({
              accessToken: 'string',
              apiKey: 'string',
              uuid: '07243772-008a-42e1-ba37-c3807cebde8f',
              deviceId: 'string',
              agreements: {email: true, sms: true, push: true, bluetooth: false, rfid: false, wifi: false},
              attributes: {property1: null, property2: null},
              tags: ['string'],
              customId: 'string'
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/sauth/auth/login/client/oauth/no-registration');
            $request->setMethod(HTTP_METH_POST);

            $request->setHeaders([
              'content-type' => 'application/json'
            ]);

            $request->setBody('{"accessToken":"string","apiKey":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"bluetooth":false,"rfid":false,"wifi":false},"attributes":{"property1":null,"property2":null},"tags":["string"],"customId":"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/sauth/auth/login/client/oauth/no-registration")
              .header("content-type", "application/json")
              .body("{\"accessToken\":\"string\",\"apiKey\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"],\"customId\":\"string\"}")
              .asString();
  /sauth/auth/login/client/apple:
    post:
      tags:
        - Authorization (deprecated)
      summary: Authenticate with Sign in with Apple
      description: |
        Obtain a new JWT token by using Sign in with Apple authentication token.

        ---

        **Authentication:** Not required
      operationId: AuthenticateWithApple
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-AuthenticateWithAppleRequestBody"
            example: '{"accessToken":"EAAfsMmaWLW0BAOZAqSoh8ZB5y2ZAixtSrlvvq3fpWGlcrfcoWOiAwBCZBpBDlzwHFSZB58nUBjOz2UMuopO7p2Q65QU1ZAiB2XaxRzje0bBd7Tu87f6C2pcoZAP65agWAF0ElZCNyKn4iAtFd9RhppkwU9ll0AokBZBnDroZCIaxE3IHSWGtE567AUrXkZAsQEjYsZAZAcYx0ki1w7XUToy9Wps9NA0OuBdMhruB3htuiukwOFAZDZD","apiKey":"5AEAA3D5-E147-C7EB-invalid","uuid":"91b8e035-dca3-4805-8915-2cfb01d31fde","deviceId":"deviceId","agreements":{"email":true,"sms":true,"push":true,"bluetooth":true,"rfid":true,"wifi":true},"attributes":{"property1":"string","property2":"string"}}'
        required: true
      responses:
        "200":
          description: Profile authorization token
          headers: {}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-JWTtoken"
      deprecated: true
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization-(deprecated)/operation/AuthenticateWithApple
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/auth/login/client/apple \
              --header 'content-type: application/json' \
              --data '{"accessToken":"string","apiKey":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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 = "{\"accessToken\":\"string\",\"apiKey\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}"

            headers = { 'content-type': "application/json" }

            conn.request("POST", "/sauth/auth/login/client/apple", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "accessToken": "string",
              "apiKey": "string",
              "uuid": "07243772-008a-42e1-ba37-c3807cebde8f",
              "deviceId": "string",
              "agreements": {
                "email": true,
                "sms": true,
                "push": true,
                "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/sauth/auth/login/client/apple");
            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": "/sauth/auth/login/client/apple",
              "headers": {
                "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({
              accessToken: 'string',
              apiKey: 'string',
              uuid: '07243772-008a-42e1-ba37-c3807cebde8f',
              deviceId: 'string',
              agreements: {email: true, sms: true, push: true, 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/sauth/auth/login/client/apple');
            $request->setMethod(HTTP_METH_POST);

            $request->setHeaders([
              'content-type' => 'application/json'
            ]);

            $request->setBody('{"accessToken":"string","apiKey":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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/sauth/auth/login/client/apple")
              .header("content-type", "application/json")
              .body("{\"accessToken\":\"string\",\"apiKey\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}")
              .asString();
  /sauth/auth/login/client/apple/no-registration:
    post:
      tags:
        - Authorization (deprecated)
      summary: Authenticate with Sign in with Apple without registration
      description: |
        Use an Apple token to obtain a Profile JWT. This method does not create a Profile in Synerise.

        ---

        **Authentication:** Not required
      operationId: loginWithAppleWithoutRegistrationUsingPOST
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-LoginWithAppleWithoutRegistrationRequestBody"
        required: true
      responses:
        "200":
          description: Profile authorization token
          headers: {}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-JWTtoken"
      deprecated: true
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization-(deprecated)/operation/loginWithAppleWithoutRegistrationUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/auth/login/client/apple/no-registration \
              --header 'content-type: application/json' \
              --data '{"accessToken":"string","apiKey":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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 = "{\"accessToken\":\"string\",\"apiKey\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}"

            headers = { 'content-type': "application/json" }

            conn.request("POST", "/sauth/auth/login/client/apple/no-registration", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "accessToken": "string",
              "apiKey": "string",
              "uuid": "07243772-008a-42e1-ba37-c3807cebde8f",
              "deviceId": "string",
              "agreements": {
                "email": true,
                "sms": true,
                "push": true,
                "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/sauth/auth/login/client/apple/no-registration");
            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": "/sauth/auth/login/client/apple/no-registration",
              "headers": {
                "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({
              accessToken: 'string',
              apiKey: 'string',
              uuid: '07243772-008a-42e1-ba37-c3807cebde8f',
              deviceId: 'string',
              agreements: {email: true, sms: true, push: true, 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/sauth/auth/login/client/apple/no-registration');
            $request->setMethod(HTTP_METH_POST);

            $request->setHeaders([
              'content-type' => 'application/json'
            ]);

            $request->setBody('{"accessToken":"string","apiKey":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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/sauth/auth/login/client/apple/no-registration")
              .header("content-type", "application/json")
              .body("{\"accessToken\":\"string\",\"apiKey\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}")
              .asString();
  /sauth/auth/refresh/client:
    get:
      tags:
        - Authorization (deprecated)
      summary: Refresh a Profile token
      description: |
        Retrieve a refreshed JWT Token to prolong the Profile session.

        The current token must still be active at the time of the request.

        ---

        **API consumers:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=authenticateUsingPOST_v3" target="_blank" rel="noopener">Profile (Client)</a>, <a href="/api-reference/authorization?tag=Authorization&amp;operationId=LogInAnonymouslyV3" target="_blank" rel="noopener">Anonymous Profile</a>

        **Authentication:** Not required
      operationId: RefreshAClientToken
      responses:
        "200":
          description: New authorization token
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-JWTtoken"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
              example:
                timestamp: 2019-03-19T13:57:33.244+00:00
                status: 401
                error: Unauthorized
                message: Full authentication is required to access this resource
                path: /auth/refresh/client
      security:
        - JWT: []
      deprecated: true
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization-(deprecated)/operation/RefreshAClientToken
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/sauth/auth/refresh/client \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            headers = { 'Authorization': "Bearer REPLACE_BEARER_TOKEN" }

            conn.request("GET", "/sauth/auth/refresh/client", headers=headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = null;

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

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

            xhr.open("GET", "https://api.synerise.com/sauth/auth/refresh/client");
            xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");

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

            const options = {
              "method": "GET",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/sauth/auth/refresh/client",
              "headers": {
                "Authorization": "Bearer REPLACE_BEARER_TOKEN"
              }
            };

            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.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/sauth/auth/refresh/client');
            $request->setMethod(HTTP_METH_GET);

            $request->setHeaders([
              'Authorization' => 'Bearer REPLACE_BEARER_TOKEN'
            ]);

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

              echo $response->getBody();
            } catch (HttpException $ex) {
              echo $ex;
            }
        - lang: Java
          label: Java
          source: |-
            HttpResponse<String> response = Unirest.get("https://api.synerise.com/sauth/auth/refresh/client")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /sauth/v2/auth/refresh/client:
    post:
      deprecated: true
      tags:
        - Authorization (deprecated)
      summary: Refresh a Profile token
      description: |
        This method is deprecated. Use [the v3 method](#operation/RefreshAClientTokenV3) instead.

        Retrieve a refreshed JWT Token to prolong the session.

        The current token must still be active at the time of the request.

        ---

        **API consumers:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=authenticateUsingPOST_v3" target="_blank" rel="noopener">Profile (Client)</a>, <a href="/api-reference/authorization?tag=Authorization&amp;operationId=LogInAnonymouslyV3" target="_blank" rel="noopener">Anonymous Profile</a>

        **Authentication:** Not required
      operationId: RefreshAClientTokenV2
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-ClientRefreshRequest"
        required: true
      responses:
        "200":
          description: New authorization token
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-JWTtoken"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
              example:
                timestamp: 2019-03-19T13:57:33.244+00:00
                status: 401
                error: Unauthorized
                message: Full authentication is required to access this resource
                path: /v2/auth/refresh/client
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization-(deprecated)/operation/RefreshAClientTokenV2
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/v2/auth/refresh/client \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"apiKey":"string"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"apiKey\":\"string\"}"

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

            conn.request("POST", "/sauth/v2/auth/refresh/client", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "apiKey": "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/sauth/v2/auth/refresh/client");
            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": "/sauth/v2/auth/refresh/client",
              "headers": {
                "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({apiKey: 'string'}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/sauth/v2/auth/refresh/client');
            $request->setMethod(HTTP_METH_POST);

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

            $request->setBody('{"apiKey":"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/sauth/v2/auth/refresh/client")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"apiKey\":\"string\"}")
              .asString();
  /sauth/v2/auth/login/client:
    post:
      deprecated: true
      tags:
        - Authorization (deprecated)
      summary: Authenticate as Profile
      description: |
        This method is deprecated. Use [the v3 method](#operation/authenticateUsingPOST_v3) instead.

        Obtain a new JWT token for a Profile. If an account for the Profile does not exist and the `identityProvider` is different than `SYNERISE`, this request creates an account.


        ---

        **Authentication:** Not required
      operationId: authenticateUsingPOST_v2
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-AuthenticationRequestV2_and_3"
      responses:
        "200":
          description: Profile authorization token
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-JWTtoken"
              example:
                token: eyJhbGciOiJSUzUxMiJ9.eyJzdinvalidwYmZkM2FkNDg2ZjQ3ZGRiMjE5MSIsImF1ZCI6IkFQSSIsInJsbSI6ImFub255bW91c19jbGllbnQiLCJjdGQiOjE1NTMwMDQxNTkxNTEsImVtbCI6IjYyMjM3NmY4LTAwMDAtMjIyMi1kN2Y5LTA3MGZhOTU2ZTk2M0Bhbm9ueW1vdXMuaW52YWxpZCIsImF1dGgiOiJINHNJQUFBQUFBQUFBSXVPQlFBcHUwd05BZ0FBQUE9PSIsImlzcyI6IlN5bmVyaXNlIiwiYnBpIjo0OCwiY2xJZCI6NDMzMjMwMjg4LCJleHAiOjE1NTMwMDcxNTksImFwayI6IjVBRUFBM0Q1LUUxNDctQzdFQi1ENTlFLUJDRjUwMTA5QTNEMSJ9.QOmSqrneR4mJFv4JdxTYsw_wGcDawDsVQuB-GVTcPPwijiP7lQ_Jzqq2Mypg1BS6WFlfGB8fzqCY9iMF_TdtjmoB4xBrY95ylU8L9qto-9Cw5x5TURkfxq31eryiHe2IteRAEtoVzYg2_s9QhlH6ANVcFOVp8dMno0V9bfMYfeSQa3FkjEbxFsseHkMOiADmp9-tOGtLXO942Ir-2W_Hz3Utlpt4erz0dVJBw8a-mFavPA8EEDWR7ACJNocrVHFkS3wFISh3LqLn6KkXiowaynKlJOEHGctuahzKmF3ZOJ1BvGgKohxF9OXvQs9IdmCfWhYsLr5Q2p04TJJ-MyvTipuggKVioh8mHmOFdfnN-Zused6tXzhZtKPUWTmM8cBKoAOBHExxcMQ8SVSjxnw_7_eLKm7S2wNpu0V-tiPZPCH4wYZXtWBYjmfy0V9ydjXnNunXfgxKixLeFNnONUXxEuqPLvM_xAuonQBXVN4nYrgJv8p8U6_ZlGMPjJq1szfcuBZnzI34LSEWx_nSof0XC5Czm8iG_ihG8naivNWS8h-Q-qKMP_3PPFsLSH4Egh03pH93EJUuNAeSO4RGfUX1wzMvrv1nBC1SM660uFMbq-wkplFBbKnHKMYe-qRs1-lZPG5PwPWJJdpGqOUzbnoMOJYmiq06OHHVQyJSkcEHLCk
        "400":
          description: Request failed, see error message for details
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/sauth-4xx-base"
                  - type: object
                    properties:
                      errorCode:
                        type: string
                        description: |
                          Error code, if applicable.
                          - `SAU-601`: Device ID is required and missing
        "401":
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
              example:
                timestamp: 2018-06-07T07:17:41.734+00:00
                status: 401
                error: Unauthorized
                message: Access denied
                path: /v2/auth/login/client
                traceId: 61b4aa7c0cb1167a
        "403":
          $ref: "#/components/responses/sauth-403-login"
        "404":
          description: Profile not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
              example:
                timestamp: 2018-06-07T07:17:41.734+00:00
                status: 404
                error: Not Found
                message: Account does not exist
                path: /v2/auth/login/client
                traceId: 61b4aa7c0cb1167a
        "406":
          $ref: "#/components/responses/sauth-406-account-locked"
        "423":
          $ref: "#/components/responses/sauth-423-device-control-enabled"
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization-(deprecated)/operation/authenticateUsingPOST_v2
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/v2/auth/login/client \
              --header 'content-type: application/json' \
              --data '{"apiKey":"string","identityProvider":"SYNERISE","identityProviderToken":"string","email":"string","customId":null,"password":"string","uuid":"string","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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 = "{\"apiKey\":\"string\",\"identityProvider\":\"SYNERISE\",\"identityProviderToken\":\"string\",\"email\":\"string\",\"customId\":null,\"password\":\"string\",\"uuid\":\"string\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}"

            headers = { 'content-type': "application/json" }

            conn.request("POST", "/sauth/v2/auth/login/client", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "apiKey": "string",
              "identityProvider": "SYNERISE",
              "identityProviderToken": "string",
              "email": "string",
              "customId": null,
              "password": "string",
              "uuid": "string",
              "deviceId": "string",
              "agreements": {
                "email": true,
                "sms": true,
                "push": true,
                "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/sauth/v2/auth/login/client");
            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": "/sauth/v2/auth/login/client",
              "headers": {
                "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({
              apiKey: 'string',
              identityProvider: 'SYNERISE',
              identityProviderToken: 'string',
              email: 'string',
              customId: null,
              password: 'string',
              uuid: 'string',
              deviceId: 'string',
              agreements: {email: true, sms: true, push: true, 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/sauth/v2/auth/login/client');
            $request->setMethod(HTTP_METH_POST);

            $request->setHeaders([
              'content-type' => 'application/json'
            ]);

            $request->setBody('{"apiKey":"string","identityProvider":"SYNERISE","identityProviderToken":"string","email":"string","customId":null,"password":"string","uuid":"string","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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/sauth/v2/auth/login/client")
              .header("content-type", "application/json")
              .body("{\"apiKey\":\"string\",\"identityProvider\":\"SYNERISE\",\"identityProviderToken\":\"string\",\"email\":\"string\",\"customId\":null,\"password\":\"string\",\"uuid\":\"string\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}")
              .asString();
  /sauth/v2/auth/login/client/conditional:
    post:
      deprecated: true
      summary: Authenticate as Profile (conditional)
      description: |
        This method is deprecated. Use [the v3 method](#operation/authenticateConditionalUsingPOSTv3) instead.      


        Obtain a new JWT token for a Profile.

        - If the account does not exist, an account is not created.
        - If any additional conditions are required for logging in, the response is HTTP200 and lists the conditions.
        - Note that using this endpoint requires authenticating as an anonymous Profile first.


        ---

        **Authentication:** Not required
      security:
        - JWT: []
      tags:
        - Authorization (deprecated)
      operationId: authenticateConditionalUsingPOST
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-AuthenticationRequestV2_and_3"
      responses:
        "200":
          description: Details of the login operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-ConditionalAuthenticationResponse"
        "400":
          description: Request failed, see error message for details
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/sauth-4xx-base"
                  - type: object
                    properties:
                      errorCode:
                        type: string
                        description: |
                          Error code, if applicable.
                          - `SAU-601`: Device ID is required and missing
        "401":
          description: See error message for details
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
        "403":
          $ref: "#/components/responses/sauth-403-login"
        "404":
          description: Profile not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
              example:
                timestamp: 2018-06-07T07:17:41.734+00:00
                status: 404
                error: Not Found
                message: Account does not exist
                path: /v2/auth/login/client/conditional
                traceId: 61b4aa7c0cb1167a
        "406":
          $ref: "#/components/responses/sauth-406-account-locked"
        "423":
          $ref: "#/components/responses/sauth-423-device-control-enabled"
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization-(deprecated)/operation/authenticateConditionalUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/v2/auth/login/client/conditional \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"apiKey":"string","identityProvider":"SYNERISE","identityProviderToken":"string","email":"string","customId":null,"password":"string","uuid":"string","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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 = "{\"apiKey\":\"string\",\"identityProvider\":\"SYNERISE\",\"identityProviderToken\":\"string\",\"email\":\"string\",\"customId\":null,\"password\":\"string\",\"uuid\":\"string\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}"

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

            conn.request("POST", "/sauth/v2/auth/login/client/conditional", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "apiKey": "string",
              "identityProvider": "SYNERISE",
              "identityProviderToken": "string",
              "email": "string",
              "customId": null,
              "password": "string",
              "uuid": "string",
              "deviceId": "string",
              "agreements": {
                "email": true,
                "sms": true,
                "push": true,
                "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/sauth/v2/auth/login/client/conditional");
            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": "/sauth/v2/auth/login/client/conditional",
              "headers": {
                "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({
              apiKey: 'string',
              identityProvider: 'SYNERISE',
              identityProviderToken: 'string',
              email: 'string',
              customId: null,
              password: 'string',
              uuid: 'string',
              deviceId: 'string',
              agreements: {email: true, sms: true, push: true, 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/sauth/v2/auth/login/client/conditional');
            $request->setMethod(HTTP_METH_POST);

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

            $request->setBody('{"apiKey":"string","identityProvider":"SYNERISE","identityProviderToken":"string","email":"string","customId":null,"password":"string","uuid":"string","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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/sauth/v2/auth/login/client/conditional")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"apiKey\":\"string\",\"identityProvider\":\"SYNERISE\",\"identityProviderToken\":\"string\",\"email\":\"string\",\"customId\":null,\"password\":\"string\",\"uuid\":\"string\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}")
              .asString();
  /sauth/v2/auth/login/client/anonymous:
    post:
      deprecated: true
      tags:
        - Authorization (deprecated)
      summary: Authenticate anonymously
      description: |
        This method is deprecated. Use [the v3 method](#operation/LogInAnonymouslyV3) instead.

        Obtain a new JWT for an anonymous Profile. The token can be used and refreshed in the same way
        as tokens of registered Profiles.


        ---

        **Authentication:** Not required
      operationId: LogInAnonymouslyV2
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-LogInAnonymouslyV2RequestBody"
        required: true
      responses:
        "200":
          description: Anonymous authorization token
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-JWTtoken"
              example:
                token: eyJhbGciOiJSUzUxMiJ9.eyJzdinvalidwYmZkM2FkNDg2ZjQ3ZGRiMjE5MSIsImF1ZCI6IkFQSSIsInJsbSI6ImFub255bW91c19jbGllbnQiLCJjdGQiOjE1NTMwMDQxNTkxNTEsImVtbCI6IjYyMjM3NmY4LTAwMDAtMjIyMi1kN2Y5LTA3MGZhOTU2ZTk2M0Bhbm9ueW1vdXMuaW52YWxpZCIsImF1dGgiOiJINHNJQUFBQUFBQUFBSXVPQlFBcHUwd05BZ0FBQUE9PSIsImlzcyI6IlN5bmVyaXNlIiwiYnBpIjo0OCwiY2xJZCI6NDMzMjMwMjg4LCJleHAiOjE1NTMwMDcxNTksImFwayI6IjVBRUFBM0Q1LUUxNDctQzdFQi1ENTlFLUJDRjUwMTA5QTNEMSJ9.QOmSqrneR4mJFv4JdxTYsw_wGcDawDsVQuB-GVTcPPwijiP7lQ_Jzqq2Mypg1BS6WFlfGB8fzqCY9iMF_TdtjmoB4xBrY95ylU8L9qto-9Cw5x5TURkfxq31eryiHe2IteRAEtoVzYg2_s9QhlH6ANVcFOVp8dMno0V9bfMYfeSQa3FkjEbxFsseHkMOiADmp9-tOGtLXO942Ir-2W_Hz3Utlpt4erz0dVJBw8a-mFavPA8EEDWR7ACJNocrVHFkS3wFISh3LqLn6KkXiowaynKlJOEHGctuahzKmF3ZOJ1BvGgKohxF9OXvQs9IdmCfWhYsLr5Q2p04TJJ-MyvTipuggKVioh8mHmOFdfnN-Zused6tXzhZtKPUWTmM8cBKoAOBHExxcMQ8SVSjxnw_7_eLKm7S2wNpu0V-tiPZPCH4wYZXtWBYjmfy0V9ydjXnNunXfgxKixLeFNnONUXxEuqPLvM_xAuonQBXVN4nYrgJv8p8U6_ZlGMPjJq1szfcuBZnzI34LSEWx_nSof0XC5Czm8iG_ihG8naivNWS8h-Q-qKMP_3PPFsLSH4Egh03pH93EJUuNAeSO4RGfUX1wzMvrv1nBC1SM660uFMbq-wkplFBbKnHKMYe-qRs1-lZPG5PwPWJJdpGqOUzbnoMOJYmiq06OHHVQyJSkcEHLCk
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
              example:
                timestamp: 2019-03-19T14:03:35.413+00:00
                status: 401
                error: Unauthorized
                message: Could not fetch ApiKey
                path: /v2/auth/login/client/anonymous
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization-(deprecated)/operation/LogInAnonymouslyV2
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/v2/auth/login/client/anonymous \
              --header 'content-type: application/json' \
              --data '{"apiKey":"string","deviceId":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"apiKey\":\"string\",\"deviceId\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\"}"

            headers = { 'content-type': "application/json" }

            conn.request("POST", "/sauth/v2/auth/login/client/anonymous", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "apiKey": "string",
              "deviceId": "string",
              "uuid": "07243772-008a-42e1-ba37-c3807cebde8f"
            });

            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/sauth/v2/auth/login/client/anonymous");
            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": "/sauth/v2/auth/login/client/anonymous",
              "headers": {
                "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({
              apiKey: 'string',
              deviceId: 'string',
              uuid: '07243772-008a-42e1-ba37-c3807cebde8f'
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/sauth/v2/auth/login/client/anonymous');
            $request->setMethod(HTTP_METH_POST);

            $request->setHeaders([
              'content-type' => 'application/json'
            ]);

            $request->setBody('{"apiKey":"string","deviceId":"string","uuid":"07243772-008a-42e1-ba37-c3807cebde8f"}');

            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/sauth/v2/auth/login/client/anonymous")
              .header("content-type", "application/json")
              .body("{\"apiKey\":\"string\",\"deviceId\":\"string\",\"uuid\":\"07243772-008a-42e1-ba37-c3807cebde8f\"}")
              .asString();
  /sauth/v2/auth/server/login/client:
    post:
      deprecated: true
      tags:
        - Authorization (deprecated)
      summary: Authenticate as Profile
      description: |
        This method is deprecated. Use [the v3 method](#operation/authenticateViaServerV3) instead.

        Obtain a new JWT for a Profile. It is designed to be used from backend server. If an account for the Profile does not exist and the `identityProvider` is different than `SYNERISE`, this request creates an account.


        ---

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

        **API key permission required:** `SAUTH_SERVER_LOGIN_CLIENT_CREATE`
      operationId: authenticateViaServerV2
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-ServerAuthenticationRequestV2_and_3"
      responses:
        "200":
          description: Profile authorization token
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-JWTtokenV3"
              example:
                token: eyJhbGciOiJSUzUxMiJ9.eyJzdinvalidwYmZkM2FkNDg2ZjQ3ZGRiMjE5MSIsImF1ZCI6IkFQSSIsInJsbSI6ImFub255bW91c19jbGllbnQiLCJjdGQiOjE1NTMwMDQxNTkxNTEsImVtbCI6IjYyMjM3NmY4LTAwMDAtMjIyMi1kN2Y5LTA3MGZhOTU2ZTk2M0Bhbm9ueW1vdXMuaW52YWxpZCIsImF1dGgiOiJINHNJQUFBQUFBQUFBSXVPQlFBcHUwd05BZ0FBQUE9PSIsImlzcyI6IlN5bmVyaXNlIiwiYnBpIjo0OCwiY2xJZCI6NDMzMjMwMjg4LCJleHAiOjE1NTMwMDcxNTksImFwayI6IjVBRUFBM0Q1LUUxNDctQzdFQi1ENTlFLUJDRjUwMTA5QTNEMSJ9.QOmSqrneR4mJFv4JdxTYsw_wGcDawDsVQuB-GVTcPPwijiP7lQ_Jzqq2Mypg1BS6WFlfGB8fzqCY9iMF_TdtjmoB4xBrY95ylU8L9qto-9Cw5x5TURkfxq31eryiHe2IteRAEtoVzYg2_s9QhlH6ANVcFOVp8dMno0V9bfMYfeSQa3FkjEbxFsseHkMOiADmp9-tOGtLXO942Ir-2W_Hz3Utlpt4erz0dVJBw8a-mFavPA8EEDWR7ACJNocrVHFkS3wFISh3LqLn6KkXiowaynKlJOEHGctuahzKmF3ZOJ1BvGgKohxF9OXvQs9IdmCfWhYsLr5Q2p04TJJ-MyvTipuggKVioh8mHmOFdfnN-Zused6tXzhZtKPUWTmM8cBKoAOBHExxcMQ8SVSjxnw_7_eLKm7S2wNpu0V-tiPZPCH4wYZXtWBYjmfy0V9ydjXnNunXfgxKixLeFNnONUXxEuqPLvM_xAuonQBXVN4nYrgJv8p8U6_ZlGMPjJq1szfcuBZnzI34LSEWx_nSof0XC5Czm8iG_ihG8naivNWS8h-Q-qKMP_3PPFsLSH4Egh03pH93EJUuNAeSO4RGfUX1wzMvrv1nBC1SM660uFMbq-wkplFBbKnHKMYe-qRs1-lZPG5PwPWJJdpGqOUzbnoMOJYmiq06OHHVQyJSkcEHLCk
        "400":
          description: Request failed, see error message for details
          content:
            application/json:
              schema:
                allOf:
                  - $ref: "#/components/schemas/sauth-4xx-base"
                  - type: object
                    properties:
                      errorCode:
                        type: string
                        description: |
                          Error code, if applicable.
                          - `SAU-601`: Device ID is required and missing
        "401":
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
              example:
                timestamp: 2018-06-07T07:17:41.734+00:00
                status: 401
                error: Unauthorized
                message: Access denied
                path: /v3/auth/login/client
                traceId: 61b4aa7c0cb1167a
        "403":
          $ref: "#/components/responses/sauth-403-login"
        "404":
          description: Profile not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-4xx-base"
              example:
                timestamp: 2018-06-07T07:17:41.734+00:00
                status: 404
                error: Not Found
                message: Account does not exist
                path: /v3/auth/login/client
                traceId: 61b4aa7c0cb1167a
        "406":
          $ref: "#/components/responses/sauth-406-account-locked"
        "423":
          $ref: "#/components/responses/sauth-423-device-control-enabled"
      x-snr-doc-urls:
        - /api-reference/authorization#tag/Authorization-(deprecated)/operation/authenticateViaServerV2
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/v2/auth/server/login/client \
              --header 'content-type: application/json' \
              --data '{"ipAddress":"string","apiKey":"string","identityProvider":"SYNERISE","identityProviderToken":"string","email":"string","customId":null,"password":"string","uuid":"string","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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 = "{\"ipAddress\":\"string\",\"apiKey\":\"string\",\"identityProvider\":\"SYNERISE\",\"identityProviderToken\":\"string\",\"email\":\"string\",\"customId\":null,\"password\":\"string\",\"uuid\":\"string\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}"

            headers = { 'content-type': "application/json" }

            conn.request("POST", "/sauth/v2/auth/server/login/client", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "ipAddress": "string",
              "apiKey": "string",
              "identityProvider": "SYNERISE",
              "identityProviderToken": "string",
              "email": "string",
              "customId": null,
              "password": "string",
              "uuid": "string",
              "deviceId": "string",
              "agreements": {
                "email": true,
                "sms": true,
                "push": true,
                "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/sauth/v2/auth/server/login/client");
            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": "/sauth/v2/auth/server/login/client",
              "headers": {
                "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({
              ipAddress: 'string',
              apiKey: 'string',
              identityProvider: 'SYNERISE',
              identityProviderToken: 'string',
              email: 'string',
              customId: null,
              password: 'string',
              uuid: 'string',
              deviceId: 'string',
              agreements: {email: true, sms: true, push: true, 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/sauth/v2/auth/server/login/client');
            $request->setMethod(HTTP_METH_POST);

            $request->setHeaders([
              'content-type' => 'application/json'
            ]);

            $request->setBody('{"ipAddress":"string","apiKey":"string","identityProvider":"SYNERISE","identityProviderToken":"string","email":"string","customId":null,"password":"string","uuid":"string","deviceId":"string","agreements":{"email":true,"sms":true,"push":true,"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/sauth/v2/auth/server/login/client")
              .header("content-type", "application/json")
              .body("{\"ipAddress\":\"string\",\"apiKey\":\"string\",\"identityProvider\":\"SYNERISE\",\"identityProviderToken\":\"string\",\"email\":\"string\",\"customId\":null,\"password\":\"string\",\"uuid\":\"string\",\"deviceId\":\"string\",\"agreements\":{\"email\":true,\"sms\":true,\"push\":true,\"bluetooth\":false,\"rfid\":false,\"wifi\":false},\"attributes\":{\"property1\":null,\"property2\":null},\"tags\":[\"string\"]}")
              .asString();
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.
    TrackerKey:
      type: apiKey
      name: token
      in: query
      description: Authorization by tracker key sent as a query parameter. This is the same key as used in the website tracking code.
  schemas:
    api-service-HTTP400-apiv4:
      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:
            $ref: "#/components/schemas/api-service-Error-apiv4"
    api-service-Error-apiv4:
      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
    api-service-JWTtoken-apiv4:
      type: object
      properties:
        token:
          type: string
          description: "[JWT](https://jwt.io/) token"
          example: eyJhbGciOiinvalidI6IkFQSSIsInJsbSI6ImNsaWVudCIsImN0ZCI6MTUyODM1NTgzMjEzOCwiZW1sIjoia3J6eXN6dG9mLmN6ZXJlcGFrQGdtYWlsLmNvbSIsImlzcyI6IlN5bmVyaXNlIiwiYnBpIjo1OTQsImNsSWQiOjUyNTQ0NjU3NCwinvalidx2XwJp-QBZ94d_EEKf41KtDCE33KhP_vTAYrs-JzbnIHgKRvG6ZRwsNOL8OTnbfbUZH4XYaqBB_tZTPPKfzHutP6GEGp7PLtu2E92JbChkVyrn8VCQ5v4z2e1-zsdgbmWcQk2g9RydaydO6NYO55suT3Hz2ZRv0AYLsG8rM1biZGdREWx9OaknVVuIo2ivehBiukL7VQ6Bu8ugjep3mn-z666a-nCMh6ZuASiQ6Geq0NSWmdDQIoCa5Hg44KzMfGRlCR2uKBXeHTD0SkwJ1VJM0sHNKwSfMXKpaX8OJ5wUJpgCzDzQwKVgxgWFp4eO_sbcvxWrpI7W0lfdCy1WKirnZ6Uh3uJ06v97GQDAQqVgBZFEpS47MrGZhTNuAG4ZbfYO7yyxVO8AHQbEC-UvZ-8DC1XZjvQ6S1uNqQIlVGcthnrxg8K6vKVhNzu6ifQI0bbsCl8bGsKkXOEK1pKR3ekckcSjNeeY2LrcdXs8F2gtkm0TjXU
    sauth-4xx-base:
      type: object
      properties:
        error:
          type: string
          description: Summary of the error
        message:
          type: string
          description: Description of the problem
        errors:
          type: array
          description: An array of detailed error messages, if applicable
          items:
            type: object
            properties:
              code:
                type: integer
                description: Error code
              field:
                type: string
                description: Name of the field that did not pass validation
              message:
                type: string
                description: Details of the problem
              rejectedValue:
                description: The value that did not pass validation
                anyOf:
                  - type: string
                  - type: number
                  - type: integer
                  - type: boolean
                  - type: array
                    items: {}
                  - type: object
        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
        traceId:
          type: string
          description: ID for debugging
    sauth-JWTtoken:
      type: object
      properties:
        token:
          type: string
          description: "[JWT](https://jwt.io/) token"
    sauth-LogInAsClientRequestBody:
      type: object
      properties:
        apiKey:
          $ref: "#/components/schemas/sauth-ClientApiKey"
        email:
          type: string
          description: Profile email
        password:
          type: string
          description: Profile password
        uuid:
          $ref: "#/components/schemas/sauth-inBodyClientUuid"
        deviceId:
          type: string
          description: "**Important:** deviceId is required during login if device control is enabled."
    sauth-inBodyClientUuid:
      type: string
      description: UUID of the Profile
      example: 07243772-008a-42e1-ba37-c3807cebde8f
    sauth-ClientApiKey:
      type: string
      description: Profile (formerly "Client") API key
    sauth-LogInAnonymouslyRequestBody:
      type: object
      properties:
        apiKey:
          $ref: "#/components/schemas/sauth-ClientApiKey"
        deviceId:
          $ref: "#/components/schemas/sauth-inBodyClientDeviceId"
        uuid:
          $ref: "#/components/schemas/sauth-inBodyClientUuid"
    sauth-inBodyClientDeviceId:
      type: string
      description: |
        Unique Android or iOS device ID.

        We recommend sending this attribute every time, to assign a web push registration to the device.

        Required when any form of [unknown device control](https://hub.synerise.com/docs/settings/tool/iam-for-apps/access/#unknown-device-control) is enabled.
    sauth-AuthenticateWithFacebookRequestBody:
      type: object
      properties:
        facebookToken:
          type: string
          description: Facebook authentication token
        apiKey:
          $ref: "#/components/schemas/sauth-ClientApiKey"
        uuid:
          $ref: "#/components/schemas/sauth-inBodyClientUuid"
        deviceId:
          $ref: "#/components/schemas/sauth-inBodyClientDeviceId"
        agreements:
          $ref: "#/components/schemas/sauth-Agreements"
        attributes:
          $ref: "#/components/schemas/sauth-Attributes"
        tags:
          $ref: "#/components/schemas/sauth-Tags"
    sauth-Tags:
      type: array
      description: Tags can be used to group Profile accounts.
      items:
        type: string
    sauth-Attributes:
      type: object
      description: |
        Custom attributes (with any names)

        <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_btooth_messages</code><br><code>receive_rfid_messages</code><br><code>receive_wifi_messages</code><br><code>receive_whatsapp_messages</code><br><code>whatsapp_id</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: Can be numbers, strings, or booleans.
    sauth-Agreements:
      description: |-
        Marketing agreements of the Profile.

        You can also pass the values as strings (`"true"`;`"TRUE"`;`"True"`/`"false"`;`"FALSE"`;`"False"`) or integers (`1` for true and `0` for false).
      type: object
      properties:
        email:
          type: boolean
          description: Permission to receive marketing information by email
          default: true
        sms:
          type: boolean
          description: Permission to receive marketing information by SMS
          default: true
        push:
          type: boolean
          description: Permission to receive push notifications
          default: true
        bluetooth:
          type: boolean
          deprecated: true
          description: This field is ignored.
          default: false
        rfid:
          type: boolean
          deprecated: true
          description: This field is ignored.
          default: false
        wifi:
          type: boolean
          deprecated: true
          description: This field is ignored.
          default: false
        whatsApp:
          type: boolean
          description: Permission to receive WhatsApp messages
          default: false
      example:
        email: true
        sms: true
        push: true
        bluetooth: false
        rfid: false
        wifi: false
    sauth-AuthenticateWithFacebookWithoutRegistrationRequestBody:
      type: object
      properties:
        facebookToken:
          type: string
          description: Facebook Authentication Token
        apiKey:
          $ref: "#/components/schemas/sauth-ClientApiKey"
        uuid:
          $ref: "#/components/schemas/sauth-inBodyClientUuid"
        deviceId:
          $ref: "#/components/schemas/sauth-inBodyClientDeviceId"
        agreements:
          $ref: "#/components/schemas/sauth-Agreements"
        attributes:
          $ref: "#/components/schemas/sauth-Attributes"
        tags:
          $ref: "#/components/schemas/sauth-Tags"
    sauth-OauthAuthBody:
      required:
        - accessToken
        - apiKey
        - uuid
      type: object
      properties:
        accessToken:
          type: string
          description: OAuth token
        apiKey:
          type: string
          description: Profile API key (same as for Profile login)
        uuid:
          $ref: "#/components/schemas/sauth-inBodyClientUuid"
        deviceId:
          $ref: "#/components/schemas/sauth-inBodyClientDeviceId"
        agreements:
          $ref: "#/components/schemas/sauth-Agreements"
        attributes:
          $ref: "#/components/schemas/sauth-Attributes"
        tags:
          $ref: "#/components/schemas/sauth-Tags"
        customId:
          type: string
          description: If `mappedExternal` is set to FALSE in OAuth settings, this field is required.
    sauth-AuthenticateWithAppleRequestBody:
      type: object
      properties:
        accessToken:
          type: string
          description: Apple token
        apiKey:
          $ref: "#/components/schemas/sauth-ClientApiKey"
        uuid:
          $ref: "#/components/schemas/sauth-inBodyClientUuid"
        deviceId:
          $ref: "#/components/schemas/sauth-inBodyClientDeviceId"
        agreements:
          $ref: "#/components/schemas/sauth-Agreements"
        attributes:
          $ref: "#/components/schemas/sauth-Attributes"
        tags:
          $ref: "#/components/schemas/sauth-Tags"
    sauth-LoginWithAppleWithoutRegistrationRequestBody:
      type: object
      properties:
        accessToken:
          type: string
          description: Apple token
        apiKey:
          $ref: "#/components/schemas/sauth-ClientApiKey"
        uuid:
          $ref: "#/components/schemas/sauth-inBodyClientUuid"
        deviceId:
          $ref: "#/components/schemas/sauth-inBodyClientDeviceId"
        agreements:
          $ref: "#/components/schemas/sauth-Agreements"
        attributes:
          $ref: "#/components/schemas/sauth-Attributes"
        tags:
          $ref: "#/components/schemas/sauth-Tags"
    sauth-ClientRefreshRequest:
      type: object
      required:
        - apiKey
      properties:
        apiKey:
          $ref: "#/components/schemas/sauth-ClientApiKey"
      title: ClientRefreshRequest
    sauth-JWTtokenV3:
      type: object
      properties:
        token:
          type: string
          description: "[JWT](https://jwt.io/) token"
        expiration:
          type: integer
          example: 1649283173
        created:
          type: integer
          example: 1649277173668
        origin:
          type: string
          example: SYNERISE
        customId:
          type: string
          example: card123
        realm:
          type: string
          example: client
    sauth-AuthenticationRequestV2_and_3:
      type: object
      required:
        - apiKey
        - identityProvider
      properties:
        apiKey:
          $ref: "#/components/schemas/sauth-ClientApiKey"
        identityProvider:
          type: string
          description: The identity provider.
          enum:
            - SYNERISE
            - FACEBOOK
            - OAUTH
            - APPLE
            - GOOGLE
            - UNKNOWN
        identityProviderToken:
          $ref: "#/components/schemas/sauth-AuthIdentityProviderToken"
        email:
          $ref: "#/components/schemas/sauth-AuthClientEmail"
        customId:
          $ref: "#/components/schemas/sauth-AuthClientCustomId"
        password:
          $ref: "#/components/schemas/sauth-AuthClientPassword"
        uuid:
          $ref: "#/components/schemas/sauth-AuthClientUuid"
        deviceId:
          $ref: "#/components/schemas/sauth-inBodyClientDeviceId"
        agreements:
          $ref: "#/components/schemas/sauth-Agreements"
        attributes:
          $ref: "#/components/schemas/sauth-Attributes"
        tags:
          $ref: "#/components/schemas/sauth-Tags"
      title: AuthenticationRequestV2_and_3
    sauth-AuthClientUuid:
      type: string
      description: Profile UUID. Required if `identityProvider` is `SYNERISE`.
    sauth-AuthClientPassword:
      type: string
      description: Profile password. Required if `identityProvider` is `SYNERISE`.
    sauth-AuthClientCustomId:
      description: Profile customId. Required if `identityProvider` is `SYNERISE` and customId is the unique identifier (see https://hub.synerise.com/docs/settings/configuration/non-unique-emails/).
    sauth-AuthClientEmail:
      type: string
      description: Profile email. Required if `identityProvider` is `SYNERISE` and email is the unique identifier (default setting).
    sauth-AuthIdentityProviderToken:
      type: string
      description: Third-party authentication token used to authenticate with the Identity Provider. Required if `identityProvider` is different than `SYNERISE`.
    sauth-ConditionalAuthenticationResponse:
      type: object
      properties:
        conditions:
          type: array
          description: Reserved for future use.
          items:
            type: string
        status:
          type: string
          description: Login status. Currently, only `SUCCESS` is used.
          enum:
            - SUCCESS
            - UNAUTHORIZED
            - ACTIVATION_REQUIRED
            - REGISTRATION_REQUIRED
            - APPROVAL_REQUIRED
            - TERMS_ACCEPTANCE_REQUIRED
            - MFA_REQUIRED
        token:
          type: string
          description: "[JWT](https://jwt.io/) token"
      title: ConditionalAuthenticationResponse
    sauth-LogInAnonymouslyV2RequestBody:
      type: object
      properties:
        apiKey:
          $ref: "#/components/schemas/sauth-ClientApiKey"
        deviceId:
          $ref: "#/components/schemas/sauth-inBodyClientDeviceId"
        uuid:
          $ref: "#/components/schemas/sauth-inBodyClientUuid"
    sauth-ServerAuthenticationRequestV2_and_3:
      allOf:
        - type: object
          required:
            - ipAddress
          properties:
            ipAddress:
              type: string
              description: The IP address of the client device that is logging in.
        - $ref: "#/components/schemas/sauth-AuthenticationRequestV2_and_3"
    sauth-ConditionalAuthenticationResponseV3:
      type: object
      properties:
        conditions:
          type: array
          description: Reserved for future use.
          items:
            type: string
        status:
          type: string
          description: Login status. Currently, only `SUCCESS` is used.
          enum:
            - SUCCESS
            - UNAUTHORIZED
            - ACTIVATION_REQUIRED
            - REGISTRATION_REQUIRED
            - APPROVAL_REQUIRED
            - TERMS_ACCEPTANCE_REQUIRED
            - MFA_REQUIRED
        token:
          type: string
          description: "[JWT](https://jwt.io/) token"
        expiration:
          type: integer
          example: 1649283173
        created:
          type: integer
          example: 1649277173668
        origin:
          type: string
          example: SYNERISE
        customId:
          type: string
          example: card123
        realm:
          type: string
          example: client
      title: ConditionalAuthenticationResponseV3
    sauth-LogInAnonymouslyV3RequestBody:
      type: object
      required:
        - apiKey
        - uuid
      properties:
        apiKey:
          $ref: "#/components/schemas/sauth-ClientApiKey"
        uuid:
          $ref: "#/components/schemas/sauth-inBodyClientUuid"
        deviceId:
          type: string
          description: Unique iOS or Android device identifier.
    uauth-AuthenticationResponse:
      required:
        - consumer
      type: object
      properties:
        consumer:
          $ref: "#/components/schemas/uauth-ApiConsumer"
        mfaMethods:
          type: array
          items:
            type: string
            enum:
              - TOTP_AUTHENTICATOR
              - EMAIL
              - SMS
        authorizationError:
          $ref: "#/components/schemas/uauth-AuthorizationError"
        multiFactorCodeSent:
          $ref: "#/components/schemas/uauth-MultiFactorSendCodeResponse"
        defaultMfaMethod:
          type: string
          enum:
            - TOTP_AUTHENTICATOR
            - EMAIL
            - SMS
        forcedToSetMfa:
          type: boolean
    uauth-MultiFactorSendCodeResponse:
      type: object
      properties:
        method:
          $ref: "#/components/schemas/uauth-MultiFactorMethod"
        status:
          $ref: "#/components/schemas/uauth-MultiFactorSendCodeStatus"
        nextTryInSeconds:
          type: integer
          format: int32
    uauth-MultiFactorSendCodeStatus:
      type: string
      enum:
        - OK
        - LIMIT_REACHED
        - ERROR
    uauth-MultiFactorMethod:
      type: string
      enum:
        - TOTP_AUTHENTICATOR
        - EMAIL
    uauth-AuthorizationError:
      type: string
      enum:
        - USER_FORCED_TO_CHANGE_PASSWORD
    uauth-ApiConsumer:
      type: object
      description: Details of the authenticated user
      properties:
        type:
          type: string
          enum:
            - USER
        businessProfileId:
          type: integer
          description: ID of the selected workspace
        name:
          type: string
          description: The user's login
        id:
          type: integer
          description: ID of the user
        authorities:
          type: array
          description: A list of permissions
          items:
            type: string
        roles:
          type: string
          description: IDs of the roles assigned to the user
    uauth-UserAuthenticationRequest:
      required:
        - password
        - username
      type: object
      properties:
        username:
          type: string
          description: The login (email address) of the user
        password:
          type: string
          description: The user's password
        deviceId:
          type: string
          description: Identifier of user's current device
        externalProviderToken:
          type: string
        externalProviderType:
          type: string
          enum:
            - GOOGLE
        organizationName:
          type: string
          description: Optional organization name for login context
    uauth-MultiFactorAuthVerificationRequest:
      type: object
      required:
        - verificationCode
      properties:
        verificationCode:
          type: string
          description: Multi-factor verification code
        deviceId:
          type: string
        externalProviderToken:
          type: string
        externalProviderType:
          type: string
          enum:
            - GOOGLE
        organizationName:
          type: string
          description: Optional organization name for login context
    uauth-Error:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
          description: Time when the error occurred
        status:
          type: integer
          description: Status code
        error:
          type: string
          description: Summary of the error
        message:
          type: string
          description: Description of the problem
        path:
          type: string
          description: URL of the requested resource
    uauth-BusinessProfileResponse:
      type: object
      properties:
        businessProfileGuid:
          $ref: "#/components/schemas/uauth-BusinessProfileGuid"
        logo:
          type: string
          description: URL of the logo
        name:
          type: string
          description: Name of the workspace
        id:
          type: integer
          description: ID of the workspace
        created:
          type: string
          format: date-time
          description: Creation date
        subdomain:
          type: string
          description: Sub-domain of the workspace
        ipRestricted:
          type: boolean
          description: Informs if the workspace has IP access restrictions.
        mfaRequired:
          type: boolean
          description: Informs if the workspace is only accessible to users with multi-factor authentication enabled.
    uauth-BusinessProfileGuid:
      type: string
      description: UUID of the workspace
    uauth-BusinessProfileUserSpecific:
      type: object
      properties:
        id:
          $ref: "#/components/schemas/uauth-BusinessProfileId"
        ipRestriction:
          $ref: "#/components/schemas/uauth-BusinessProfileAccessRestriction"
        mfaRestriction:
          $ref: "#/components/schemas/uauth-BusinessProfileAccessRestriction"
        favorite:
          type: boolean
    uauth-BusinessProfileAccessRestriction:
      type: string
      enum:
        - OFF
        - PASS
        - FAIL
        - ENFORCED
    uauth-BusinessProfileId:
      type: integer
      description: ID of the workspace
    uauth-CurrentBusinessProfileResponse:
      type: object
      properties:
        selected:
          type: boolean
        data:
          $ref: "#/components/schemas/uauth-BusinessProfileWithLabelsResponse"
    uauth-BusinessProfileWithLabelsResponse:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
        logo:
          type: string
        businessProfileGuid:
          type: string
        created:
          type: string
          format: date-time
        subdomain:
          type: string
        ipRestriction:
          $ref: "#/components/schemas/uauth-BusinessProfileAccessRestriction"
        mfaRestriction:
          $ref: "#/components/schemas/uauth-BusinessProfileAccessRestriction"
        labels:
          type: array
          items:
            type: string
        emailAttributeName:
          type: string
        organizationGuid:
          type: string
        businessProfileGroup:
          $ref: "#/components/schemas/uauth-BusinessProfileGroupSimpleResponse"
    uauth-BusinessProfileGroupSimpleResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        profileIdentifier:
          type: string
    uauth-TokenResponse:
      type: object
      properties:
        token:
          type: string
          description: "[JWT](https://jwt.io) token"
    uauth-BusinessProfileAuthenticationRequest:
      required:
        - apiKey
      type: object
      properties:
        apiKey:
          type: string
          description: |
            Workspace API key

            <span style="color:red"><strong>WARNING:</strong></span> Workspace API keys can be used to access all customer data and manage the workspace. They should only be used for server-to-server communication in integrations. **DO NOT use workspace API keys in your mobile applications or websites**.
          example: 64c09614-1b2a-42f7-804d-f647243eb1ab
  parameters:
    api-service-apiVersionHeader-apiv4:
      name: Api-Version
      in: header
      required: true
      style: simple
      explode: false
      schema:
        type: string
        enum:
          - "4.4"
    api-service-contentTypeHeader-apiv4:
      name: Content-Type
      in: header
      required: true
      style: simple
      explode: false
      schema:
        type: string
        enum:
          - application/json
    uauth-mfaType:
      name: mfaType
      in: query
      description: Type of multi-factor authentication
      required: true
      schema:
        type: string
        enum:
          - TOTP_AUTHENTICATOR
          - EMAIL
    uauth-businessProfileId:
      name: businessProfileUUID
      in: path
      required: true
      schema:
        type: string
        format: uuid
      description: UUID of the workspace
  responses:
    api-service-403-apiv4:
      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:
            $ref: "#/components/schemas/api-service-HTTP400-apiv4"
          example:
            timestamp: 2018-06-07T07:29:27.489+00:00
            status: 403
            error: Forbidden
            message: Forbidden
            path: /path_of_the_endpoint
    api-service-401-apiv4:
      description: "Unauthorized: wrong consumer scope; token missing/expired/invalid; invalid API key; etc."
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/api-service-HTTP400-apiv4"
          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
    sauth-423-device-control-enabled:
      description: Device control is enabled, device must be authorized (link sent by email)
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/sauth-4xx-base"
          example:
            timestamp: 2021-09-15T10:01:16.203120Z
            status: 423
            error: Locked
            message: Device login blocked
            path: /v2/auth/login/client
            traceId: 61b4aa7c0cb1167a
    sauth-406-account-locked:
      description: Account is locked, password reset required
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/sauth-4xx-base"
          example:
            timestamp: 2021-09-15T10:01:16.203120Z
            status: 406
            error: Banned
            message: Log in has been blocked
            path: /v2/auth/login/client
            traceId: 61b4aa7c0cb1167a
    sauth-403-login:
      description: Authentication failed, see error message for details
      content:
        application/json:
          schema:
            allOf:
              - $ref: "#/components/schemas/sauth-4xx-base"
              - type: object
                properties:
                  errorCode:
                    type: string
                    description: |
                      Error code, if applicable.
                        - `SAU-302`: Email confirmation by hash code (activation link) required
                        - `SAU-303`: Email confirmation by PIN code required
    uauth-423:
      description: Access denied by IP policy
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/uauth-Error"
