openapi: 3.0.0
info:
  title: Identity and Access Management - Synerise Public API
  version: 1.2.2
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: Settings
  - name: Access control
  - name: User management
  - name: Access groups
  - name: User account management
  - name: Directory
x-tagGroups:
  - name: Identity and Access Management
    tags:
      - Settings
      - Access control
      - User management
      - Access groups
      - User account management
      - Directory
paths:
  /business-profile-service/organizations/business-profiles:
    get:
      tags:
        - Settings
      summary: Get universal list of organization workspaces
      operationId: getBusinessProfilesForOrganizationUserUniversalList
      description: |
        Retrieve a list of worspaces in the organization in context of the current user.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>
      parameters:
        - $ref: "#/components/parameters/business-profile-service-listPage"
        - $ref: "#/components/parameters/business-profile-service-listLimit"
        - name: businessProfileGroupId
          in: query
          required: false
          description: Workspace group to filter by.
          schema:
            type: string
        - name: sortBy
          in: query
          required: false
          schema:
            type: string
            default: NAME:ASC
            enum:
              - NAME:ASC
              - NAME:DESC
              - CREATED:ASC
              - CREATED:DESC
        - name: search
          in: query
          required: false
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/business-profile-service-UniversalListBusinessProfilesForOrganizationUserResponse"
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/getBusinessProfilesForOrganizationUserUniversalList
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url 'https://api.synerise.com/business-profile-service/organizations/business-profiles?page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&businessProfileGroupId=SOME_STRING_VALUE&sortBy=SOME_STRING_VALUE&search=SOME_STRING_VALUE'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            conn.request("GET", "/business-profile-service/organizations/business-profiles?page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&businessProfileGroupId=SOME_STRING_VALUE&sortBy=SOME_STRING_VALUE&search=SOME_STRING_VALUE")

            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/business-profile-service/organizations/business-profiles?page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&businessProfileGroupId=SOME_STRING_VALUE&sortBy=SOME_STRING_VALUE&search=SOME_STRING_VALUE");

            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": "/business-profile-service/organizations/business-profiles?page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&businessProfileGroupId=SOME_STRING_VALUE&sortBy=SOME_STRING_VALUE&search=SOME_STRING_VALUE",
              "headers": {}
            };

            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/business-profile-service/organizations/business-profiles');
            $request->setMethod(HTTP_METH_GET);

            $request->setQueryData([
              'page' => 'SOME_INTEGER_VALUE',
              'limit' => 'SOME_INTEGER_VALUE',
              'businessProfileGroupId' => 'SOME_STRING_VALUE',
              'sortBy' => 'SOME_STRING_VALUE',
              'search' => 'SOME_STRING_VALUE'
            ]);

            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/business-profile-service/organizations/business-profiles?page=SOME_INTEGER_VALUE&limit=SOME_INTEGER_VALUE&businessProfileGroupId=SOME_STRING_VALUE&sortBy=SOME_STRING_VALUE&search=SOME_STRING_VALUE")
              .asString();
  /sauth/settings/ban:
    get:
      tags:
        - Settings
      summary: Get ban settings
      description: |
        Retrieve the configuration of applying bans after a number of failed logins.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_customers_iam_locking_policy: read`
      operationId: getBanSettingsUsingGET
      security:
        - JWT: []
      responses:
        "200":
          description: Current settings
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-BanSettingsPayload"
        "401":
          $ref: "#/components/responses/sauth-401-unauthorized"
        "403":
          $ref: "#/components/responses/sauth-403-forbidden"
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/getBanSettingsUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/sauth/settings/ban \
              --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/settings/ban", 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/settings/ban");
            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/settings/ban",
              "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/settings/ban');
            $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/settings/ban")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
    post:
      tags:
        - Settings
      summary: Update ban settings
      description: |
        Update the configuration of applying bans after a number of failed logins.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_customers_iam_locking_policy: update`
      operationId: updateBanSettingsUsingPOST
      security:
        - JWT: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-BanSettingsPayload"
        required: true
      responses:
        "200":
          description: Current settings
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-BanSettingsPayload"
        "401":
          $ref: "#/components/responses/sauth-401-unauthorized"
        "403":
          $ref: "#/components/responses/sauth-403-forbidden"
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/updateBanSettingsUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/settings/ban \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"blockingForClientEnabled":true,"firstBanCollectingTime":0,"firstBanDuration":0,"firstBanThreshold":0,"secondBanCollectingTime":0,"secondBanDuration":0,"secondBanThreshold":0,"permanentBanCollectingTime":0,"permanentBanDuration":0,"permanentBanThreshold":0}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"blockingForClientEnabled\":true,\"firstBanCollectingTime\":0,\"firstBanDuration\":0,\"firstBanThreshold\":0,\"secondBanCollectingTime\":0,\"secondBanDuration\":0,\"secondBanThreshold\":0,\"permanentBanCollectingTime\":0,\"permanentBanDuration\":0,\"permanentBanThreshold\":0}"

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

            conn.request("POST", "/sauth/settings/ban", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "blockingForClientEnabled": true,
              "firstBanCollectingTime": 0,
              "firstBanDuration": 0,
              "firstBanThreshold": 0,
              "secondBanCollectingTime": 0,
              "secondBanDuration": 0,
              "secondBanThreshold": 0,
              "permanentBanCollectingTime": 0,
              "permanentBanDuration": 0,
              "permanentBanThreshold": 0
            });

            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/settings/ban");
            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/settings/ban",
              "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({
              blockingForClientEnabled: true,
              firstBanCollectingTime: 0,
              firstBanDuration: 0,
              firstBanThreshold: 0,
              secondBanCollectingTime: 0,
              secondBanDuration: 0,
              secondBanThreshold: 0,
              permanentBanCollectingTime: 0,
              permanentBanDuration: 0,
              permanentBanThreshold: 0
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

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

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

            $request->setBody('{"blockingForClientEnabled":true,"firstBanCollectingTime":0,"firstBanDuration":0,"firstBanThreshold":0,"secondBanCollectingTime":0,"secondBanDuration":0,"secondBanThreshold":0,"permanentBanCollectingTime":0,"permanentBanDuration":0,"permanentBanThreshold":0}');

            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/settings/ban")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"blockingForClientEnabled\":true,\"firstBanCollectingTime\":0,\"firstBanDuration\":0,\"firstBanThreshold\":0,\"secondBanCollectingTime\":0,\"secondBanDuration\":0,\"secondBanThreshold\":0,\"permanentBanCollectingTime\":0,\"permanentBanDuration\":0,\"permanentBanThreshold\":0}")
              .asString();
  /sauth/settings/templates:
    get:
      security:
        - JWT: []
      tags:
        - Settings
      summary: Get email template settings
      operationId: getTemplateSettingsUsingGET
      description: |
        Get settings for email templates.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_customers_iam_account_confirmation: read`
      responses:
        "200":
          description: Current settings
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-TemplateSettingsData"
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: Not Found
      deprecated: false
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/getTemplateSettingsUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/sauth/settings/templates \
              --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/settings/templates", 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/settings/templates");
            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/settings/templates",
              "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/settings/templates');
            $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/settings/templates")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
    post:
      security:
        - JWT: []
      tags:
        - Settings
      summary: Update email template settings
      operationId: updateTemplateSettingsUsingPOST
      description: |
        Update email template settings. **Omitted settings are reset to null!**

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_customers_iam_account_confirmation: update`
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-TemplateSettingsData"
        required: true
      responses:
        "200":
          description: Current settings
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-TemplateSettingsData"
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: Not Found
      deprecated: false
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/updateTemplateSettingsUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/settings/templates \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"clientEmailChangeRequestMailSubject":"string","clientEmailChangeRequestMailBody":"string","clientEmailChangeRequestMailTemplateId":"string","clientEmailChangeNotificationMailSubject":"string","clientEmailChangeNotificationMailBody":"string","clientEmailChangeNotificationMailTemplateId":"string"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"clientEmailChangeRequestMailSubject\":\"string\",\"clientEmailChangeRequestMailBody\":\"string\",\"clientEmailChangeRequestMailTemplateId\":\"string\",\"clientEmailChangeNotificationMailSubject\":\"string\",\"clientEmailChangeNotificationMailBody\":\"string\",\"clientEmailChangeNotificationMailTemplateId\":\"string\"}"

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

            conn.request("POST", "/sauth/settings/templates", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "clientEmailChangeRequestMailSubject": "string",
              "clientEmailChangeRequestMailBody": "string",
              "clientEmailChangeRequestMailTemplateId": "string",
              "clientEmailChangeNotificationMailSubject": "string",
              "clientEmailChangeNotificationMailBody": "string",
              "clientEmailChangeNotificationMailTemplateId": "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/settings/templates");
            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/settings/templates",
              "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({
              clientEmailChangeRequestMailSubject: 'string',
              clientEmailChangeRequestMailBody: 'string',
              clientEmailChangeRequestMailTemplateId: 'string',
              clientEmailChangeNotificationMailSubject: 'string',
              clientEmailChangeNotificationMailBody: 'string',
              clientEmailChangeNotificationMailTemplateId: 'string'
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

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

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

            $request->setBody('{"clientEmailChangeRequestMailSubject":"string","clientEmailChangeRequestMailBody":"string","clientEmailChangeRequestMailTemplateId":"string","clientEmailChangeNotificationMailSubject":"string","clientEmailChangeNotificationMailBody":"string","clientEmailChangeNotificationMailTemplateId":"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/settings/templates")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"clientEmailChangeRequestMailSubject\":\"string\",\"clientEmailChangeRequestMailBody\":\"string\",\"clientEmailChangeRequestMailTemplateId\":\"string\",\"clientEmailChangeNotificationMailSubject\":\"string\",\"clientEmailChangeNotificationMailBody\":\"string\",\"clientEmailChangeNotificationMailTemplateId\":\"string\"}")
              .asString();
  /sauth/settings/device-control:
    get:
      tags:
        - Settings
      summary: Get device authorization settings
      description: |
        Retrieve the settings related to authorization of logins from unknown devices.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_customers_iam_locking_policy: read`
      operationId: getDeviceControlSettingsUsingGET
      security:
        - JWT: []
      responses:
        "200":
          description: Current settings
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-DeviceControlSettingsPayload"
        "401":
          $ref: "#/components/responses/sauth-401-unauthorized"
        "403":
          $ref: "#/components/responses/sauth-403-forbidden"
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/getDeviceControlSettingsUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/sauth/settings/device-control \
              --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/settings/device-control", 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/settings/device-control");
            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/settings/device-control",
              "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/settings/device-control');
            $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/settings/device-control")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
    post:
      tags:
        - Settings
      summary: Update device authorization settings
      description: |
        Update the settings related to authorization of logins from unknown devices.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_customers_iam_locking_policy: update`
      operationId: updateDeviceSettingsUsingPOST
      security:
        - JWT: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-DeviceControlSettingsPayload"
        required: true
      responses:
        "200":
          description: Current settings
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-DeviceControlSettingsPayload"
        "401":
          $ref: "#/components/responses/sauth-401-unauthorized"
        "403":
          $ref: "#/components/responses/sauth-403-forbidden"
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/updateDeviceSettingsUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/settings/device-control \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"deviceControlMode":"OFF","hardMailBody":"string","hardMailTitle":"string","hardTemplateId":"string","softMailBody":"string","softMailTitle":"string","softTemplateId":"string","deviceUnlockSuccessRedirectUrl":"string","deviceUnlockAlreadyConfirmedRedirectUrl":"string"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"deviceControlMode\":\"OFF\",\"hardMailBody\":\"string\",\"hardMailTitle\":\"string\",\"hardTemplateId\":\"string\",\"softMailBody\":\"string\",\"softMailTitle\":\"string\",\"softTemplateId\":\"string\",\"deviceUnlockSuccessRedirectUrl\":\"string\",\"deviceUnlockAlreadyConfirmedRedirectUrl\":\"string\"}"

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

            conn.request("POST", "/sauth/settings/device-control", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "deviceControlMode": "OFF",
              "hardMailBody": "string",
              "hardMailTitle": "string",
              "hardTemplateId": "string",
              "softMailBody": "string",
              "softMailTitle": "string",
              "softTemplateId": "string",
              "deviceUnlockSuccessRedirectUrl": "string",
              "deviceUnlockAlreadyConfirmedRedirectUrl": "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/settings/device-control");
            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/settings/device-control",
              "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({
              deviceControlMode: 'OFF',
              hardMailBody: 'string',
              hardMailTitle: 'string',
              hardTemplateId: 'string',
              softMailBody: 'string',
              softMailTitle: 'string',
              softTemplateId: 'string',
              deviceUnlockSuccessRedirectUrl: 'string',
              deviceUnlockAlreadyConfirmedRedirectUrl: 'string'
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/sauth/settings/device-control');
            $request->setMethod(HTTP_METH_POST);

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

            $request->setBody('{"deviceControlMode":"OFF","hardMailBody":"string","hardMailTitle":"string","hardTemplateId":"string","softMailBody":"string","softMailTitle":"string","softTemplateId":"string","deviceUnlockSuccessRedirectUrl":"string","deviceUnlockAlreadyConfirmedRedirectUrl":"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/settings/device-control")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"deviceControlMode\":\"OFF\",\"hardMailBody\":\"string\",\"hardMailTitle\":\"string\",\"hardTemplateId\":\"string\",\"softMailBody\":\"string\",\"softMailTitle\":\"string\",\"softTemplateId\":\"string\",\"deviceUnlockSuccessRedirectUrl\":\"string\",\"deviceUnlockAlreadyConfirmedRedirectUrl\":\"string\"}")
              .asString();
  /sauth/settings/general:
    get:
      security:
        - JWT: []
      tags:
        - Settings
      summary: Get general settings
      operationId: getGeneralConfigUsingGET
      description: |
        Retrieve the general settings of the workspace.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_customers_iam_account_confirmation: read`
      responses:
        "200":
          description: Current settings
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-GeneralSettingsData"
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: Not Found
      deprecated: false
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/getGeneralConfigUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/sauth/settings/general \
              --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/settings/general", 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/settings/general");
            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/settings/general",
              "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/settings/general');
            $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/settings/general")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
    post:
      tags:
        - Settings
      security:
        - JWT: []
      summary: Update general settings
      operationId: updateGeneralSettingsUsingPOST
      description: |
        Update general settings. **Settings omitted in the request are reset to default!**.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_customers_iam_account_confirmation: update`
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-GeneralSettingsData"
        required: true
      responses:
        "200":
          description: New settings
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-GeneralSettingsData"
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: Not Found
      deprecated: false
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/updateGeneralSettingsUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/settings/general \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"tokenLifetimeInSeconds":0,"voucherPoolUuid":null,"allowOverwriteCustomIdentify":false,"allowOverwriteExternalId":false,"allowEmailChangeFromWebForm":false,"allowToPassCustomIdentifyWithVoucherPool":false}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"tokenLifetimeInSeconds\":0,\"voucherPoolUuid\":null,\"allowOverwriteCustomIdentify\":false,\"allowOverwriteExternalId\":false,\"allowEmailChangeFromWebForm\":false,\"allowToPassCustomIdentifyWithVoucherPool\":false}"

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

            conn.request("POST", "/sauth/settings/general", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "tokenLifetimeInSeconds": 0,
              "voucherPoolUuid": null,
              "allowOverwriteCustomIdentify": false,
              "allowOverwriteExternalId": false,
              "allowEmailChangeFromWebForm": false,
              "allowToPassCustomIdentifyWithVoucherPool": false
            });

            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/settings/general");
            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/settings/general",
              "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({
              tokenLifetimeInSeconds: 0,
              voucherPoolUuid: null,
              allowOverwriteCustomIdentify: false,
              allowOverwriteExternalId: false,
              allowEmailChangeFromWebForm: false,
              allowToPassCustomIdentifyWithVoucherPool: false
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

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

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

            $request->setBody('{"tokenLifetimeInSeconds":0,"voucherPoolUuid":null,"allowOverwriteCustomIdentify":false,"allowOverwriteExternalId":false,"allowEmailChangeFromWebForm":false,"allowToPassCustomIdentifyWithVoucherPool":false}');

            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/settings/general")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"tokenLifetimeInSeconds\":0,\"voucherPoolUuid\":null,\"allowOverwriteCustomIdentify\":false,\"allowOverwriteExternalId\":false,\"allowEmailChangeFromWebForm\":false,\"allowToPassCustomIdentifyWithVoucherPool\":false}")
              .asString();
  /sauth/settings/oauth:
    get:
      tags:
        - Settings
      summary: Get OAuth settings
      description: |
        Retrieve OAuth authentication settings

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_customers_iam_oauth: read`
      operationId: getOauthSettingsUsingGET
      security:
        - JWT: []
      responses:
        "200":
          description: Current settings
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-OauthSettingsResponse"
        "401":
          $ref: "#/components/responses/sauth-401-unauthorized"
        "403":
          $ref: "#/components/responses/sauth-403-forbidden"
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/getOauthSettingsUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/sauth/settings/oauth \
              --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/settings/oauth", 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/settings/oauth");
            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/settings/oauth",
              "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/settings/oauth');
            $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/settings/oauth")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
    post:
      tags:
        - Settings
      summary: Update OAuth settings
      description: |
        Update OAuth authentication settings

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_customers_iam_oauth: update`
      operationId: updateOatuhSettingsUsingPOST
      security:
        - JWT: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-OauthSettingsRequest"
        required: true
      responses:
        "200":
          description: Current settings
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-OauthSettingsResponse"
        "401":
          $ref: "#/components/responses/sauth-401-unauthorized"
        "403":
          $ref: "#/components/responses/sauth-403-forbidden"
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/updateOatuhSettingsUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/settings/oauth \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"enabled":true,"mode":"JWT_TOKEN","name":"string","endpoint":"string","headers":{"Content-Type":"application/json","Authorization":"Bearer {{_snrs_access_token}}","Cache-control":"no-cache"},"mapping":{"property1":"string","property2":"string"},"mappedExternal":true,"syncDataOnLogin":false}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"enabled\":true,\"mode\":\"JWT_TOKEN\",\"name\":\"string\",\"endpoint\":\"string\",\"headers\":{\"Content-Type\":\"application/json\",\"Authorization\":\"Bearer {{_snrs_access_token}}\",\"Cache-control\":\"no-cache\"},\"mapping\":{\"property1\":\"string\",\"property2\":\"string\"},\"mappedExternal\":true,\"syncDataOnLogin\":false}"

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

            conn.request("POST", "/sauth/settings/oauth", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "enabled": true,
              "mode": "JWT_TOKEN",
              "name": "string",
              "endpoint": "string",
              "headers": {
                "Content-Type": "application/json",
                "Authorization": "Bearer {{_snrs_access_token}}",
                "Cache-control": "no-cache"
              },
              "mapping": {
                "property1": "string",
                "property2": "string"
              },
              "mappedExternal": true,
              "syncDataOnLogin": false
            });

            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/settings/oauth");
            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/settings/oauth",
              "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({
              enabled: true,
              mode: 'JWT_TOKEN',
              name: 'string',
              endpoint: 'string',
              headers: {
                'Content-Type': 'application/json',
                Authorization: 'Bearer {{_snrs_access_token}}',
                'Cache-control': 'no-cache'
              },
              mapping: {property1: 'string', property2: 'string'},
              mappedExternal: true,
              syncDataOnLogin: false
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

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

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

            $request->setBody('{"enabled":true,"mode":"JWT_TOKEN","name":"string","endpoint":"string","headers":{"Content-Type":"application/json","Authorization":"Bearer {{_snrs_access_token}}","Cache-control":"no-cache"},"mapping":{"property1":"string","property2":"string"},"mappedExternal":true,"syncDataOnLogin":false}');

            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/settings/oauth")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"enabled\":true,\"mode\":\"JWT_TOKEN\",\"name\":\"string\",\"endpoint\":\"string\",\"headers\":{\"Content-Type\":\"application/json\",\"Authorization\":\"Bearer {{_snrs_access_token}}\",\"Cache-control\":\"no-cache\"},\"mapping\":{\"property1\":\"string\",\"property2\":\"string\"},\"mappedExternal\":true,\"syncDataOnLogin\":false}")
              .asString();
  /sauth/settings/synerise-auth:
    get:
      tags:
        - Settings
      operationId: getSyneriseAuthConfig
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-SyneriseAuthSettingsData"
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/getSyneriseAuthConfig
      description: |
        

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_customers_iam: read`
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/sauth/settings/synerise-auth
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            conn.request("GET", "/sauth/settings/synerise-auth")

            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/settings/synerise-auth");

            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/settings/synerise-auth",
              "headers": {}
            };

            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/settings/synerise-auth');
            $request->setMethod(HTTP_METH_GET);

            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/settings/synerise-auth")
              .asString();
    post:
      tags:
        - Settings
      operationId: updateSyneriseAuthSettings
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-SyneriseAuthSettingsData"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-SyneriseAuthSettingsData"
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/updateSyneriseAuthSettings
      description: |
        

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_customers_iam: update`
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/settings/synerise-auth \
              --header 'content-type: application/json' \
              --data '{"enabled":true,"registrationType":"REQUIRE_ACTIVATION","pinConfirmationType":"EVERYONE","pinConfirmationLength":6,"pinConfirmationValidInSeconds":300,"allowPinResendFromDifferentDeviceId":false,"confirmationRedirectLink":null,"confirmationMailSubject":"string","confirmationMailBody":"string","confirmationMailTemplateId":"string","passwordResetMailTemplateId":"string","passwordResetMailSubject":"string","passwordResetMailBody":"string","pinConfirmationMailSubject":"string","pinConfirmationMailBody":"string","pinConfirmationMailTemplateId":"string","maxLength":0,"minLength":0,"requireAtLeastOneLowercaseLetter":false,"requireAtLeastOneNonAlphaNumericCharacter":false,"requireAtLeastOneNumber":false,"requireAtLeastOneUppercaseLetter":false}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"enabled\":true,\"registrationType\":\"REQUIRE_ACTIVATION\",\"pinConfirmationType\":\"EVERYONE\",\"pinConfirmationLength\":6,\"pinConfirmationValidInSeconds\":300,\"allowPinResendFromDifferentDeviceId\":false,\"confirmationRedirectLink\":null,\"confirmationMailSubject\":\"string\",\"confirmationMailBody\":\"string\",\"confirmationMailTemplateId\":\"string\",\"passwordResetMailTemplateId\":\"string\",\"passwordResetMailSubject\":\"string\",\"passwordResetMailBody\":\"string\",\"pinConfirmationMailSubject\":\"string\",\"pinConfirmationMailBody\":\"string\",\"pinConfirmationMailTemplateId\":\"string\",\"maxLength\":0,\"minLength\":0,\"requireAtLeastOneLowercaseLetter\":false,\"requireAtLeastOneNonAlphaNumericCharacter\":false,\"requireAtLeastOneNumber\":false,\"requireAtLeastOneUppercaseLetter\":false}"

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

            conn.request("POST", "/sauth/settings/synerise-auth", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "enabled": true,
              "registrationType": "REQUIRE_ACTIVATION",
              "pinConfirmationType": "EVERYONE",
              "pinConfirmationLength": 6,
              "pinConfirmationValidInSeconds": 300,
              "allowPinResendFromDifferentDeviceId": false,
              "confirmationRedirectLink": null,
              "confirmationMailSubject": "string",
              "confirmationMailBody": "string",
              "confirmationMailTemplateId": "string",
              "passwordResetMailTemplateId": "string",
              "passwordResetMailSubject": "string",
              "passwordResetMailBody": "string",
              "pinConfirmationMailSubject": "string",
              "pinConfirmationMailBody": "string",
              "pinConfirmationMailTemplateId": "string",
              "maxLength": 0,
              "minLength": 0,
              "requireAtLeastOneLowercaseLetter": false,
              "requireAtLeastOneNonAlphaNumericCharacter": false,
              "requireAtLeastOneNumber": false,
              "requireAtLeastOneUppercaseLetter": false
            });

            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/settings/synerise-auth");
            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/settings/synerise-auth",
              "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({
              enabled: true,
              registrationType: 'REQUIRE_ACTIVATION',
              pinConfirmationType: 'EVERYONE',
              pinConfirmationLength: 6,
              pinConfirmationValidInSeconds: 300,
              allowPinResendFromDifferentDeviceId: false,
              confirmationRedirectLink: null,
              confirmationMailSubject: 'string',
              confirmationMailBody: 'string',
              confirmationMailTemplateId: 'string',
              passwordResetMailTemplateId: 'string',
              passwordResetMailSubject: 'string',
              passwordResetMailBody: 'string',
              pinConfirmationMailSubject: 'string',
              pinConfirmationMailBody: 'string',
              pinConfirmationMailTemplateId: 'string',
              maxLength: 0,
              minLength: 0,
              requireAtLeastOneLowercaseLetter: false,
              requireAtLeastOneNonAlphaNumericCharacter: false,
              requireAtLeastOneNumber: false,
              requireAtLeastOneUppercaseLetter: false
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

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

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

            $request->setBody('{"enabled":true,"registrationType":"REQUIRE_ACTIVATION","pinConfirmationType":"EVERYONE","pinConfirmationLength":6,"pinConfirmationValidInSeconds":300,"allowPinResendFromDifferentDeviceId":false,"confirmationRedirectLink":null,"confirmationMailSubject":"string","confirmationMailBody":"string","confirmationMailTemplateId":"string","passwordResetMailTemplateId":"string","passwordResetMailSubject":"string","passwordResetMailBody":"string","pinConfirmationMailSubject":"string","pinConfirmationMailBody":"string","pinConfirmationMailTemplateId":"string","maxLength":0,"minLength":0,"requireAtLeastOneLowercaseLetter":false,"requireAtLeastOneNonAlphaNumericCharacter":false,"requireAtLeastOneNumber":false,"requireAtLeastOneUppercaseLetter":false}');

            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/settings/synerise-auth")
              .header("content-type", "application/json")
              .body("{\"enabled\":true,\"registrationType\":\"REQUIRE_ACTIVATION\",\"pinConfirmationType\":\"EVERYONE\",\"pinConfirmationLength\":6,\"pinConfirmationValidInSeconds\":300,\"allowPinResendFromDifferentDeviceId\":false,\"confirmationRedirectLink\":null,\"confirmationMailSubject\":\"string\",\"confirmationMailBody\":\"string\",\"confirmationMailTemplateId\":\"string\",\"passwordResetMailTemplateId\":\"string\",\"passwordResetMailSubject\":\"string\",\"passwordResetMailBody\":\"string\",\"pinConfirmationMailSubject\":\"string\",\"pinConfirmationMailBody\":\"string\",\"pinConfirmationMailTemplateId\":\"string\",\"maxLength\":0,\"minLength\":0,\"requireAtLeastOneLowercaseLetter\":false,\"requireAtLeastOneNonAlphaNumericCharacter\":false,\"requireAtLeastOneNumber\":false,\"requireAtLeastOneUppercaseLetter\":false}")
              .asString();
  /sauth/settings/oauth/facebook:
    get:
      tags:
        - Settings
      operationId: getFacebookOauthSettings
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-FacebookOauthSettingsPayload"
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/getFacebookOauthSettings
      description: |
        

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_customers_iam_oauth: read`
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/sauth/settings/oauth/facebook
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            conn.request("GET", "/sauth/settings/oauth/facebook")

            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/settings/oauth/facebook");

            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/settings/oauth/facebook",
              "headers": {}
            };

            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/settings/oauth/facebook');
            $request->setMethod(HTTP_METH_GET);

            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/settings/oauth/facebook")
              .asString();
    post:
      tags:
        - Settings
      operationId: updateFacebookOauthSettings
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-FacebookOauthSettingsPayload"
        required: true
      responses:
        "200":
          description: OK
          content:
            "*/*":
              schema:
                $ref: "#/components/schemas/sauth-FacebookOauthSettingsPayload"
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/updateFacebookOauthSettings
      description: |
        

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_customers_iam_oauth: update`
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/settings/oauth/facebook \
              --header 'content-type: application/json' \
              --data '{"enabled":true}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"enabled\":true}"

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

            conn.request("POST", "/sauth/settings/oauth/facebook", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "enabled": true
            });

            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/settings/oauth/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/settings/oauth/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({enabled: true}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

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

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

            $request->setBody('{"enabled":true}');

            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/settings/oauth/facebook")
              .header("content-type", "application/json")
              .body("{\"enabled\":true}")
              .asString();
  /sauth/settings/oauth/google:
    get:
      tags:
        - Settings
      operationId: getGoogleOauthSettings
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-GoogleOauthSettingsPayload"
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/getGoogleOauthSettings
      description: |
        

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_customers_iam_oauth: read`
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/sauth/settings/oauth/google
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            conn.request("GET", "/sauth/settings/oauth/google")

            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/settings/oauth/google");

            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/settings/oauth/google",
              "headers": {}
            };

            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/settings/oauth/google');
            $request->setMethod(HTTP_METH_GET);

            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/settings/oauth/google")
              .asString();
    post:
      tags:
        - Settings
      operationId: updateGoogleOauthSettings
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-GoogleOauthSettingsPayload"
        required: true
      responses:
        "200":
          description: OK
          content:
            "*/*":
              schema:
                $ref: "#/components/schemas/sauth-GoogleOauthSettingsPayload"
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/updateGoogleOauthSettings
      description: |
        

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_customers_iam_oauth: update`
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/settings/oauth/google \
              --header 'content-type: application/json' \
              --data '{"enabled":true}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"enabled\":true}"

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

            conn.request("POST", "/sauth/settings/oauth/google", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "enabled": true
            });

            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/settings/oauth/google");
            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/settings/oauth/google",
              "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({enabled: true}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

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

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

            $request->setBody('{"enabled":true}');

            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/settings/oauth/google")
              .header("content-type", "application/json")
              .body("{\"enabled\":true}")
              .asString();
  /sauth/settings/oauth/apple:
    get:
      tags:
        - Settings
      summary: Get Sign in with Apple settings
      description: |
        Retrieve Sign in with Apple settings.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_customers_iam_oauth: read`
      operationId: getAppleAuthSettingsUsingGET
      security:
        - JWT: []
      responses:
        "200":
          description: Current settings
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-AppleAuthSettingsPayload"
        "401":
          $ref: "#/components/responses/sauth-401-unauthorized"
        "403":
          $ref: "#/components/responses/sauth-403-forbidden"
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/getAppleAuthSettingsUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/sauth/settings/oauth/apple \
              --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/settings/oauth/apple", 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/settings/oauth/apple");
            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/settings/oauth/apple",
              "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/settings/oauth/apple');
            $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/settings/oauth/apple")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
    post:
      tags:
        - Settings
      summary: Update Sign in with Apple settings
      description: |
        Update Sign in with Apple settings.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_customers_iam_oauth: update`
      operationId: updateAppleAuthSettingsUsingPOST
      security:
        - JWT: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/sauth-AppleAuthSettingsPayload"
        required: true
      responses:
        "200":
          description: Current settings
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sauth-AppleAuthSettingsPayload"
        "401":
          $ref: "#/components/responses/sauth-401-unauthorized"
        "403":
          $ref: "#/components/responses/sauth-403-forbidden"
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/updateAppleAuthSettingsUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/sauth/settings/oauth/apple \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"enabled":true,"bundle":"com.synerise.sdk.sample-swift"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"enabled\":true,\"bundle\":\"com.synerise.sdk.sample-swift\"}"

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

            conn.request("POST", "/sauth/settings/oauth/apple", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "enabled": true,
              "bundle": "com.synerise.sdk.sample-swift"
            });

            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/settings/oauth/apple");
            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/settings/oauth/apple",
              "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({enabled: true, bundle: 'com.synerise.sdk.sample-swift'}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

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

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

            $request->setBody('{"enabled":true,"bundle":"com.synerise.sdk.sample-swift"}');

            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/settings/oauth/apple")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"enabled\":true,\"bundle\":\"com.synerise.sdk.sample-swift\"}")
              .asString();
  /uauth/business-profile/mark-favorite:
    post:
      tags:
        - Settings
      summary: Add or remove business profile to favorites
      description: |
        Business profile can be added or removed from favorites using this endpoint

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>
      operationId: postBPFavorite
      security:
        - JWT: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-MarkUserFavoriteBusinessProfile"
      responses:
        "200":
          description: OK
        "400":
          description: Bad Request
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: Not Found
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Settings/operation/postBPFavorite
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/business-profile/mark-favorite \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"businessProfileGuid":"string","favorite":true}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"businessProfileGuid\":\"string\",\"favorite\":true}"

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

            conn.request("POST", "/uauth/business-profile/mark-favorite", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "businessProfileGuid": "string",
              "favorite": true
            });

            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/business-profile/mark-favorite");
            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/business-profile/mark-favorite",
              "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({businessProfileGuid: 'string', favorite: true}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

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

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

            $request->setBody('{"businessProfileGuid":"string","favorite":true}');

            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/business-profile/mark-favorite")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"businessProfileGuid\":\"string\",\"favorite\":true}")
              .asString();
  /uauth/business-profile/mfa/requirements:
    post:
      tags:
        - Access control
      summary: Enable MFA requirement for workspace
      description: |
        This request enables multi-factor authentication requirement for the currently selected workspace. After enabling this setting, only users with MFA can access the workspace.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>
      operationId: setMfaRequirementForBusinessProfileUsingPOST
      responses:
        "200":
          description: OK
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: Not Found
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-control/operation/setMfaRequirementForBusinessProfileUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/business-profile/mfa/requirements \
              --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/business-profile/mfa/requirements", 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/business-profile/mfa/requirements");
            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/business-profile/mfa/requirements",
              "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/mfa/requirements');
            $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/business-profile/mfa/requirements")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
    delete:
      tags:
        - Access control
      summary: Disable MFA requirement for workspace
      description: |
        This request disables multi-factor authentication requirement for the currently selected workspace. After disabling this setting, users without MFA can access the workspace.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>
      operationId: removeMfaRequirementFromBusinessProfileUsingDELETE
      responses:
        "200":
          description: OK
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: Not Found
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-control/operation/removeMfaRequirementFromBusinessProfileUsingDELETE
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request DELETE \
              --url https://api.synerise.com/uauth/business-profile/mfa/requirements \
              --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("DELETE", "/uauth/business-profile/mfa/requirements", 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("DELETE", "https://api.synerise.com/uauth/business-profile/mfa/requirements");
            xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");

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

            const options = {
              "method": "DELETE",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/uauth/business-profile/mfa/requirements",
              "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/mfa/requirements');
            $request->setMethod(HTTP_METH_DELETE);

            $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.delete("https://api.synerise.com/uauth/business-profile/mfa/requirements")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /uauth/change-password:
    post:
      tags:
        - User account management
      summary: Change user password
      description: |
        Change a user's password.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>
      operationId: changePasswordUsingPOST
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-ChangePasswordRequest"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-ChangePasswordResponse"
        "201":
          description: Created
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: Not Found
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-account-management/operation/changePasswordUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/change-password \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"currentPassword":"string","newPassword":"string"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"currentPassword\":\"string\",\"newPassword\":\"string\"}"

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

            conn.request("POST", "/uauth/change-password", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "currentPassword": "string",
              "newPassword": "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/change-password");
            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/change-password",
              "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({currentPassword: 'string', newPassword: 'string'}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

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

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

            $request->setBody('{"currentPassword":"string","newPassword":"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/change-password")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"currentPassword\":\"string\",\"newPassword\":\"string\"}")
              .asString();
  /uauth/permissions/group/role/{roleId}:
    get:
      tags:
        - Access groups
      summary: List grouped permissions
      description: |
        List all permissions for a role, including information about permission grouping.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: read`
      operationId: listPermissionGroupUsingGET
      parameters:
        - $ref: "#/components/parameters/uauth-roleId"
      responses:
        "200":
          description: "This schema is **recursive**: the `children` array can include more groups, which include more groups, etc."
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/uauth-PermissionGroupDetailsDTO"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-groups/operation/listPermissionGroupUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/uauth/permissions/group/role/%7BroleId%7D
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            conn.request("GET", "/uauth/permissions/group/role/%7BroleId%7D")

            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/permissions/group/role/%7BroleId%7D");

            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/permissions/group/role/%7BroleId%7D",
              "headers": {}
            };

            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/permissions/group/role/%7BroleId%7D');
            $request->setMethod(HTTP_METH_GET);

            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/permissions/group/role/%7BroleId%7D")
              .asString();
  /uauth/password-reset/request:
    post:
      tags:
        - User account management
      summary: Request user password reset
      description: |
        The user can request a password reset token sent by email.

        ---

        **Authentication:** Not required
      operationId: requestPasswordResetUsingPOST
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-PasswordResetRequest"
      responses:
        "200":
          description: OK
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: Not Found
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-account-management/operation/requestPasswordResetUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/password-reset/request \
              --header 'content-type: application/json' \
              --data '{"email":"string"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

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

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

            conn.request("POST", "/uauth/password-reset/request", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "email": "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/password-reset/request");
            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/password-reset/request",
              "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({email: 'string'}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

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

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

            $request->setBody('{"email":"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/password-reset/request")
              .header("content-type", "application/json")
              .body("{\"email\":\"string\"}")
              .asString();
  /uauth/password-reset/confirmation:
    post:
      tags:
        - User account management
      summary: Confirm user password reset
      description: |
        Confirm user password reset using the token received by email.

        ---

        **Authentication:** Not required
      operationId: confirmPasswordResetUsingPOST
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-PasswordResetConfirmation"
      responses:
        "200":
          description: OK
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: Not Found
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-account-management/operation/confirmPasswordResetUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/password-reset/confirmation \
              --header 'content-type: application/json' \
              --data '{"token":"string","password":"string"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"token\":\"string\",\"password\":\"string\"}"

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

            conn.request("POST", "/uauth/password-reset/confirmation", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "token": "string",
              "password": "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/password-reset/confirmation");
            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/password-reset/confirmation",
              "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({token: 'string', password: 'string'}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/password-reset/confirmation');
            $request->setMethod(HTTP_METH_POST);

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

            $request->setBody('{"token":"string","password":"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/password-reset/confirmation")
              .header("content-type", "application/json")
              .body("{\"token\":\"string\",\"password\":\"string\"}")
              .asString();
  /uauth/roles/listing:
    get:
      tags:
        - Access groups
      summary: Get role groups
      description: |
        Retrieve a list of user role groups.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: read`
      operationId: getRoleGroupsUsingGET
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/uauth-RoleGroupResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-groups/operation/getRoleGroupsUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/uauth/roles/listing \
              --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/roles/listing", 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/roles/listing");
            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/roles/listing",
              "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/roles/listing');
            $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/roles/listing")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /uauth/roles/role-group:
    post:
      tags:
        - Access groups
      summary: Create role group
      description: |
        Create a new role group. A new group does not include any roles. To add a role to a group, [update the role](#operation/updateRoleUsingPOST).

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: create`
      operationId: createRoleGroupUsingPOST
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-RoleGroupDataRequest"
        required: true
      responses:
        "200":
          description: New group created; response includes all existing groups
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/uauth-RoleGroupResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-groups/operation/createRoleGroupUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/roles/role-group \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"name":"string","description":"string"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"name\":\"string\",\"description\":\"string\"}"

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

            conn.request("POST", "/uauth/roles/role-group", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "name": "string",
              "description": "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/roles/role-group");
            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/roles/role-group",
              "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({name: 'string', description: 'string'}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/roles/role-group');
            $request->setMethod(HTTP_METH_POST);

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

            $request->setBody('{"name":"string","description":"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/roles/role-group")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"name\":\"string\",\"description\":\"string\"}")
              .asString();
  /uauth/roles/role-group/{groupId}:
    post:
      tags:
        - Access groups
      summary: Update role group
      description: |
        Update a group. To add a role to a group, [update the role](#operation/updateRoleUsingPOST).

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: update`
      operationId: updateRoleGroupUsingPOST
      parameters:
        - $ref: "#/components/parameters/uauth-roleGroupId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-RoleGroupDataRequest"
        required: true
      responses:
        "200":
          description: Group updated; response includes all existing groups
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/uauth-RoleGroupResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-groups/operation/updateRoleGroupUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/roles/role-group/%7BgroupId%7D \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"name":"string","description":"string"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"name\":\"string\",\"description\":\"string\"}"

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

            conn.request("POST", "/uauth/roles/role-group/%7BgroupId%7D", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "name": "string",
              "description": "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/roles/role-group/%7BgroupId%7D");
            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/roles/role-group/%7BgroupId%7D",
              "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({name: 'string', description: 'string'}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/roles/role-group/%7BgroupId%7D');
            $request->setMethod(HTTP_METH_POST);

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

            $request->setBody('{"name":"string","description":"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/roles/role-group/%7BgroupId%7D")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"name\":\"string\",\"description\":\"string\"}")
              .asString();
    delete:
      tags:
        - Access groups
      summary: Delete role group
      description: |
        Delete a role group permanently.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: delete`
      operationId: deleteRoleGroupUsingDELETE
      parameters:
        - $ref: "#/components/parameters/uauth-roleGroupId"
      responses:
        "200":
          description: Group deleted; response includes all existing groups
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/uauth-RoleGroupResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-groups/operation/deleteRoleGroupUsingDELETE
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request DELETE \
              --url https://api.synerise.com/uauth/roles/role-group/%7BgroupId%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("DELETE", "/uauth/roles/role-group/%7BgroupId%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("DELETE", "https://api.synerise.com/uauth/roles/role-group/%7BgroupId%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": "DELETE",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/uauth/roles/role-group/%7BgroupId%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/roles/role-group/%7BgroupId%7D');
            $request->setMethod(HTTP_METH_DELETE);

            $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.delete("https://api.synerise.com/uauth/roles/role-group/%7BgroupId%7D")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /uauth/roles/role:
    post:
      tags:
        - Access groups
      summary: Create role
      description: |
        Create a new user role.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: update`
      operationId: createRoleUsingPOST
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-RoleDataRequest"
        required: true
      responses:
        "200":
          description: Role created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-RoleFullResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-groups/operation/createRoleUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/roles/role \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"group":0,"name":"string","description":"string"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"group\":0,\"name\":\"string\",\"description\":\"string\"}"

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

            conn.request("POST", "/uauth/roles/role", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "group": 0,
              "name": "string",
              "description": "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/roles/role");
            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/roles/role",
              "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({group: 0, name: 'string', description: 'string'}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

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

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

            $request->setBody('{"group":0,"name":"string","description":"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/roles/role")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"group\":0,\"name\":\"string\",\"description\":\"string\"}")
              .asString();
  /uauth/roles/{roleId}:
    get:
      tags:
        - Access groups
      summary: Get role
      description: |
        Retrieve the details of a user role

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: read`
      operationId: getRoleUsingGET
      parameters:
        - $ref: "#/components/parameters/uauth-roleId"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-RoleFullResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-groups/operation/getRoleUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/uauth/roles/%7BroleId%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("GET", "/uauth/roles/%7BroleId%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("GET", "https://api.synerise.com/uauth/roles/%7BroleId%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": "GET",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/uauth/roles/%7BroleId%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/roles/%7BroleId%7D');
            $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/roles/%7BroleId%7D")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /uauth/roles/role/{roleId}:
    post:
      tags:
        - Access groups
      summary: Update role
      description: |
        Update a user role.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: update`
      operationId: updateRoleUsingPOST
      parameters:
        - $ref: "#/components/parameters/uauth-roleId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-RoleDataRequest"
        required: true
      responses:
        "200":
          description: Role updated
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-RoleFullResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-groups/operation/updateRoleUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/roles/role/%7BroleId%7D \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"group":0,"name":"string","description":"string"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"group\":0,\"name\":\"string\",\"description\":\"string\"}"

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

            conn.request("POST", "/uauth/roles/role/%7BroleId%7D", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "group": 0,
              "name": "string",
              "description": "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/roles/role/%7BroleId%7D");
            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/roles/role/%7BroleId%7D",
              "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({group: 0, name: 'string', description: 'string'}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/roles/role/%7BroleId%7D');
            $request->setMethod(HTTP_METH_POST);

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

            $request->setBody('{"group":0,"name":"string","description":"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/roles/role/%7BroleId%7D")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"group\":0,\"name\":\"string\",\"description\":\"string\"}")
              .asString();
    delete:
      tags:
        - Access groups
      summary: Delete role
      description: |
        Delete a user role permanently.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: delete`
      operationId: deleteRoleUsingDELETE_1
      parameters:
        - $ref: "#/components/parameters/uauth-roleId"
      responses:
        "200":
          description: Role deleted, response includes all existing groups
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/uauth-RoleGroupResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-groups/operation/deleteRoleUsingDELETE_1
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request DELETE \
              --url https://api.synerise.com/uauth/roles/role/%7BroleId%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("DELETE", "/uauth/roles/role/%7BroleId%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("DELETE", "https://api.synerise.com/uauth/roles/role/%7BroleId%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": "DELETE",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/uauth/roles/role/%7BroleId%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/roles/role/%7BroleId%7D');
            $request->setMethod(HTTP_METH_DELETE);

            $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.delete("https://api.synerise.com/uauth/roles/role/%7BroleId%7D")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /uauth/user/confirmation/{confirmationToken}:
    get:
      tags:
        - User account management
      summary: Confirm user registration
      description: |
        Confirm user registration. The token is sent by email.

        ---

        **Authentication:** Not required
      operationId: confirmUserUsingGET
      parameters:
        - name: confirmationToken
          in: path
          required: true
          description: Confirmation token
          schema:
            type: string
      responses:
        "200":
          description: OK
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-account-management/operation/confirmUserUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/uauth/user/confirmation/%7BconfirmationToken%7D
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            conn.request("GET", "/uauth/user/confirmation/%7BconfirmationToken%7D")

            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/user/confirmation/%7BconfirmationToken%7D");

            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/user/confirmation/%7BconfirmationToken%7D",
              "headers": {}
            };

            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/user/confirmation/%7BconfirmationToken%7D');
            $request->setMethod(HTTP_METH_GET);

            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/user/confirmation/%7BconfirmationToken%7D")
              .asString();
  /uauth/user/register:
    post:
      tags:
        - User account management
      summary: Register user
      description: |
        Register a new user. Before the new account can be used, it must be [confirmed](#operation/confirmUserUsingGET).

        ---

        **Authentication:** Not required
      operationId: registerUserUsingPOST
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-UserRegistrationRequest"
        required: true
      responses:
        "200":
          description: OK
          content: {}
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
        "409":
          description: User already registered
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-account-management/operation/registerUserUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/user/register \
              --header 'content-type: application/json' \
              --data '{"email":"string","password":"string","invitationToken":"string","externalProviderToken":"string","externalProviderType":"GOOGLE"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"email\":\"string\",\"password\":\"string\",\"invitationToken\":\"string\",\"externalProviderToken\":\"string\",\"externalProviderType\":\"GOOGLE\"}"

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

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

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "email": "string",
              "password": "string",
              "invitationToken": "string",
              "externalProviderToken": "string",
              "externalProviderType": "GOOGLE"
            });

            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/user/register");
            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/user/register",
              "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({
              email: 'string',
              password: 'string',
              invitationToken: 'string',
              externalProviderToken: 'string',
              externalProviderType: 'GOOGLE'
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

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

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

            $request->setBody('{"email":"string","password":"string","invitationToken":"string","externalProviderToken":"string","externalProviderType":"GOOGLE"}');

            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/user/register")
              .header("content-type", "application/json")
              .body("{\"email\":\"string\",\"password\":\"string\",\"invitationToken\":\"string\",\"externalProviderToken\":\"string\",\"externalProviderType\":\"GOOGLE\"}")
              .asString();
  /uauth/user/register/invitation/{invitationToken}:
    get:
      tags:
        - User management
      summary: Find user by invitation token
      description: |
        You can retrieve the details of an account by providing the invitation token generated for that account.

        ---

        **Authentication:** Not required
      operationId: findByInvitationTokenGET
      parameters:
        - name: invitationToken
          in: path
          required: true
          description: Invitation token
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-InvitationResponse"
        "201":
          description: Created
          content: {}
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-management/operation/findByInvitationTokenGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/uauth/user/register/invitation/%7BinvitationToken%7D
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            conn.request("GET", "/uauth/user/register/invitation/%7BinvitationToken%7D")

            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/user/register/invitation/%7BinvitationToken%7D");

            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/user/register/invitation/%7BinvitationToken%7D",
              "headers": {}
            };

            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/user/register/invitation/%7BinvitationToken%7D');
            $request->setMethod(HTTP_METH_GET);

            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/user/register/invitation/%7BinvitationToken%7D")
              .asString();
  /uauth/user/register/resend-confirmation:
    post:
      tags:
        - User account management
      summary: Re-send user confirmation token
      description: |
        If the confirmation token does not reach the user's inbox, you can send a new one.

        ---

        **Authentication:** Not required
      operationId: resendConfirmationUsingPOST
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-ResendConfirmationPayload"
      responses:
        "200":
          description: OK
        "201":
          description: Created
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: Not Found
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-account-management/operation/resendConfirmationUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/user/register/resend-confirmation \
              --header 'content-type: application/json' \
              --data '{"email":"string"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

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

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

            conn.request("POST", "/uauth/user/register/resend-confirmation", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "email": "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/user/register/resend-confirmation");
            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/user/register/resend-confirmation",
              "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({email: 'string'}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

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

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

            $request->setBody('{"email":"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/user/register/resend-confirmation")
              .header("content-type", "application/json")
              .body("{\"email\":\"string\"}")
              .asString();
  /uauth/users/available-roles:
    get:
      tags:
        - Access groups
      summary: Get available roles
      description: |
        Retrieve a list of user roles available in the business profile.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **Authentication:** Not required
      operationId: getAvailableRolesUsingGET
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/uauth-RoleResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-groups/operation/getAvailableRolesUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/uauth/users/available-roles
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            conn.request("GET", "/uauth/users/available-roles")

            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/users/available-roles");

            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/users/available-roles",
              "headers": {}
            };

            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/users/available-roles');
            $request->setMethod(HTTP_METH_GET);

            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/users/available-roles")
              .asString();
  /uauth/users/invitations/invite:
    post:
      tags:
        - User management
      summary: Invite user
      description: |
        Invite a user to join a workspace. The user receives an email with an invitation token.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: create`
      operationId: inviteUserUsingPOST
      requestBody:
        description: All the data sent in this request applies to the user being invited.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-BusinessProfileInvitationRequest"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-BusinessProfileInvitationResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-management/operation/inviteUserUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/users/invitations/invite \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"email":"string","firstName":"string","lastName":"string","roles":[0]}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"email\":\"string\",\"firstName\":\"string\",\"lastName\":\"string\",\"roles\":[0]}"

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

            conn.request("POST", "/uauth/users/invitations/invite", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "email": "string",
              "firstName": "string",
              "lastName": "string",
              "roles": [
                0
              ]
            });

            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/users/invitations/invite");
            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/users/invitations/invite",
              "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({email: 'string', firstName: 'string', lastName: 'string', roles: [0]}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/users/invitations/invite');
            $request->setMethod(HTTP_METH_POST);

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

            $request->setBody('{"email":"string","firstName":"string","lastName":"string","roles":[0]}');

            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/users/invitations/invite")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"email\":\"string\",\"firstName\":\"string\",\"lastName\":\"string\",\"roles\":[0]}")
              .asString();
  /uauth/users/invitations/invite-bulk:
    post:
      tags:
        - User management
      summary: Invite many users
      description: |
        Invite a number of users to the workspace at once. The users receive emails with invitation tokens.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: create`
      operationId: bulkInviteUsersUsingPOST
      requestBody:
        description: All the data sent in this request refers to the users being invited.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-BusinessProfileBulkInvitationRequest"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-BusinessProfileInvitationResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-management/operation/bulkInviteUsersUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/users/invitations/invite-bulk \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"invitations":[{"email":"string","firstName":"string","lastName":"string","roles":[0]}]}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"invitations\":[{\"email\":\"string\",\"firstName\":\"string\",\"lastName\":\"string\",\"roles\":[0]}]}"

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

            conn.request("POST", "/uauth/users/invitations/invite-bulk", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "invitations": [
                {
                  "email": "string",
                  "firstName": "string",
                  "lastName": "string",
                  "roles": [
                    0
                  ]
                }
              ]
            });

            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/users/invitations/invite-bulk");
            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/users/invitations/invite-bulk",
              "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({
              invitations: [{email: 'string', firstName: 'string', lastName: 'string', roles: [0]}]
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/users/invitations/invite-bulk');
            $request->setMethod(HTTP_METH_POST);

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

            $request->setBody('{"invitations":[{"email":"string","firstName":"string","lastName":"string","roles":[0]}]}');

            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/users/invitations/invite-bulk")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"invitations\":[{\"email\":\"string\",\"firstName\":\"string\",\"lastName\":\"string\",\"roles\":[0]}]}")
              .asString();
  /uauth/users/invitations/{invitationIds}:
    delete:
      tags:
        - User management
      summary: Delete invitations
      description: |
        Delete invitations that were not yet accepted.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: delete`
      operationId: deleteInvitationUsingDELETE
      parameters:
        - $ref: "#/components/parameters/uauth-InvitationIds"
      responses:
        "200":
          description: OK
          content: {}
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-management/operation/deleteInvitationUsingDELETE
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request DELETE \
              --url https://api.synerise.com/uauth/users/invitations/%7BinvitationIds%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("DELETE", "/uauth/users/invitations/%7BinvitationIds%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("DELETE", "https://api.synerise.com/uauth/users/invitations/%7BinvitationIds%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": "DELETE",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/uauth/users/invitations/%7BinvitationIds%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/users/invitations/%7BinvitationIds%7D');
            $request->setMethod(HTTP_METH_DELETE);

            $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.delete("https://api.synerise.com/uauth/users/invitations/%7BinvitationIds%7D")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /uauth/users/invitations/{invitationId}:
    post:
      tags:
        - User management
      summary: Update invitation
      description: |
        Update the details of an invitation.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: update`
      operationId: updateInvitationUsingPOST
      parameters:
        - name: invitationId
          in: path
          description: To obtain the invitation ID, check the [list of users with PENDING status](#/operation/UsersListingUsingGET). The invitation ID for a user is the same as the ID of that user.
          required: true
          schema:
            type: integer
            format: int64
      requestBody:
        description: All the data sent in this request refers to the user being invited.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-InvitationUpdateRequest"
        required: true
      responses:
        "200":
          description: OK
          content: {}
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-management/operation/updateInvitationUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/users/invitations/%7BinvitationId%7D \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"firstName":"string","lastName":"string","roles":[0]}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"firstName\":\"string\",\"lastName\":\"string\",\"roles\":[0]}"

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

            conn.request("POST", "/uauth/users/invitations/%7BinvitationId%7D", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "firstName": "string",
              "lastName": "string",
              "roles": [
                0
              ]
            });

            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/users/invitations/%7BinvitationId%7D");
            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/users/invitations/%7BinvitationId%7D",
              "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({firstName: 'string', lastName: 'string', roles: [0]}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/users/invitations/%7BinvitationId%7D');
            $request->setMethod(HTTP_METH_POST);

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

            $request->setBody('{"firstName":"string","lastName":"string","roles":[0]}');

            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/users/invitations/%7BinvitationId%7D")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"firstName\":\"string\",\"lastName\":\"string\",\"roles\":[0]}")
              .asString();
  /uauth/users/my-account/strongest-password-settings:
    get:
      tags:
        - Access control
      operationId: getStrongestPasswordSettings
      summary: Get own strongest password policy
      description: |
        If a user has access to more than one workspace, you can use this endpoint to find the strictest password policy of all the policies in these workspaces. The user's password must meet the requirements of that strictest policy.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>
      responses:
        "200":
          description: OK
          content:
            "*/*":
              schema:
                $ref: "#/components/schemas/uauth-BusinessProfilePasswordSettingsData"
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-control/operation/getStrongestPasswordSettings
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/uauth/users/my-account/strongest-password-settings
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            conn.request("GET", "/uauth/users/my-account/strongest-password-settings")

            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/users/my-account/strongest-password-settings");

            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/users/my-account/strongest-password-settings",
              "headers": {}
            };

            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/users/my-account/strongest-password-settings');
            $request->setMethod(HTTP_METH_GET);

            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/users/my-account/strongest-password-settings")
              .asString();
  /uauth/users/listing:
    get:
      tags:
        - User management
      summary: List users
      description: |
        List users from the current workspace

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: read`
      operationId: listUsersUsingGET
      parameters:
        - $ref: "#/components/parameters/uauth-PaginationPage"
        - $ref: "#/components/parameters/uauth-PaginationSize"
        - name: status
          in: query
          description: Filters the results by status of the users
          required: true
          schema:
            type: string
            enum:
              - ALL
              - ACTIVE
              - PENDING
              - EXPIRED
              - GUEST
              - MANAGED
        - name: search
          in: query
          required: true
          description: String to search for in the first names, surnames, and email addresses
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-ReactUsersListing"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-management/operation/listUsersUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url 'https://api.synerise.com/uauth/users/listing?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE&status=SOME_STRING_VALUE&search=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/users/listing?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE&status=SOME_STRING_VALUE&search=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/users/listing?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE&status=SOME_STRING_VALUE&search=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/users/listing?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE&status=SOME_STRING_VALUE&search=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/users/listing');
            $request->setMethod(HTTP_METH_GET);

            $request->setQueryData([
              'page' => 'SOME_INTEGER_VALUE',
              'size' => 'SOME_INTEGER_VALUE',
              'status' => 'SOME_STRING_VALUE',
              'search' => '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/users/listing?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE&status=SOME_STRING_VALUE&search=SOME_STRING_VALUE")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /uauth/users/listing/autocomplete:
    get:
      tags:
        - User management
      summary: Autocomplete user search result
      description: |
        You can use this endpoint to obtain data for search autocomplete.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required (at least one):** `settings_users: read`, `analytics: read`
      operationId: getListingAutocomplete
      parameters:
        - name: email
          in: query
          description: User's email address
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/uauth-UserAutoCompleteResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-management/operation/getListingAutocomplete
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url 'https://api.synerise.com/uauth/users/listing/autocomplete?email=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/users/listing/autocomplete?email=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/users/listing/autocomplete?email=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/users/listing/autocomplete?email=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/users/listing/autocomplete');
            $request->setMethod(HTTP_METH_GET);

            $request->setQueryData([
              'email' => '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/users/listing/autocomplete?email=SOME_STRING_VALUE")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /uauth/users/profile-association/{ids}:
    delete:
      tags:
        - User management
      summary: Remove users from workspace
      description: |
        Delete user associations from a workspace. This does not delete the user accounts.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: delete`
      operationId: deleteUsersUsingDELETE
      parameters:
        - $ref: "#/components/parameters/uauth-UserIds"
      responses:
        "200":
          description: OK
          content: {}
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-management/operation/deleteUsersUsingDELETE
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request DELETE \
              --url 'https://api.synerise.com/uauth/users/profile-association/11405,11406,11407' \
              --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("DELETE", "/uauth/users/profile-association/11405,11406,11407", 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("DELETE", "https://api.synerise.com/uauth/users/profile-association/11405,11406,11407");
            xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");

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

            const options = {
              "method": "DELETE",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/uauth/users/profile-association/11405,11406,11407",
              "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/users/profile-association/11405,11406,11407');
            $request->setMethod(HTTP_METH_DELETE);

            $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.delete("https://api.synerise.com/uauth/users/profile-association/11405,11406,11407")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /uauth/users/my-account:
    get:
      tags:
        - User account management
      summary: Get user's own data
      description: |
        A user can retrieve their account data.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>
      operationId: getUserOwnDataUsingGET
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-MyAccountUserResponse"
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: Not Found
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-account-management/operation/getUserOwnDataUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/uauth/users/my-account \
              --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/users/my-account", 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/users/my-account");
            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/users/my-account",
              "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/users/my-account');
            $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/users/my-account")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
    post:
      tags:
        - User account management
      summary: Update user's own data
      description: |
        A user can update their own details.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>
      operationId: updateUsersOwnDataUsingPOST
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-ReactUserEditRequest"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-MyAccountUserResponse"
        "201":
          description: Created
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: Not Found
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-account-management/operation/updateUsersOwnDataUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/users/my-account \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"firstName":"string","lastName":"string","avatar":"string","phone":"string","language":"pl","organizationRole":"string","introduction":"string","confirmed":true,"mailAccountId":0,"description":"string","dateFormatNotation":"US","timeFormatNotation":"US","numberFormatNotation":"US"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"firstName\":\"string\",\"lastName\":\"string\",\"avatar\":\"string\",\"phone\":\"string\",\"language\":\"pl\",\"organizationRole\":\"string\",\"introduction\":\"string\",\"confirmed\":true,\"mailAccountId\":0,\"description\":\"string\",\"dateFormatNotation\":\"US\",\"timeFormatNotation\":\"US\",\"numberFormatNotation\":\"US\"}"

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

            conn.request("POST", "/uauth/users/my-account", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "firstName": "string",
              "lastName": "string",
              "avatar": "string",
              "phone": "string",
              "language": "pl",
              "organizationRole": "string",
              "introduction": "string",
              "confirmed": true,
              "mailAccountId": 0,
              "description": "string",
              "dateFormatNotation": "US",
              "timeFormatNotation": "US",
              "numberFormatNotation": "US"
            });

            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/users/my-account");
            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/users/my-account",
              "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({
              firstName: 'string',
              lastName: 'string',
              avatar: 'string',
              phone: 'string',
              language: 'pl',
              organizationRole: 'string',
              introduction: 'string',
              confirmed: true,
              mailAccountId: 0,
              description: 'string',
              dateFormatNotation: 'US',
              timeFormatNotation: 'US',
              numberFormatNotation: 'US'
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/users/my-account');
            $request->setMethod(HTTP_METH_POST);

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

            $request->setBody('{"firstName":"string","lastName":"string","avatar":"string","phone":"string","language":"pl","organizationRole":"string","introduction":"string","confirmed":true,"mailAccountId":0,"description":"string","dateFormatNotation":"US","timeFormatNotation":"US","numberFormatNotation":"US"}');

            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/users/my-account")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"firstName\":\"string\",\"lastName\":\"string\",\"avatar\":\"string\",\"phone\":\"string\",\"language\":\"pl\",\"organizationRole\":\"string\",\"introduction\":\"string\",\"confirmed\":true,\"mailAccountId\":0,\"description\":\"string\",\"dateFormatNotation\":\"US\",\"timeFormatNotation\":\"US\",\"numberFormatNotation\":\"US\"}")
              .asString();
    delete:
      tags:
        - User account management
      summary: Delete user's own account
      description: |
        A user can delete their own account.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>
      operationId: deleteUserUsingDELETE
      responses:
        "200":
          description: OK
          content: {}
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-account-management/operation/deleteUserUsingDELETE
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request DELETE \
              --url https://api.synerise.com/uauth/users/my-account \
              --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("DELETE", "/uauth/users/my-account", 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("DELETE", "https://api.synerise.com/uauth/users/my-account");
            xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");

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

            const options = {
              "method": "DELETE",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/uauth/users/my-account",
              "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/users/my-account');
            $request->setMethod(HTTP_METH_DELETE);

            $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.delete("https://api.synerise.com/uauth/users/my-account")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /uauth/users/{userId}:
    get:
      tags:
        - User management
      summary: Get user data
      operationId: getUserDataUsingGET
      parameters:
        - $ref: "#/components/parameters/uauth-UserId"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-ReactUserResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-management/operation/getUserDataUsingGET
      description: |
        

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/uauth/users/%7BuserId%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("GET", "/uauth/users/%7BuserId%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("GET", "https://api.synerise.com/uauth/users/%7BuserId%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": "GET",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/uauth/users/%7BuserId%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/users/%7BuserId%7D');
            $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/users/%7BuserId%7D")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
    post:
      tags:
        - User management
      summary: Update user data
      operationId: updateUserDataUsingPOST
      parameters:
        - $ref: "#/components/parameters/uauth-UserId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-ReactOtherUserEditRequest"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-ReactUserResponse"
        "201":
          description: Created
          content: {}
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-management/operation/updateUserDataUsingPOST
      description: |
        

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/users/%7BuserId%7D \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"firstName":"string","lastName":"string","avatar":"string","phone":"string","language":"pl","organizationRole":"string","introduction":"string","confirmed":true,"mailAccountId":0,"description":"string","dateFormatNotation":"US","timeFormatNotation":"US","numberFormatNotation":"US","roles":[0]}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"firstName\":\"string\",\"lastName\":\"string\",\"avatar\":\"string\",\"phone\":\"string\",\"language\":\"pl\",\"organizationRole\":\"string\",\"introduction\":\"string\",\"confirmed\":true,\"mailAccountId\":0,\"description\":\"string\",\"dateFormatNotation\":\"US\",\"timeFormatNotation\":\"US\",\"numberFormatNotation\":\"US\",\"roles\":[0]}"

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

            conn.request("POST", "/uauth/users/%7BuserId%7D", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "firstName": "string",
              "lastName": "string",
              "avatar": "string",
              "phone": "string",
              "language": "pl",
              "organizationRole": "string",
              "introduction": "string",
              "confirmed": true,
              "mailAccountId": 0,
              "description": "string",
              "dateFormatNotation": "US",
              "timeFormatNotation": "US",
              "numberFormatNotation": "US",
              "roles": [
                0
              ]
            });

            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/users/%7BuserId%7D");
            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/users/%7BuserId%7D",
              "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({
              firstName: 'string',
              lastName: 'string',
              avatar: 'string',
              phone: 'string',
              language: 'pl',
              organizationRole: 'string',
              introduction: 'string',
              confirmed: true,
              mailAccountId: 0,
              description: 'string',
              dateFormatNotation: 'US',
              timeFormatNotation: 'US',
              numberFormatNotation: 'US',
              roles: [0]
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/users/%7BuserId%7D');
            $request->setMethod(HTTP_METH_POST);

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

            $request->setBody('{"firstName":"string","lastName":"string","avatar":"string","phone":"string","language":"pl","organizationRole":"string","introduction":"string","confirmed":true,"mailAccountId":0,"description":"string","dateFormatNotation":"US","timeFormatNotation":"US","numberFormatNotation":"US","roles":[0]}');

            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/users/%7BuserId%7D")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"firstName\":\"string\",\"lastName\":\"string\",\"avatar\":\"string\",\"phone\":\"string\",\"language\":\"pl\",\"organizationRole\":\"string\",\"introduction\":\"string\",\"confirmed\":true,\"mailAccountId\":0,\"description\":\"string\",\"dateFormatNotation\":\"US\",\"timeFormatNotation\":\"US\",\"numberFormatNotation\":\"US\",\"roles\":[0]}")
              .asString();
  /uauth/users/activate:
    post:
      tags:
        - User management
      summary: Activate users
      description: |
        Activate access to the workspace for a number of users

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: delete`
      operationId: activateUsersUsingPOST
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-ActivationRequest"
      responses:
        "200":
          description: OK
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-management/operation/activateUsersUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/users/activate \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"ids":[0]}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"ids\":[0]}"

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

            conn.request("POST", "/uauth/users/activate", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "ids": [
                0
              ]
            });

            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/users/activate");
            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/users/activate",
              "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({ids: [0]}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

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

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

            $request->setBody('{"ids":[0]}');

            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/users/activate")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"ids\":[0]}")
              .asString();
  /uauth/users/deactivate:
    post:
      tags:
        - User management
      summary: De-activate users
      description: |
        De-activate access to the workspace for a number of users

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: update`
      operationId: deactivateUsersUsingPOST
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-ActivationRequest"
      responses:
        "200":
          description: OK
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-management/operation/deactivateUsersUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/users/deactivate \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"ids":[0]}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"ids\":[0]}"

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

            conn.request("POST", "/uauth/users/deactivate", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "ids": [
                0
              ]
            });

            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/users/deactivate");
            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/users/deactivate",
              "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({ids: [0]}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

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

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

            $request->setBody('{"ids":[0]}');

            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/users/deactivate")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"ids\":[0]}")
              .asString();
  /uauth/users/{userId}/access-time:
    put:
      tags:
        - User management
      summary: Change access expiration time
      description: |
        Change the date when a user's access to the workspace is cancelled.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: update`
      operationId: changeUserAccessExpirationDateUsingPut
      parameters:
        - $ref: "#/components/parameters/uauth-UserId"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-ReactUserProlongAccessRequest"
        required: true
      responses:
        "200":
          description: OK
          content: {}
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-management/operation/changeUserAccessExpirationDateUsingPut
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request PUT \
              --url https://api.synerise.com/uauth/users/%7BuserId%7D/access-time \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"expirationDate":"2019-08-24T14:15:22Z"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"expirationDate\":\"2019-08-24T14:15:22Z\"}"

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

            conn.request("PUT", "/uauth/users/%7BuserId%7D/access-time", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "expirationDate": "2019-08-24T14:15:22Z"
            });

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

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

            xhr.open("PUT", "https://api.synerise.com/uauth/users/%7BuserId%7D/access-time");
            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": "PUT",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/uauth/users/%7BuserId%7D/access-time",
              "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({expirationDate: '2019-08-24T14:15:22Z'}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/users/%7BuserId%7D/access-time');
            $request->setMethod(HTTP_METH_PUT);

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

            $request->setBody('{"expirationDate":"2019-08-24T14:15:22Z"}');

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

              echo $response->getBody();
            } catch (HttpException $ex) {
              echo $ex;
            }
        - lang: Java
          label: Java
          source: |-
            HttpResponse<String> response = Unirest.put("https://api.synerise.com/uauth/users/%7BuserId%7D/access-time")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"expirationDate\":\"2019-08-24T14:15:22Z\"}")
              .asString();
  /uauth/users/{userId}/password-reset:
    post:
      tags:
        - User management
      summary: Reset another user's password
      description: |
        Request a password reset for another user. That user receives an email with a password reset token. Their account is locked until the new password is set.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: update`
      operationId: resetPasswordUsingPOST
      parameters:
        - $ref: "#/components/parameters/uauth-UserId"
      responses:
        "200":
          description: OK
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-management/operation/resetPasswordUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/users/%7BuserId%7D/password-reset
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            conn.request("POST", "/uauth/users/%7BuserId%7D/password-reset")

            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/users/%7BuserId%7D/password-reset");

            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/users/%7BuserId%7D/password-reset",
              "headers": {}
            };

            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/users/%7BuserId%7D/password-reset');
            $request->setMethod(HTTP_METH_POST);

            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/users/%7BuserId%7D/password-reset")
              .asString();
  /uauth/users/{userId}/mfa-reset:
    put:
      tags:
        - User management
      summary: Reset another user's multi-factor authentication
      description: |
        You can reset the settings of another user's multi-factor authentication. This can be used, for example, if the user has lost both their device with the MFA application and the recovery code.
        The user will need to re-enable MFA in the same way as when setting it up for the first time.


        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: update`
      operationId: resetMFAUsingPUT
      parameters:
        - $ref: "#/components/parameters/uauth-UserId"
      responses:
        "200":
          description: OK
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-management/operation/resetMFAUsingPUT
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request PUT \
              --url https://api.synerise.com/uauth/users/%7BuserId%7D/mfa-reset
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            conn.request("PUT", "/uauth/users/%7BuserId%7D/mfa-reset")

            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("PUT", "https://api.synerise.com/uauth/users/%7BuserId%7D/mfa-reset");

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

            const options = {
              "method": "PUT",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/uauth/users/%7BuserId%7D/mfa-reset",
              "headers": {}
            };

            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/users/%7BuserId%7D/mfa-reset');
            $request->setMethod(HTTP_METH_PUT);

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

              echo $response->getBody();
            } catch (HttpException $ex) {
              echo $ex;
            }
        - lang: Java
          label: Java
          source: |-
            HttpResponse<String> response = Unirest.put("https://api.synerise.com/uauth/users/%7BuserId%7D/mfa-reset")
              .asString();
  /uauth/users/{ids}:
    delete:
      tags:
        - User management
      summary: Delete user account
      description: |
        Permanently deletes a user account.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users: delete`
      operationId: deleteManagedUserUsingDELETE
      parameters:
        - $ref: "#/components/parameters/uauth-UserIds"
      responses:
        "200":
          description: OK
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/User-management/operation/deleteManagedUserUsingDELETE
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request DELETE \
              --url 'https://api.synerise.com/uauth/users/11405,11406,11407' \
              --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("DELETE", "/uauth/users/11405,11406,11407", 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("DELETE", "https://api.synerise.com/uauth/users/11405,11406,11407");
            xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");

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

            const options = {
              "method": "DELETE",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/uauth/users/11405,11406,11407",
              "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/users/11405,11406,11407');
            $request->setMethod(HTTP_METH_DELETE);

            $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.delete("https://api.synerise.com/uauth/users/11405,11406,11407")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /uauth/settings/user-bp-ip-policy:
    get:
      tags:
        - Access control
      summary: Get IP allowlist policy
      operationId: getUserBpIpPolicyUsingGET
      description: |
        Retrieve the details of IP allowlisting policy of the workspace.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users_am_ip_access_restriction: read`
      responses:
        "200":
          description: IP policy details
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-IpPolicySettings"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-control/operation/getUserBpIpPolicyUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/uauth/settings/user-bp-ip-policy \
              --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/settings/user-bp-ip-policy", 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/settings/user-bp-ip-policy");
            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/settings/user-bp-ip-policy",
              "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/settings/user-bp-ip-policy');
            $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/settings/user-bp-ip-policy")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
    post:
      tags:
        - Access control
      summary: Update IP allowlist policy
      operationId: updateUserBpIpPolicyUsingPOST
      description: |
        Update the details of IP allowlisting policy of the workspace.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users_am_ip_access_restriction: update`
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-IpPolicySettings"
        required: true
      responses:
        "200":
          description: Updated IP policy
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-IpPolicySettings"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-control/operation/updateUserBpIpPolicyUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/settings/user-bp-ip-policy \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"enabled":true,"enableSupportSubnets":true,"ipPolicy":["string"]}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"enabled\":true,\"enableSupportSubnets\":true,\"ipPolicy\":[\"string\"]}"

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

            conn.request("POST", "/uauth/settings/user-bp-ip-policy", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "enabled": true,
              "enableSupportSubnets": true,
              "ipPolicy": [
                "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/settings/user-bp-ip-policy");
            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/settings/user-bp-ip-policy",
              "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({enabled: true, enableSupportSubnets: true, ipPolicy: ['string']}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/settings/user-bp-ip-policy');
            $request->setMethod(HTTP_METH_POST);

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

            $request->setBody('{"enabled":true,"enableSupportSubnets":true,"ipPolicy":["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/settings/user-bp-ip-policy")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"enabled\":true,\"enableSupportSubnets\":true,\"ipPolicy\":[\"string\"]}")
              .asString();
  /uauth/strongest-password-settings-by-email/{email}:
    get:
      tags:
        - Access control
      summary: Get strongest password policy of a User
      description: |
        If a user has access to more than one workspace, you can use this endpoint to find the strictest password policy of all the policies in these workspaces. The user's password must meet the requirements of that strictest policy.

        ---

        **Authentication:** Not required
      operationId: getStrongestPasswordSettingsUsingGET
      parameters:
        - name: email
          in: path
          description: User's email address
          required: true
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-BusinessProfilePasswordSettingsData"
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: Not Found
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-control/operation/getStrongestPasswordSettingsUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/uauth/strongest-password-settings-by-email/%7Bemail%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("GET", "/uauth/strongest-password-settings-by-email/%7Bemail%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("GET", "https://api.synerise.com/uauth/strongest-password-settings-by-email/%7Bemail%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": "GET",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/uauth/strongest-password-settings-by-email/%7Bemail%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/strongest-password-settings-by-email/%7Bemail%7D');
            $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/strongest-password-settings-by-email/%7Bemail%7D")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /uauth/users/mfa/initialization:
    post:
      tags:
        - Access control
      summary: Initiate multi-factor authentication for user
      description: |
        Begins the process of enabling multi-factor authentication for a user by initiating it.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>
      operationId: initiateUserMfaUsingPOST
      security:
        - JWT: []
      parameters:
        - $ref: "#/components/parameters/uauth-mfaType"
      responses:
        "200":
          description: Secret and QR code URL
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-MultiFactorAuthInitResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-control/operation/initiateUserMfaUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url 'https://api.synerise.com/uauth/users/mfa/initialization?mfaType=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("POST", "/uauth/users/mfa/initialization?mfaType=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("POST", "https://api.synerise.com/uauth/users/mfa/initialization?mfaType=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": "POST",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/uauth/users/mfa/initialization?mfaType=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/users/mfa/initialization');
            $request->setMethod(HTTP_METH_POST);

            $request->setQueryData([
              'mfaType' => '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.post("https://api.synerise.com/uauth/users/mfa/initialization?mfaType=SOME_STRING_VALUE")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /uauth/users/mfa/confirmation:
    post:
      tags:
        - Access control
      summary: Confirm multi-factor authentication for user
      description: |
        Continues the process of enabling multi-factor authentication for a user by confirming it.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>
      operationId: confirmUserMfaUsingPOST
      security:
        - JWT: []
      parameters:
        - $ref: "#/components/parameters/uauth-mfaType"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-MultiFactorAuthConfirmRequest"
        required: true
      responses:
        "200":
          description: User's backup code
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-MultiFactorAuthConfirmResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-control/operation/confirmUserMfaUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url 'https://api.synerise.com/uauth/users/mfa/confirmation?mfaType=SOME_STRING_VALUE' \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"verificationCode":"string"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

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

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

            conn.request("POST", "/uauth/users/mfa/confirmation?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"
            });

            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/users/mfa/confirmation?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/users/mfa/confirmation?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'}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/users/mfa/confirmation');
            $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"}');

            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/users/mfa/confirmation?mfaType=SOME_STRING_VALUE")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"verificationCode\":\"string\"}")
              .asString();
  /uauth/users/mfa:
    delete:
      tags:
        - Access control
      summary: Remove multi-factor authentication for user
      description: |
        Removes user multi-factor authentication.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>
      operationId: removesUserMfaUsingPOST
      security:
        - JWT: []
      parameters:
        - $ref: "#/components/parameters/uauth-mfaType"
        - name: backupCode
          in: query
          description: User's backup code
          required: true
          schema:
            type: string
      responses:
        "204":
          description: No Content
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-control/operation/removesUserMfaUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request DELETE \
              --url 'https://api.synerise.com/uauth/users/mfa?mfaType=SOME_STRING_VALUE&backupCode=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("DELETE", "/uauth/users/mfa?mfaType=SOME_STRING_VALUE&backupCode=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("DELETE", "https://api.synerise.com/uauth/users/mfa?mfaType=SOME_STRING_VALUE&backupCode=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": "DELETE",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/uauth/users/mfa?mfaType=SOME_STRING_VALUE&backupCode=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/users/mfa');
            $request->setMethod(HTTP_METH_DELETE);

            $request->setQueryData([
              'mfaType' => 'SOME_STRING_VALUE',
              'backupCode' => '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.delete("https://api.synerise.com/uauth/users/mfa?mfaType=SOME_STRING_VALUE&backupCode=SOME_STRING_VALUE")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
  /uauth/settings/password-policy:
    get:
      tags:
        - Access control
      summary: Get user password policy
      description: |
        Retrieve the user password policy of the workspace.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users_am_password_policy: read`
      operationId: getPasswordSettingsUsingGET
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-PasswordSettingsData"
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: Not Found
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-control/operation/getPasswordSettingsUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/uauth/settings/password-policy \
              --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/settings/password-policy", 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/settings/password-policy");
            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/settings/password-policy",
              "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/settings/password-policy');
            $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/settings/password-policy")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .asString();
    post:
      tags:
        - Access control
      summary: Update user password policy
      description: |
        Update the user password policy. Entering `0` as the value disables a requirement.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `settings_users_am_password_policy: update`
      operationId: updateSettingsUsingPOST
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-PasswordSettingsData"
      responses:
        "200":
          description: New password policy
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-PasswordSettingsData"
        "401":
          description: Unauthorized
        "403":
          description: Forbidden
        "404":
          description: Not Found
      security:
        - JWT: []
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Access-control/operation/updateSettingsUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/settings/password-policy \
              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
              --header 'content-type: application/json' \
              --data '{"attempts":0,"block":0,"different":0,"digits":0,"expiration":0,"lowerLetters":0,"maxIdleTime":0,"maxLength":0,"minLength":0,"nextChange":0,"specialChars":0,"upperLetters":0}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"attempts\":0,\"block\":0,\"different\":0,\"digits\":0,\"expiration\":0,\"lowerLetters\":0,\"maxIdleTime\":0,\"maxLength\":0,\"minLength\":0,\"nextChange\":0,\"specialChars\":0,\"upperLetters\":0}"

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

            conn.request("POST", "/uauth/settings/password-policy", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "attempts": 0,
              "block": 0,
              "different": 0,
              "digits": 0,
              "expiration": 0,
              "lowerLetters": 0,
              "maxIdleTime": 0,
              "maxLength": 0,
              "minLength": 0,
              "nextChange": 0,
              "specialChars": 0,
              "upperLetters": 0
            });

            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/settings/password-policy");
            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/settings/password-policy",
              "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({
              attempts: 0,
              block: 0,
              different: 0,
              digits: 0,
              expiration: 0,
              lowerLetters: 0,
              maxIdleTime: 0,
              maxLength: 0,
              minLength: 0,
              nextChange: 0,
              specialChars: 0,
              upperLetters: 0
            }));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/settings/password-policy');
            $request->setMethod(HTTP_METH_POST);

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

            $request->setBody('{"attempts":0,"block":0,"different":0,"digits":0,"expiration":0,"lowerLetters":0,"maxIdleTime":0,"maxLength":0,"minLength":0,"nextChange":0,"specialChars":0,"upperLetters":0}');

            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/settings/password-policy")
              .header("Authorization", "Bearer REPLACE_BEARER_TOKEN")
              .header("content-type", "application/json")
              .body("{\"attempts\":0,\"block\":0,\"different\":0,\"digits\":0,\"expiration\":0,\"lowerLetters\":0,\"maxIdleTime\":0,\"maxLength\":0,\"minLength\":0,\"nextChange\":0,\"specialChars\":0,\"upperLetters\":0}")
              .asString();
  /uauth/managed-domains:
    get:
      tags:
        - Directory
      summary: List managed domains
      description: |
        Retrieve a list of all domains managed by the workspace.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `managed_domains: read`
      operationId: getManagedDomainListUsingGET
      parameters:
        - name: page
          in: query
          description: Page number (first page is 1)
          required: false
          schema:
            type: integer
            format: int32
            default: 1
        - name: size
          in: query
          description: The number of entries on a page
          required: false
          schema:
            type: integer
            format: int32
            default: 20
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-ManagedDomainListing"
        "201":
          description: Created
          content: {}
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Directory/operation/getManagedDomainListUsingGET
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url 'https://api.synerise.com/uauth/managed-domains?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            conn.request("GET", "/uauth/managed-domains?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE")

            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/managed-domains?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE");

            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/managed-domains?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE",
              "headers": {}
            };

            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/managed-domains');
            $request->setMethod(HTTP_METH_GET);

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

            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/managed-domains?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE")
              .asString();
    delete:
      tags:
        - Directory
      summary: Delete managed domain
      description: |
        Remove management settings for a domain.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `managed_domains: delete`
      operationId: deleteManagedDomainUsingDELETE
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-ManagedDomainRequest"
      responses:
        "201":
          description: Created
          content: {}
        "204":
          description: No Content
          content: {}
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Directory/operation/deleteManagedDomainUsingDELETE
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request DELETE \
              --url https://api.synerise.com/uauth/managed-domains \
              --header 'content-type: application/json' \
              --data '{"domain":"synerise.com"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"domain\":\"synerise.com\"}"

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

            conn.request("DELETE", "/uauth/managed-domains", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "domain": "synerise.com"
            });

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

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

            xhr.open("DELETE", "https://api.synerise.com/uauth/managed-domains");
            xhr.setRequestHeader("content-type", "application/json");

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

            const options = {
              "method": "DELETE",
              "hostname": "api.synerise.com",
              "port": null,
              "path": "/uauth/managed-domains",
              "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({domain: 'synerise.com'}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/managed-domains');
            $request->setMethod(HTTP_METH_DELETE);

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

            $request->setBody('{"domain":"synerise.com"}');

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

              echo $response->getBody();
            } catch (HttpException $ex) {
              echo $ex;
            }
        - lang: Java
          label: Java
          source: |-
            HttpResponse<String> response = Unirest.delete("https://api.synerise.com/uauth/managed-domains")
              .header("content-type", "application/json")
              .body("{\"domain\":\"synerise.com\"}")
              .asString();
  /uauth/managed-domains/initialize-code:
    get:
      tags:
        - Directory
      summary: Initialize managed domain
      description: |
        Generate a verification string for a domain. This string is then used in [this endpoint](#operation/verifyManagedDomainUsingPOST). The verification string for a particular workspace is always the same.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `managed_domains: create`
      operationId: initializeManagedDomainUsingPOST
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-ManagedDomainCodeResponse"
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Directory/operation/initializeManagedDomainUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.synerise.com/uauth/managed-domains/initialize-code
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            conn.request("GET", "/uauth/managed-domains/initialize-code")

            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/managed-domains/initialize-code");

            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/managed-domains/initialize-code",
              "headers": {}
            };

            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/managed-domains/initialize-code');
            $request->setMethod(HTTP_METH_GET);

            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/managed-domains/initialize-code")
              .asString();
  /uauth/managed-domains/verification:
    post:
      tags:
        - Directory
      summary: Verify managed domain
      description: |
        Verify a managed domain to assign it to a workspace. All users who belong to the domain are managed by that workspace.

        ---

        **API consumer:** <a href="/api-reference/authorization?tag=Authorization&amp;operationId=userLogin" target="_blank" rel="noopener">Synerise User</a>

        **User role permission required:** `managed_domains: create`
      operationId: verifyManagedDomainUsingPOST
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/uauth-ManagedDomainVerificationRequest"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/uauth-ManagedDomainResponse"
        "201":
          description: Created
          content: {}
        "401":
          description: Unauthorized
          content: {}
        "403":
          description: Forbidden
          content: {}
        "404":
          description: Not Found
          content: {}
      x-snr-doc-urls:
        - /api-reference/identity-and-access-management#tag/Directory/operation/verifyManagedDomainUsingPOST
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.synerise.com/uauth/managed-domains/verification \
              --header 'content-type: application/json' \
              --data '{"domain":"synerise.com","verificationMethod":"TXT_RECORD"}'
        - lang: Python
          label: Python
          source: |-
            import http.client

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

            payload = "{\"domain\":\"synerise.com\",\"verificationMethod\":\"TXT_RECORD\"}"

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

            conn.request("POST", "/uauth/managed-domains/verification", payload, headers)

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

            print(data.decode("utf-8"))
        - lang: JavaScript
          label: JavaScript
          source: |-
            const data = JSON.stringify({
              "domain": "synerise.com",
              "verificationMethod": "TXT_RECORD"
            });

            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/managed-domains/verification");
            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/managed-domains/verification",
              "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({domain: 'synerise.com', verificationMethod: 'TXT_RECORD'}));
            req.end();
        - lang: PHP
          label: PHP
          source: |-
            <?php

            $request = new HttpRequest();
            $request->setUrl('https://api.synerise.com/uauth/managed-domains/verification');
            $request->setMethod(HTTP_METH_POST);

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

            $request->setBody('{"domain":"synerise.com","verificationMethod":"TXT_RECORD"}');

            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/managed-domains/verification")
              .header("content-type", "application/json")
              .body("{\"domain\":\"synerise.com\",\"verificationMethod\":\"TXT_RECORD\"}")
              .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:
    business-profile-service-UniversalListBusinessProfilesForOrganizationUserResponse:
      type: object
      properties:
        data:
          type: array
          description: A list of workspaces
          items:
            $ref: "#/components/schemas/business-profile-service-BusinessProfileForOrganizationUserResponse"
        meta:
          $ref: "#/components/schemas/business-profile-service-UniversalListResponseMeta"
    business-profile-service-UniversalListResponseMeta:
      type: object
      description: Pagination data
      properties:
        count:
          type: integer
          format: int32
          description: Total number of items
        limit:
          type: integer
          format: int32
          description: Number of items per page
        links:
          type: array
          description: Links to other pages
          items:
            $ref: "#/components/schemas/business-profile-service-UniversalListResponseMetaLink"
    business-profile-service-UniversalListResponseMetaLink:
      type: object
      properties:
        rel:
          type: string
          description: Type of page relation
          enum:
            - first
            - next
            - prev
        url:
          type: string
          description: URL of the page
    business-profile-service-BusinessProfileForOrganizationUserResponse:
      type: object
      properties:
        author:
          $ref: "#/components/schemas/business-profile-service-UserId"
        name:
          $ref: "#/components/schemas/business-profile-service-WorkspaceName"
        subdomain:
          $ref: "#/components/schemas/business-profile-service-WorkspaceSubdomain"
        logo:
          $ref: "#/components/schemas/business-profile-service-WorkspaceLogo"
        hash:
          $ref: "#/components/schemas/business-profile-service-WorkspaceHash"
        guid:
          $ref: "#/components/schemas/business-profile-service-WorkspaceGuid"
        activeUsersCount:
          type: integer
          format: int64
          description: The number of active users
        created:
          $ref: "#/components/schemas/business-profile-service-CreationDate"
        updated:
          $ref: "#/components/schemas/business-profile-service-LastUpdateTime"
        canAccessWorkspace:
          type: boolean
          description: "`true` when the current user can access this workspace"
        businessProfileGroup:
          $ref: "#/components/schemas/business-profile-service-BusinessProfileGroupSimpleResponse"
    business-profile-service-BusinessProfileGroupSimpleResponse:
      type: object
      description: The group that this workspace belongs to (if applicable)
      properties:
        id:
          type: string
          format: uuid
          description: ID of the group
        name:
          type: string
          description: Name of the group
        profileIdentifier:
          type: string
          description: Profile identifier (key) used in the group
        createdAt:
          type: string
          format: date-time
          description: Creation time
        updatedAt:
          type: string
          format: date-time
          description: Last update time
    business-profile-service-LastUpdateTime:
      type: integer
      format: int64
      description: Last update time
    business-profile-service-CreationDate:
      type: integer
      format: int64
      description: Creation date
    business-profile-service-WorkspaceGuid:
      type: string
      format: uuid
      description: GUID of the workspace
    business-profile-service-WorkspaceHash:
      type: string
      description: Hash ID of the workspace
    business-profile-service-WorkspaceLogo:
      type: string
      description: Logo of the workspace
    business-profile-service-WorkspaceSubdomain:
      type: string
      description: Subdomain of the workspace
    business-profile-service-WorkspaceName:
      type: string
      description: Name of the workspace
    business-profile-service-UserId:
      type: integer
      description: Unique ID of a Synerise user
    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-BanSettingsPayload:
      type: object
      properties:
        blockingForClientEnabled:
          type: boolean
          description: When TRUE, first- and second-level bans are enabled. Permanent bans are always enabled.
        firstBanCollectingTime:
          type: integer
          format: int32
          description: |
            Time in seconds. If a Profile fails to log in too many times during this time, the account is banned. The number of login attempts is defined in `firstBanThreshold` and the duration is defined in `firstBanDuration`.

            **Note:** The timer starts at the first login attempt and is common for first-level, second-level, and permanent bans.
        firstBanDuration:
          type: integer
          format: int32
          description: Duration of the first-level ban in seconds. The first-level ban is applied to a Profile's identifier and cancelled after a successful password reset.
        firstBanThreshold:
          type: integer
          format: int32
          description: The number of failed login attempts before the first-level ban is applied.
        secondBanCollectingTime:
          type: integer
          format: int32
          description: |
            Time in seconds. If a Profile fails to log in too many times during this time, the account is banned. The number of login attempts is defined in `secondBanThreshold` and the duration is defined in `secondBanDuration`.

            **Note:** The timer starts at the first login attempt and is common for first-level, second-level, and permanent bans.
        secondBanDuration:
          type: integer
          format: int32
          description: Duration of the second-level ban in seconds. The second-level ban is applied to a Profile's identifier and cancelled after a successful password reset.
        secondBanThreshold:
          type: integer
          format: int32
          description: The number of failed login attempts before the second-level ban is applied.
        permanentBanCollectingTime:
          type: integer
          format: int32
          description: |
            Time in seconds. If a Profile fails to log in too many times during this time, the account is banned. The number of login attempts is defined in `permanentBanThreshold` and the duration is defined in `permanentBanDuration`.

            **Note:** The timer starts at the first login attempt and is common for first-level, second-level, and permanent bans.
        permanentBanDuration:
          type: integer
          format: int32
          description: Duration of the permanent ban in seconds. The permanent ban is applied to an IP address and cancelled after a successful password reset.
        permanentBanThreshold:
          type: integer
          format: int32
          description: The number of failed login attempts before the permanent ban is applied.
    sauth-TemplateSettingsData:
      type: object
      properties:
        clientEmailChangeRequestMailSubject:
          type: string
          description: Subject of the email change confirmation email. This is sent to the new address.
        clientEmailChangeRequestMailBody:
          nullable: true
          type: string
          description: HTML body of the email change confirmation email. All `"` characters must be escaped and all the code must be a single line. This is sent to the new address.
        clientEmailChangeRequestMailTemplateId:
          nullable: true
          type: string
          description: ID of the email change confirmation email body template. This email is sent to the new address. If you use a template, it overrides the content sent in `clientEmailChangeRequestMailBody`.
        clientEmailChangeNotificationMailSubject:
          type: string
          description: Subject of the email change notification email. This is sent to the current address.
        clientEmailChangeNotificationMailBody:
          nullable: true
          type: string
          description: HTML body of the email change notification email. All `"` characters must be escaped and all the code must be a single line. This is sent to the current address.
        clientEmailChangeNotificationMailTemplateId:
          nullable: true
          type: string
          description: ID of the email change notification email template. This email is sent to the current address. If you use a template, it overrides the content sent in `clientEmailChangeNotificationMailBody`.
      title: TemplateSettingsData
    sauth-DeviceControlSettingsPayload:
      type: object
      properties:
        deviceControlMode:
          type: string
          description: |
            Defines the type of device authorization.

            - OFF: No device authorization.
            - SOFT: The Profile is notified about logins from a new device, but the access is not blocked.
            - HARD: Login attempts from the new device are blocked until the Profile authorizes the device with the link or token received by email.
            - CONDITIONAL_BASED_ON_LOCATION: If a Profile logs in from a new device in Poland, they receive a notification (same as with SOFT setting). If the new device is outside of Poland, it must be authorized with a link or token received by email (same as with HARD setting). Other countries will be supported in the future.
          enum:
            - OFF
            - SOFT
            - HARD
            - CONDITIONAL_BASED_ON_LOCATION
        hardMailBody:
          type: string
          description: HTML body of the device authorization email for hard mode. All `"` characters must be escaped and all the code must be a single line.
        hardMailTitle:
          type: string
          description: Subject of the device authorization email for hard mode.
        hardTemplateId:
          type: string
          description: ID of the device authorization email template for hard mode. If you use a template, it overrides the content sent in `hardMailBody`.
        softMailBody:
          type: string
          description: HTML body of the device authorization email for soft mode. All `"` characters must be escaped and all the code must be a single line.
        softMailTitle:
          type: string
          description: Subject of the device authorization email for soft mode.
        softTemplateId:
          type: string
          description: ID of the device authorization email template for soft mode. If you use a template, it overrides the content sent in `softMailBody`.
        deviceUnlockSuccessRedirectUrl:
          type: string
        deviceUnlockAlreadyConfirmedRedirectUrl:
          type: string
    sauth-GeneralSettingsData:
      type: object
      required:
        - tokenLifetimeInSeconds
      properties:
        tokenLifetimeInSeconds:
          $ref: "#/components/schemas/sauth-TokenLifetimeInSeconds"
        voucherPoolUuid:
          $ref: "#/components/schemas/sauth-VoucherPoolUuid"
        allowOverwriteCustomIdentify:
          $ref: "#/components/schemas/sauth-AllowOverwriteCustomIdentify"
        allowOverwriteExternalId:
          $ref: "#/components/schemas/sauth-AllowOverwriteExternalId"
        allowEmailChangeFromWebForm:
          $ref: "#/components/schemas/sauth-AllowEmailChangeFromWebForm"
        allowToPassCustomIdentifyWithVoucherPool:
          $ref: "#/components/schemas/sauth-AllowToPassCustomIdentifyWithVoucherPool"
      title: GeneralSettingsData
    sauth-AllowToPassCustomIdentifyWithVoucherPool:
      type: boolean
      default: false
      description: When set to TRUE, `customId` can be provided even if `voucher pool` is configured. In this case voucher will not be assigned.
    sauth-AllowEmailChangeFromWebForm:
      type: boolean
      default: false
      description: When set to TRUE, email change can be requested/confirmed using a web form.
    sauth-AllowOverwriteExternalId:
      type: boolean
      default: false
      description: |
        When set to TRUE, a profile's `externalId` value may be modified.

        This may be useful, for example, if someone deletes their account with an external authentication provider, and then registers a new account with the same email.
        The external provider assigns a new ID and you need to allow overwriting the existing external ID in Synerise in order to link the existing profile in Synerise with the newly created account from the external provider.
    sauth-AllowOverwriteCustomIdentify:
      type: boolean
      default: false
      description: When set to TRUE, customers' `customId` values may be modified. By default, the `customId` cannot be changed.
    sauth-VoucherPoolUuid:
      type: string
      default: null
      description: UUID of the voucher pool that stores `customId` values available for assignment to new Profiles, if applicable in your implementation.
    sauth-TokenLifetimeInSeconds:
      type: integer
      format: int64
      default: 0
      description: "The time in seconds before the authorization tokens expire. If set to `0` (default), the global Synerise setting is applied: 60 minutes."
    sauth-OauthSettingsResponse:
      type: object
      properties:
        enabled:
          type: boolean
        mode:
          $ref: "#/components/schemas/sauth-OauthMode"
        endpoint:
          $ref: "#/components/schemas/sauth-OauthEndpoint"
        jwkEndpoint:
          $ref: "#/components/schemas/sauth-OauthJwkEndpoint"
        headers:
          $ref: "#/components/schemas/sauth-OauthHeaders"
        mapping:
          $ref: "#/components/schemas/sauth-OauthMapping"
        name:
          $ref: "#/components/schemas/sauth-OauthName"
        mappedExternal:
          $ref: "#/components/schemas/sauth-OauthMappedExternal"
        syncDataOnLogin:
          $ref: "#/components/schemas/sauth-OauthSyncDataOnLogin"
        validation:
          $ref: "#/components/schemas/sauth-OauthValidation"
    sauth-OauthValidation:
      type: object
      description: A validation mapping of fields from jwt token.
      additionalProperties:
        type: string
    sauth-OauthSyncDataOnLogin:
      type: boolean
      default: false
      description: When set to TRUE, profile data from an external authentication provider is uploaded into the Synerise database every time the profile logs in. When FALSE, the data is saved only the first time a profile logs in, so that the amount of data is reduced in later authentication requests.
    sauth-OauthMappedExternal:
      type: boolean
      default: true
      description: If set to FALSE, the authentication request must include the customer's `customId` in the body.
    sauth-OauthName:
      type: string
      description: Name of the integration
    sauth-OauthMapping:
      type: object
      description: 'A mapping of fields from the Synerise endpoint to your OAuth endpoint. For example, if your field is called `token` and its counterpart in Synerise is `accessToken`, the mapping is `"accessToken": "token"`'
      additionalProperties:
        type: string
    sauth-OauthHeaders:
      type: object
      description: |
        'Headers for the authorization request when `SERVER` mode is selected. For example, `"X-Custom-Header": "someValue"`  
        If you want to pass the token from your backend in a header, use the `{{_snrs_access_token}}` insert'
      example:
        Content-Type: application/json
        Authorization: Bearer {{_snrs_access_token}}
        Cache-control: no-cache
      additionalProperties:
        type: string
    sauth-OauthJwkEndpoint:
      type: string
      description: |
        URL of the JWK when the `JWT_TOKEN` mode is selected.  
        If you want to pass the token from your backend in the URL, use the `{{_snrs_access_token}}` insert.
    sauth-OauthEndpoint:
      type: string
      description: |
        URL of the OAuth authorization endpoint when the `SERVER` mode is selected.  
        If you want to pass the token from your backend in the URL, use the `{{_snrs_access_token}}` insert.
    sauth-OauthMode:
      type: string
      enum:
        - JWT_TOKEN
        - SERVER
      description: |
        The mode of authentication:

        - SERVER: Your OAuth server returns a token to the client device; the client device passes it to the Synerise backend; Synerise backend verifies the token with your OAuth backend
        - JWT_TOKEN: Your OAuth server returns a JWT to the client device; the client device passes it to the Synerise backend; the Synerise backends verifies it with the provided JWK. This mode requires fewer resources from your backend.
    sauth-OauthSettingsRequest:
      anyOf:
        - type: object
          title: "Mode: SERVER"
          properties:
            enabled:
              type: boolean
            mode:
              $ref: "#/components/schemas/sauth-OauthMode"
            name:
              $ref: "#/components/schemas/sauth-OauthName"
            endpoint:
              $ref: "#/components/schemas/sauth-OauthEndpoint"
            headers:
              $ref: "#/components/schemas/sauth-OauthHeaders"
            mapping:
              $ref: "#/components/schemas/sauth-OauthMapping"
            mappedExternal:
              $ref: "#/components/schemas/sauth-OauthMappedExternal"
            syncDataOnLogin:
              $ref: "#/components/schemas/sauth-OauthSyncDataOnLogin"
        - type: object
          title: "Mode: JWT_TOKEN"
          properties:
            enabled:
              type: boolean
            mode:
              $ref: "#/components/schemas/sauth-OauthMode"
            name:
              $ref: "#/components/schemas/sauth-OauthName"
            jwkEndpoint:
              $ref: "#/components/schemas/sauth-OauthJwkEndpoint"
            mapping:
              $ref: "#/components/schemas/sauth-OauthMapping"
            mappedExternal:
              $ref: "#/components/schemas/sauth-OauthMappedExternal"
            syncDataOnLogin:
              $ref: "#/components/schemas/sauth-OauthSyncDataOnLogin"
            validation:
              $ref: "#/components/schemas/sauth-OauthValidation"
    sauth-SyneriseAuthSettingsData:
      required:
        - enabled
        - registrationType
      type: object
      properties:
        enabled:
          type: boolean
        registrationType:
          $ref: "#/components/schemas/sauth-RegistrationType"
        pinConfirmationType:
          type: string
          default: ON_CONFLICT_WITH_EXTERNAL_ACCOUNT
          enum:
            - EVERYONE
            - ON_CONFLICT_WITH_EXTERNAL_ACCOUNT
          description: Defines if PIN confirmation (if enabled) is required for all new accounts or only if there is a conflict with an existing account registered by using third-party Identity Providers.
        pinConfirmationLength:
          type: integer
          description: The number of characters in the PIN
          default: 6
        pinConfirmationValidInSeconds:
          type: integer
          default: 300
          description: TTL of the PIN code before it expires and cannot be used
        allowPinResendFromDifferentDeviceId:
          type: boolean
          default: false
          description: |
            When TRUE, a PIN email re-send can be requested from a different device than the last device that requested a PIN email.

            **NOTE:** Regardless of this setting, the activation request can only be sent from the last device that requested a PIN email.
        confirmationRedirectLink:
          $ref: "#/components/schemas/sauth-ConfirmationRedirectLink"
        confirmationMailSubject:
          type: string
          description: Subject of the account activation email
        confirmationMailBody:
          nullable: true
          type: string
          description: HTML body of the account activation email. All `"` characters must be escaped and all the code must be a single line.
        confirmationMailTemplateId:
          nullable: true
          type: string
          description: ID of the account activation email body template. If you use a template, it overrides the content sent in `confirmationMailBody`.
        passwordResetMailTemplateId:
          nullable: true
          type: string
          description: ID of the password reset confirmation email body template
        passwordResetMailSubject:
          type: string
          description: Subject of the password reset confirmation email
        passwordResetMailBody:
          nullable: true
          type: string
          description: HTML body of the password reset confirmation email. All `"` characters must be escaped and all the code must be a single line.
        pinConfirmationMailSubject:
          type: string
          description: Subject of the email with the PIN needed to confirm an account.
        pinConfirmationMailBody:
          nullable: true
          type: string
          description: HTML body of the email with the PIN needed to confirm an account. All `"` characters must be escaped and all the code must be a single line. The PIN code is inserted using the `{{ pin_code }}` Jinjava insert.
        pinConfirmationMailTemplateId:
          nullable: true
          type: string
          description: ID of the template for the email with the PIN needed to confirm an account. If you use a template, it overrides the content sent in `pinConfirmationMailBody`.
        maxLength:
          type: integer
          format: int32
          description: Maximum length of the password
        minLength:
          type: integer
          format: int32
          description: Minimum length of the password
        requireAtLeastOneLowercaseLetter:
          type: boolean
          description: When TRUE, the password must include at least one lowercase letter.
          default: false
        requireAtLeastOneNonAlphaNumericCharacter:
          type: boolean
          description: When TRUE, the password must include at least one non-alphanumeric character.
          default: false
        requireAtLeastOneNumber:
          type: boolean
          description: When TRUE, the password must include at least one number.
          default: false
        requireAtLeastOneUppercaseLetter:
          type: boolean
          description: When TRUE, the password must include at least one uppercase letter.
          default: false
    sauth-ConfirmationRedirectLink:
      type: string
      default: null
      description: Redirect URL of the confirmation link
    sauth-RegistrationType:
      type: string
      description: |
        Defines the Profile account activation type.

        - REQUIRE_ACTIVATION: the account is inactive until the link in the confirmation email is accessed.
        - REQUIRE_EMAIL_CONFIRMATION: the account is active and can be used immediately, but must be confirmed using the link from the confirmation email.
        - AUTOMATIC: no activation is required
        - REQUIRE_PIN_CONFIRMATION: PIN code confirmation is required. To send the PIN by email, the email template must include the `{{pin_code}}` jinjava tag.
      enum:
        - REQUIRE_ACTIVATION
        - REQUIRE_EMAIL_CONFIRMATION
        - REQUIRE_PIN_CONFIRMATION
        - AUTOMATIC
    sauth-FacebookOauthSettingsPayload:
      required:
        - enabled
      type: object
      properties:
        enabled:
          type: boolean
    sauth-GoogleOauthSettingsPayload:
      required:
        - enabled
      type: object
      properties:
        enabled:
          type: boolean
    sauth-AppleAuthSettingsPayload:
      type: object
      properties:
        enabled:
          type: boolean
          description: Defines if Sign in with Apple is enabled in this workspace.
        bundle:
          type: string
          description: Name of your application package
          example: com.synerise.sdk.sample-swift
    uauth-MarkUserFavoriteBusinessProfile:
      type: object
      properties:
        businessProfileGuid:
          type: string
        favorite:
          type: boolean
    uauth-ChangePasswordResponse:
      type: object
      properties:
        status:
          type: string
          enum:
            - OK
    uauth-ChangePasswordRequest:
      type: object
      properties:
        currentPassword:
          type: string
          description: The current password
        newPassword:
          type: string
          description: The new password
    uauth-PermissionGroupDetailsDTO:
      type: object
      description: "This schema is **recursive**: the `children` array can include more groups, which include more groups, etc."
      properties:
        id:
          type: integer
          description: ID of the group
          format: int64
        name:
          $ref: "#/components/schemas/uauth-PermissionGroupName"
        slug:
          $ref: "#/components/schemas/uauth-PermissionGroupSlug"
        path:
          type: string
          description: Permission group path (uses names)
          example: Ancestor Group < Parent Group < This Group
        left:
          type: integer
          format: int32
          description: Used by the frontend
        right:
          type: integer
          description: Used by the frontend
        deep:
          type: integer
          description: Used by the frontend
        canCreate:
          type: boolean
          description: When TRUE, the `create` permission exists in this group.
        canRead:
          type: boolean
          description: When TRUE, the `read` permission exists in this group.
        canUpdate:
          type: boolean
          description: When TRUE, the `update` permission exists in this group.
        canDelete:
          type: boolean
          description: When TRUE, the `delete` permission exists in this group.
        canExecute:
          type: boolean
          description: When TRUE, the `execute` permission exists in this group.
        create:
          type: boolean
          description: When TRUE, the `create` permission is enabled.
        read:
          type: boolean
          description: When TRUE, the `read` permission is enabled.
        update:
          type: boolean
          description: When TRUE, the `update` permission is enabled.
        delete:
          type: boolean
          description: When TRUE, the `delete` permission is enabled.
        execute:
          type: boolean
          description: When TRUE, the `execute` permission is enabled.
        createDisabled:
          type: boolean
          description: When TRUE, the `create` permission cannot be changed.
        readDisabled:
          type: boolean
          description: When TRUE, the `read` permission cannot be changed.
        updateDisabled:
          type: boolean
          description: When TRUE, the `update` permission cannot be changed.
        deleteDisabled:
          type: boolean
          description: When TRUE, the `delete` permission cannot be changed.
        executeDisabled:
          type: boolean
          description: When TRUE, the `execute` permission cannot be changed.
        children:
          type: array
          description: "An array of rule groups in this group. This schema is **recursive**: the `children` array can include more groups, which include more groups, etc."
          items:
            $ref: "#/components/schemas/uauth-PermissionGroupDetailsDTO"
    uauth-PermissionGroupSlug:
      type: string
      description: Slug of the permission group
    uauth-PermissionGroupName:
      type: string
      description: Name of the permission group
    uauth-PasswordResetRequest:
      required:
        - email
      type: object
      properties:
        email:
          $ref: "#/components/schemas/uauth-UserEmail"
    uauth-UserEmail:
      type: string
      description: User's email address
    uauth-PasswordResetConfirmation:
      type: object
      properties:
        token:
          $ref: "#/components/schemas/uauth-PasswordResetToken"
        password:
          type: string
          description: The new password
    uauth-PasswordResetToken:
      type: string
      description: Password reset token received by email
    uauth-RoleGroupResponse:
      type: object
      properties:
        data:
          type: array
          description: An array of roles in the group
          items:
            $ref: "#/components/schemas/uauth-RoleGroupRoleResponse"
        description:
          $ref: "#/components/schemas/uauth-RoleGroupDescription"
        editable:
          type: boolean
          description: Defines if the role group can be edited.
        id:
          type: integer
          format: int64
          description: ID of the role group
        name:
          $ref: "#/components/schemas/uauth-RoleGroupName"
    uauth-RoleGroupName:
      type: string
      description: Name of the role group
    uauth-RoleGroupDescription:
      type: string
      description: Description of the role group
    uauth-RoleGroupRoleResponse:
      type: object
      properties:
        author:
          $ref: "#/components/schemas/uauth-RoleGroupRoleUserResponse"
        description:
          $ref: "#/components/schemas/uauth-RoleDescription"
        editable:
          type: boolean
          description: Informs if the role is editable
        group:
          $ref: "#/components/schemas/uauth-RoleGroupId"
        id:
          $ref: "#/components/schemas/uauth-RoleId"
        name:
          $ref: "#/components/schemas/uauth-RoleName"
        updated:
          type: string
          format: date-time
          description: Date and time of the last update
    uauth-RoleName:
      type: string
      description: The name of the role
    uauth-RoleId:
      type: integer
      format: int64
      description: ID of the role
    uauth-RoleGroupId:
      type: integer
      format: int64
      description: ID of the group that includes this role
    uauth-RoleDescription:
      type: string
      description: Description of the role
    uauth-RoleGroupRoleUserResponse:
      type: object
      description: Details of the role's creator
      properties:
        avatar:
          $ref: "#/components/schemas/uauth-AvatarUrl"
        displayName:
          $ref: "#/components/schemas/uauth-UserDisplayName"
        firstName:
          $ref: "#/components/schemas/uauth-UserFirstName"
        id:
          $ref: "#/components/schemas/uauth-UserIdInteger"
        lastName:
          $ref: "#/components/schemas/uauth-UserLastName"
    uauth-UserLastName:
      type: string
      description: Last name of the user
    uauth-UserIdInteger:
      type: integer
      format: int64
      description: User ID
    uauth-UserFirstName:
      type: string
      description: First name of the user
    uauth-UserDisplayName:
      type: string
      description: User's display name
    uauth-AvatarUrl:
      type: string
      description: URL of the user's avatar
    uauth-RoleGroupDataRequest:
      type: object
      properties:
        name:
          $ref: "#/components/schemas/uauth-RoleGroupName"
        description:
          $ref: "#/components/schemas/uauth-RoleGroupDescription"
    uauth-RoleFullResponse:
      type: object
      properties:
        id:
          $ref: "#/components/schemas/uauth-RoleId"
        name:
          $ref: "#/components/schemas/uauth-RoleName"
        businessProfileId:
          $ref: "#/components/schemas/uauth-BusinessProfileId"
        shownAsResource:
          type: boolean
          description: Deprecated field
          deprecated: true
        manageable:
          type: boolean
          description: Defines if the role can be modified.
        pii:
          type: boolean
          description: Indicates if the role has access to personally identifiable information
        group:
          type: integer
          format: int64
          description: ID of the role group this role belongs to
        author:
          $ref: "#/components/schemas/uauth-RoleGroupRoleUserResponse"
        editable:
          type: boolean
          description: Informs if the role is editable
        description:
          type: string
          description: Description of the role
    uauth-BusinessProfileId:
      type: integer
      description: ID of the workspace
    uauth-RoleDataRequest:
      type: object
      required:
        - name
        - group
      properties:
        group:
          $ref: "#/components/schemas/uauth-RoleGroupId"
        name:
          $ref: "#/components/schemas/uauth-RoleName"
        description:
          $ref: "#/components/schemas/uauth-RoleDescription"
    uauth-UserRegistrationRequest:
      required:
        - email
        - password
      type: object
      properties:
        email:
          $ref: "#/components/schemas/uauth-UserEmail"
        password:
          $ref: "#/components/schemas/uauth-UserPassword"
        invitationToken:
          $ref: "#/components/schemas/uauth-OptionalInvitationToken"
        externalProviderToken:
          type: string
        externalProviderType:
          type: string
          enum:
            - GOOGLE
    uauth-OptionalInvitationToken:
      type: string
      description: Invitation token, received from another user
    uauth-UserPassword:
      type: string
      description: Account password
    uauth-InvitationResponse:
      type: object
      properties:
        email:
          $ref: "#/components/schemas/uauth-UserEmail"
        firstName:
          $ref: "#/components/schemas/uauth-UserFirstName"
        lastName:
          $ref: "#/components/schemas/uauth-UserLastName"
    uauth-ResendConfirmationPayload:
      type: object
      properties:
        email:
          $ref: "#/components/schemas/uauth-UserEmail"
    uauth-RoleResponse:
      type: object
      properties:
        businessProfileId:
          $ref: "#/components/schemas/uauth-BusinessProfileId"
        id:
          $ref: "#/components/schemas/uauth-RoleId"
        manageable:
          type: boolean
          description: Defines if the role can be modified.
        name:
          $ref: "#/components/schemas/uauth-RoleName"
        shownAsResource:
          type: boolean
          description: Deprecated field
          deprecated: true
        pii:
          type: boolean
          description: Indicates if the role has access to personally identifiable information
    uauth-BusinessProfileInvitationResponse:
      type: object
      properties:
        success:
          type: array
          items:
            type: string
          description: List of successfully invited email addresses
        fail:
          type: array
          items:
            $ref: "#/components/schemas/uauth-BusinessProfileInvitationFail"
          description: List of failed invitations
    uauth-BusinessProfileInvitationFail:
      type: object
      properties:
        email:
          type: string
        cause:
          type: string
    uauth-BusinessProfileInvitationRequest:
      type: object
      properties:
        email:
          $ref: "#/components/schemas/uauth-UserEmail"
        firstName:
          $ref: "#/components/schemas/uauth-UserFirstName"
        lastName:
          $ref: "#/components/schemas/uauth-UserLastName"
        roles:
          $ref: "#/components/schemas/uauth-UserRoles"
    uauth-UserRoles:
      type: array
      description: An array of roles (IDs) assigned to the user in the currently selected workspace
      items:
        type: integer
        format: int64
    uauth-BusinessProfileBulkInvitationRequest:
      type: object
      properties:
        invitations:
          type: array
          description: An array of users to invite
          items:
            $ref: "#/components/schemas/uauth-BusinessProfileInvitationRequest"
    uauth-InvitationUpdateRequest:
      type: object
      properties:
        firstName:
          $ref: "#/components/schemas/uauth-UserFirstName"
        lastName:
          $ref: "#/components/schemas/uauth-UserLastName"
        roles:
          $ref: "#/components/schemas/uauth-UserRoles"
    uauth-BusinessProfilePasswordSettingsData:
      type: object
      properties:
        attempts:
          $ref: "#/components/schemas/uauth-PasswordAttempts"
        block:
          $ref: "#/components/schemas/uauth-PasswordBlock"
        businessProfileId:
          $ref: "#/components/schemas/uauth-BusinessProfileId"
        different:
          $ref: "#/components/schemas/uauth-PasswordDifferent"
        digits:
          $ref: "#/components/schemas/uauth-PasswordDigits"
        expiration:
          $ref: "#/components/schemas/uauth-PasswordExpiration"
        lowerLetters:
          $ref: "#/components/schemas/uauth-PasswordLowerLetters"
        maxIdleTime:
          $ref: "#/components/schemas/uauth-PasswordMaxIdleTime"
        maxLength:
          $ref: "#/components/schemas/uauth-PasswordMaxLength"
        minLength:
          $ref: "#/components/schemas/uauth-PasswordMinLength"
        nextChange:
          $ref: "#/components/schemas/uauth-PasswordNextChange"
        specialChars:
          $ref: "#/components/schemas/uauth-PasswordSpecialChars"
        upperLetters:
          $ref: "#/components/schemas/uauth-PasswordUpperLetters"
    uauth-PasswordUpperLetters:
      type: integer
      format: int32
      description: The minimum number of upper-case letters in a password
    uauth-PasswordSpecialChars:
      type: integer
      format: int32
      description: The minimum number of special characters in a password
    uauth-PasswordNextChange:
      type: integer
      format: int32
      description: Currently not used
    uauth-PasswordMinLength:
      type: integer
      format: int32
      description: The minimum number of characters in a password
    uauth-PasswordMaxLength:
      type: integer
      format: int32
      description: The maximum number of characters in a password
    uauth-PasswordMaxIdleTime:
      type: integer
      format: int32
      description: Time (in seconds) after which an idle user is signed out
    uauth-PasswordLowerLetters:
      type: integer
      format: int32
      description: The minimum number of lower-case letters in a password
    uauth-PasswordExpiration:
      type: integer
      format: int32
      description: The number of days after which the passwords expire
    uauth-PasswordDigits:
      type: integer
      format: int32
      description: The minimum number of digits in a password
    uauth-PasswordDifferent:
      type: integer
      format: int32
      description: |
        Defines how many previous passwords are compared.

        For example, if set to 3, the new password must be different than the 3 last passwords.
    uauth-PasswordBlock:
      type: integer
      format: int32
      description: The number of days after which an account is blocked after the password expires.
    uauth-PasswordAttempts:
      type: integer
      format: int32
      description: The number of failed sign-in attempts after which an account is blocked
    uauth-ReactUsersListing:
      type: object
      properties:
        data:
          type: array
          description: A list of users
          items:
            $ref: "#/components/schemas/uauth-ReactUsersListingEntry"
        meta:
          $ref: "#/components/schemas/uauth-PaginationMeta"
    uauth-PaginationMeta:
      type: object
      description: Metadata of the request
      properties:
        pagination:
          $ref: "#/components/schemas/uauth-PaginationMetaPagination"
    uauth-PaginationMetaPagination:
      type: object
      description: Pagination metadata
      properties:
        limit:
          type: integer
          format: int32
          description: The number of entries per page
        page:
          type: integer
          format: int32
          description: Page number, starting with `0`
        pages:
          type: integer
          format: int32
          description: The total number of pages
        total:
          type: integer
          format: int32
          description: The total number of entries on all pages
    uauth-ReactUsersListingEntry:
      type: object
      properties:
        avatar:
          $ref: "#/components/schemas/uauth-AvatarUrl"
        created:
          $ref: "#/components/schemas/uauth-UserCreated"
        displayName:
          $ref: "#/components/schemas/uauth-UserDisplayName"
        email:
          $ref: "#/components/schemas/uauth-UserEmail"
        firstName:
          $ref: "#/components/schemas/uauth-UserFirstName"
        id:
          $ref: "#/components/schemas/uauth-UserIdInteger"
        lastLogin:
          $ref: "#/components/schemas/uauth-UserLastLogin"
        lastName:
          $ref: "#/components/schemas/uauth-UserLastName"
        roleNames:
          $ref: "#/components/schemas/uauth-UserRoleNames"
        roles:
          $ref: "#/components/schemas/uauth-UserRoles"
        status:
          $ref: "#/components/schemas/uauth-UserStatus"
        updated:
          $ref: "#/components/schemas/uauth-UserUpdated"
    uauth-UserUpdated:
      type: string
      format: date-time
      description: Last update time
    uauth-UserStatus:
      type: string
      description: Account status
      enum:
        - ACTIVE
        - PENDING
    uauth-UserRoleNames:
      type: array
      description: An array of roles (names) assigned to the user in the currently selected workspace
      items:
        type: string
    uauth-UserLastLogin:
      type: string
      format: date-time
      description: Last login time
    uauth-UserCreated:
      type: string
      format: date-time
      description: Account creation date
    uauth-UserAutoCompleteResponse:
      type: object
      properties:
        avatarUrl:
          $ref: "#/components/schemas/uauth-AvatarUrl"
        displayName:
          $ref: "#/components/schemas/uauth-UserDisplayName"
        email:
          $ref: "#/components/schemas/uauth-UserEmail"
        userId:
          $ref: "#/components/schemas/uauth-UserIdInteger"
    uauth-MyAccountUserResponse:
      type: object
      properties:
        id:
          type: integer
          format: int64
        email:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        displayName:
          type: string
        avatar:
          type: string
        phone:
          type: string
        language:
          $ref: "#/components/schemas/uauth-UserLanguage"
        organizationRole:
          type: string
        introduction:
          type: string
        confirmed:
          type: boolean
        mailAccountId:
          type: integer
          format: int32
        superAdmin:
          type: boolean
        created:
          type: string
          format: date-time
        updated:
          type: string
          format: date-time
        lastLogin:
          type: string
          format: date-time
        status:
          type: string
          enum:
            - ACTIVE
            - PENDING
            - EXPIRED
            - INACTIVE
        roles:
          type: array
          items:
            type: integer
            format: int64
        isTheSameUserAsLoggedIn:
          type: boolean
        description:
          type: string
        isMfaEnabled:
          type: boolean
        passwordLastModificationDate:
          type: string
          format: date-time
        canBeEdited:
          type: boolean
        dateFormatNotation:
          type: string
          enum:
            - US
            - EU
        timeFormatNotation:
          type: string
          enum:
            - US
            - EU
        numberFormatNotation:
          type: string
          enum:
            - US
            - EU
        mfaTokenExpirationHours:
          type: integer
          format: int32
        defaultMfaMethod:
          $ref: "#/components/schemas/uauth-MultiFactorMethod"
        labels:
          type: array
          items:
            type: string
    uauth-MultiFactorMethod:
      type: string
      enum:
        - TOTP_AUTHENTICATOR
        - EMAIL
    uauth-UserLanguage:
      type: string
      enum:
        - pl
        - es
        - pt
        - en-GB
        - en-US
      description: User's interface language
    uauth-ReactUserEditRequest:
      type: object
      properties:
        firstName:
          $ref: "#/components/schemas/uauth-UserFirstName"
        lastName:
          $ref: "#/components/schemas/uauth-UserLastName"
        avatar:
          $ref: "#/components/schemas/uauth-AvatarUrl"
        phone:
          $ref: "#/components/schemas/uauth-UserPhone"
        language:
          $ref: "#/components/schemas/uauth-UserLanguage"
        organizationRole:
          $ref: "#/components/schemas/uauth-UserOrganizationRole"
        introduction:
          $ref: "#/components/schemas/uauth-UserIntroduction"
        confirmed:
          $ref: "#/components/schemas/uauth-UserConfirmed"
        mailAccountId:
          $ref: "#/components/schemas/uauth-UserMailAccountId"
        description:
          $ref: "#/components/schemas/uauth-UserDescription"
        dateFormatNotation:
          type: string
          enum:
            - US
            - EU
        timeFormatNotation:
          type: string
          enum:
            - US
            - EU
        numberFormatNotation:
          type: string
          enum:
            - US
            - EU
    uauth-UserDescription:
      type: string
      description: User's description
    uauth-UserMailAccountId:
      type: integer
      description: Unused field
    uauth-UserConfirmed:
      type: boolean
      description: Informs if the account is confirmed
    uauth-UserIntroduction:
      type: string
      description: User's introduction
    uauth-UserOrganizationRole:
      type: string
      description: User's role in the organization
    uauth-UserPhone:
      type: string
      description: User's phone number
    uauth-ReactUserResponse:
      type: object
      properties:
        avatar:
          $ref: "#/components/schemas/uauth-AvatarUrl"
        confirmed:
          $ref: "#/components/schemas/uauth-UserConfirmed"
        created:
          $ref: "#/components/schemas/uauth-UserCreated"
        description:
          $ref: "#/components/schemas/uauth-UserDescription"
        displayName:
          $ref: "#/components/schemas/uauth-UserDisplayName"
        email:
          $ref: "#/components/schemas/uauth-UserEmail"
        firstName:
          $ref: "#/components/schemas/uauth-UserFirstName"
        id:
          $ref: "#/components/schemas/uauth-UserIdInteger"
        introduction:
          $ref: "#/components/schemas/uauth-UserIntroduction"
        isTheSameUserAsLoggedIn:
          $ref: "#/components/schemas/uauth-IsTheSameUserAsLoggedIn"
        language:
          $ref: "#/components/schemas/uauth-UserLanguage"
        lastLogin:
          $ref: "#/components/schemas/uauth-UserLastLogin"
        lastName:
          $ref: "#/components/schemas/uauth-UserLastName"
        mailAccountId:
          $ref: "#/components/schemas/uauth-UserMailAccountId"
        organizationRole:
          $ref: "#/components/schemas/uauth-UserOrganizationRole"
        phone:
          $ref: "#/components/schemas/uauth-UserPhone"
        roles:
          $ref: "#/components/schemas/uauth-UserRoles"
        status:
          $ref: "#/components/schemas/uauth-UserStatus"
        superAdmin:
          $ref: "#/components/schemas/uauth-UserSuperAdmin"
        updated:
          $ref: "#/components/schemas/uauth-UserUpdated"
        isMfaEnabled:
          $ref: "#/components/schemas/uauth-UserIsMfaEnabled"
        passwordLastModificationDate:
          $ref: "#/components/schemas/uauth-UserPasswordLastModificationDate"
        dateFormatNotation:
          type: string
          enum:
            - US
            - EU
        timeFormatNotation:
          type: string
          enum:
            - US
            - EU
        numberFormatNotation:
          type: string
          enum:
            - US
            - EU
    uauth-UserPasswordLastModificationDate:
      type: string
      format: date-time
      description: Date and time of last password change
    uauth-UserIsMfaEnabled:
      type: boolean
      description: Informs if multi-factor authentication for the user is active
    uauth-UserSuperAdmin:
      type: boolean
      description: Informs if the user is a super admin
    uauth-IsTheSameUserAsLoggedIn:
      type: boolean
      description: Informs if the user who made the request is the same as the subject of the request
    uauth-ReactOtherUserEditRequest:
      required:
        - roles
      allOf:
        - $ref: "#/components/schemas/uauth-ReactUserEditRequest"
        - type: object
          properties:
            roles:
              $ref: "#/components/schemas/uauth-UserRoles"
    uauth-ActivationRequest:
      type: object
      properties:
        ids:
          type: array
          description: An array of user IDs
          items:
            $ref: "#/components/schemas/uauth-UserIdInteger"
    uauth-ReactUserProlongAccessRequest:
      type: object
      properties:
        expirationDate:
          type: string
          description: New access expiration time (ISO 8601, UTC time unless timezone is specified)
          format: date-time
    uauth-IpPolicySettings:
      type: object
      properties:
        enabled:
          type: boolean
          description: When TRUE, the policy is active and only the included addresses are allowed to connect.
        enableSupportSubnets:
          type: boolean
          description: When TRUE, the IP addresses used by Synerise for service work are added to the allowlist. These addresses depend on the configuration.
          default: true
        ipPolicy:
          $ref: "#/components/schemas/uauth-IpPolicy"
    uauth-IpPolicy:
      type: array
      description: List of allowed IPv4 addresses
      items:
        type: string
        description: IP address
    uauth-MultiFactorAuthInitResponse:
      type: object
      properties:
        url:
          type: string
          description: URL of the QR code
        secret:
          type: string
          description: Multifactor authentication secret
    uauth-MultiFactorAuthConfirmResponse:
      type: object
      properties:
        backupCode:
          type: string
          description: Code used to recover the account if the device with the token generator is lost. Store the code in a secure way.
    uauth-MultiFactorAuthConfirmRequest:
      type: object
      required:
        - verificationCode
      properties:
        verificationCode:
          type: string
          description: Multi-factor verification code
    uauth-PasswordSettingsData:
      type: object
      properties:
        attempts:
          $ref: "#/components/schemas/uauth-PasswordAttempts"
        block:
          $ref: "#/components/schemas/uauth-PasswordBlock"
        different:
          $ref: "#/components/schemas/uauth-PasswordDifferent"
        digits:
          $ref: "#/components/schemas/uauth-PasswordDigits"
        expiration:
          $ref: "#/components/schemas/uauth-PasswordExpiration"
        lowerLetters:
          $ref: "#/components/schemas/uauth-PasswordLowerLetters"
        maxIdleTime:
          $ref: "#/components/schemas/uauth-PasswordMaxIdleTime"
        maxLength:
          $ref: "#/components/schemas/uauth-PasswordMaxLength"
        minLength:
          $ref: "#/components/schemas/uauth-PasswordMinLength"
        nextChange:
          $ref: "#/components/schemas/uauth-PasswordNextChange"
        specialChars:
          $ref: "#/components/schemas/uauth-PasswordSpecialChars"
        upperLetters:
          $ref: "#/components/schemas/uauth-PasswordUpperLetters"
    uauth-ManagedDomainListing:
      type: object
      properties:
        meta:
          $ref: "#/components/schemas/uauth-PaginationMeta"
        data:
          type: array
          description: An array of domains managed by the workspace
          items:
            $ref: "#/components/schemas/uauth-ManagedDomainResponse"
    uauth-ManagedDomainResponse:
      type: object
      properties:
        id:
          type: number
          format: int64
          description: ID of the managed domain
        domain:
          $ref: "#/components/schemas/uauth-ManagedDomainDomain"
        created:
          type: string
          format: date-time
          description: Creation time
        verificationMethod:
          $ref: "#/components/schemas/uauth-ManagedDomainVerificationMethod"
        verificationStatus:
          type: string
          description: Verification status
          enum:
            - VERIFIED
            - NOT_VERIFIED
        updated:
          type: string
          format: date-time
          description: Time of last update
        managedByProfile:
          $ref: "#/components/schemas/uauth-BusinessProfileId"
        usersCount:
          type: number
          format: int64
          description: Number of users who belong to the domain
    uauth-ManagedDomainVerificationMethod:
      type: string
      enum:
        - TXT_RECORD
        - FILE_CHECK
        - INTERNAL
        - NONE
      description: |
        Verification method. The verification string can be retrieved by using [this method](#operation/initializeManagedDomainUsingPOST).

        - TXT_RECORD: the verification string needs to be added to your DNS as a TXT record.
        - FILE_CHECK: the site must include an HTML file whose name is the verification string. The file does not need any content.
        - INTERNAL; NONE - currently not used
    uauth-ManagedDomainDomain:
      type: string
      description: Domain name
      example: synerise.com
    uauth-ManagedDomainRequest:
      type: object
      required:
        - domain
      properties:
        domain:
          $ref: "#/components/schemas/uauth-ManagedDomainDomain"
    uauth-ManagedDomainCodeResponse:
      type: object
      properties:
        verificationCode:
          type: string
          description: Verification code
          format: uuid
        businessProfileId:
          $ref: "#/components/schemas/uauth-BusinessProfileId"
    uauth-ManagedDomainVerificationRequest:
      type: object
      required:
        - domain
        - verificationMethod
      properties:
        domain:
          $ref: "#/components/schemas/uauth-ManagedDomainDomain"
        verificationMethod:
          $ref: "#/components/schemas/uauth-ManagedDomainVerificationMethod"
  parameters:
    business-profile-service-listLimit:
      name: limit
      description: Limit of items per page
      in: query
      required: false
      schema:
        type: integer
        format: int32
        default: 20
    business-profile-service-listPage:
      name: page
      description: Page to retrieve
      in: query
      required: false
      schema:
        type: integer
        format: int32
        default: 1
    uauth-roleId:
      name: roleId
      in: path
      description: Role ID
      required: true
      schema:
        type: integer
        format: int64
    uauth-roleGroupId:
      name: groupId
      in: path
      description: Role group ID
      required: true
      schema:
        type: integer
        format: int64
    uauth-InvitationIds:
      name: invitationIds
      in: path
      description: Comma-separated list of invitation IDs. To obtain the invitation ID, check the [list of users with PENDING status](#/operation/UsersListingUsingGET). The invitation ID for a user is the same as the ID of that user.
      required: true
      schema:
        type: string
    uauth-PaginationSize:
      name: size
      in: query
      description: The number of entries on a page
      required: true
      schema:
        type: integer
        format: int32
    uauth-PaginationPage:
      name: page
      in: query
      description: The page of results to retrieve. The first page has the index `0`.
      required: true
      schema:
        type: integer
        format: int32
    uauth-UserIds:
      name: ids
      in: path
      description: Comma-separated user IDs
      required: true
      schema:
        type: string
        example: 11405,11406,11407
    uauth-UserId:
      name: userId
      in: path
      required: true
      description: User ID
      schema:
        type: integer
    uauth-mfaType:
      name: mfaType
      in: query
      description: Type of multi-factor authentication
      required: true
      schema:
        type: string
        enum:
          - TOTP_AUTHENTICATOR
          - EMAIL
  responses:
    sauth-403-forbidden:
      description: Insufficient permissions or wrong JWT scope (for example, profile token where a workspace token was required)
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/sauth-4xx-base"
    sauth-401-unauthorized:
      description: JWT missing, expired, or invalid
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/sauth-4xx-base"
