Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Swagger open api
{
  "swagger": "2.0",
  "info": {
    "version": "1.0",
    "title": "Verint Financial Compliance REST API"
  },
  "basePath": "/restapi",
  "tags": [
    {
      "name": "Active Directory Synchronization Profile"
    },
    {
      "name": "Authentication"
    },
    {
      "name": "Conversation"
    },
    {
      "name": "Import Source"
    },
    {
      "name": "Legal Hold"
    },
    {
      "name": "Server"
    },
    {
      "name": "Configuration Profile"
    },
    {
      "name": "Storage Target"
    },
    {
      "name": "User"
    },
    {
      "name": "Time Zones"
    }
  ],
  "paths": {
    "/v1/adSyncProfiles/{id}": {
      "get": {
        "tags": [
          "Active Directory Synchronization Profile"
        ],
        "summary": "Retrieve a AD Sync Profile by the GUID type auto-generated identifier",
        "description": "A request to this endpoint will retrieve the information about the AD Sync Profile specified by the id parameter.\n\n Permissions required:\n * AD Profiles - Read",
        "operationId": "getById",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the AD Sync Profile object",
            "required": true,
            "type": "string",
            "x-example": "2DBBE84D-E7D7-4BBC-A09B-B36B4287D285"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/AdSyncProfile"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      },
      "patch": {
        "tags": [
          "Active Directory Synchronization Profile"
        ],
        "summary": "Partially update a AD Sync Profile",
        "description": "A request to this endpoint will update a set of supported properties of an existing AD Sync Profile object.\n The currently supported properties:\n * azureAppSecret\n\n Permissions required:\n * AD Profiles - Update",
        "operationId": "patchUpdate",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the AD Sync Profile object",
            "required": true,
            "type": "string",
            "x-example": "2DBBE84D-E7D7-4BBC-A09B-B36B4287D285"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The JSON object with the changed properties and their new values.",
            "required": false,
            "schema": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            },
            "x-examples": {
              "application/json": "{password: NEW_PLAIN_PASSWORD}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/AdSyncProfile"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/adSyncProfiles": {
      "get": {
        "tags": [
          "Active Directory Synchronization Profile"
        ],
        "summary": "Retrieve a list of AD Sync Profiles",
        "description": "A request to this endpoint will retrieve the list of AD Sync Profiles.\n\n Permissions required:\n * AD Profiles - Read",
        "operationId": "listAdSyncProfiles",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of AD Sync Profiles to be returned",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 10
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field the data should be sorted by, supported values are \"TODO\" and \"id\"",
            "required": false,
            "type": "string",
            "x-example": "TODO"
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "asc|desc",
            "required": false,
            "type": "string",
            "x-example": "asc"
          },
          {
            "name": "filters",
            "in": "query",
            "description": "The filters",
            "required": false,
            "type": "string",
            "x-example": "{\"filtersList\": [{\"field\": \"adType\", \"operator\": \"IN\", \"values\": [\"ldap\", \"azure_ud\"]}]}"
          },
          {
            "name": "nextPageToken",
            "in": "query",
            "description": "The next page token: to query the next page, use the nextPageToken received in the previous response. Do not specify sort or filters when using the nextPageToken.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/AdSyncProfileListResponse"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          }
        }
      }
    },
    "/v1/adSyncProfiles/{id}/password/verify": {
      "post": {
        "tags": [
          "Active Directory Synchronization Profile"
        ],
        "summary": "AdSyncProfile password verification",
        "description": "A request to this endpoint will verify the AD Sync Profile's password with the posted value.\n\n Permissions required:\n * AD Profiles - Update",
        "operationId": "verifyPassword",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the AD Sync Profile object",
            "required": true,
            "type": "string",
            "x-example": "2DBBE84D-E7D7-4BBC-A09B-B36B4287D285"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The known plain password, which should be verified and the name of the field of the password in the specific metadata object.",
            "required": false,
            "schema": {
              "$ref": "#/definitions/PropertyValueHolder"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/BooleanHolder"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/adSyncProfileOptions/getSortableFields": {
      "get": {
        "tags": [
          "Active Directory Synchronization Profile"
        ],
        "summary": "Retrieve the list of fields available for sorting",
        "description": "A request to this endpoint will retrieve the list of fields available for sorting for the Active Directory Synchronization Profile endpoint.\n\n Permissions required:\n * AD Profiles - Read",
        "operationId": "getSortableFields",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "examples": {
              "application/json": [
                "label",
                "id"
              ]
            },
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "/v1/adSyncProfileOptions/getAllowedFilters": {
      "get": {
        "tags": [
          "Active Directory Synchronization Profile"
        ],
        "summary": "Retrieve the list of available filter operators",
        "description": "A request to this endpoint will retrieve the list of available filter operators used by the Active Directory Synchronization Profile endpoint for listing.\n\n Permissions required:\n * AD Profiles - Read",
        "operationId": "getAllowedFilters",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/FilterField"
              }
            }
          }
        }
      }
    },
    "/v1/auth/token": {
      "post": {
        "tags": [
          "Authentication"
        ],
        "summary": "Request access and refresh token",
        "description": "Request an access token and a refresh token, or use the previously received refresh token to request a new access token. The API uses standard JWT (JSON Web Tokens) signed by the system. In order to request a token, you need to provide the Client ID and the Client Secret parameters which you can get after you configured your application in the system and granted the necessary permissions by assigning one or more roles.\nAfter you received the Access Token, it should be sent in all subsequent requests in the \"Authorization\" request header after the Bearer keyword:\n```Authorization: Bearer fL9QPL2U667bBpitMFhtNIn2kLHC15WB```\nAfter the Access Token expired, you have to call the token function again with the Client ID and the received Refresh Token. If the token function does not work with the Refresh Token, then try authenticating again using your Client ID and Client Secret.",
        "operationId": "token",
        "consumes": [
          "application/x-www-form-urlencoded"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "client_id",
            "in": "formData",
            "description": "The identifier of the Application",
            "required": true,
            "type": "string",
            "x-example": "verba-client-app"
          },
          {
            "name": "client_secret",
            "in": "formData",
            "description": "When requesting a new Access Token and Refresh Token",
            "required": false,
            "type": "string",
            "x-example": "GBAyfVL7YWtP6gudLIjbRZV_N0dW4f3xETiIxqtokEAZ6FAsBtgyIq0MpU1uQ7J08xOTO2zwP0OuO3pMVAUTid"
          },
          {
            "name": "refresh_token",
            "in": "formData",
            "description": "When using the previously received Refresh Token to request a new Access Token",
            "required": false,
            "type": "string",
            "x-example": "mE07g3HZkoSaqkysDZLC6B3JA0stEiUz0maA9fu1GhblAQc3"
          },
          {
            "name": "eid",
            "in": "formData",
            "description": "Environment ID in Multi-Tenant environments",
            "required": false,
            "type": "string",
            "x-example": "0000"
          },
          {
            "name": "targetEid",
            "in": "formData",
            "description": "For Reference Environment users the eid will be 0000, so they can use this parameter to define the Environment ID they want to work in",
            "required": false,
            "type": "string",
            "x-example": "0001"
          },
          {
            "name": "targetTimeZone",
            "in": "formData",
            "description": "Set this if want to work in a different time zone than the user's default. The valid identifiers can be queried by the restapi/v1/timeZone API call.",
            "required": false,
            "type": "string",
            "x-example": "US/Eastern"
          },
          {
            "name": "identityProviderId",
            "in": "formData",
            "description": "The ID of the Identity Provider to be used for the authentication. Only the #1 Database Credentials and LDAP providers are supported.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 2
          },
          {
            "name": "identityProviderName",
            "in": "formData",
            "description": "The Name of the Identity Provider to be used for the authentication.",
            "required": false,
            "type": "string",
            "x-example": "Company LDAP"
          },
          {
            "name": "identityProviderType",
            "in": "formData",
            "description": "Supported values are: verba, ldap",
            "required": false,
            "type": "string",
            "x-example": "ldap",
            "enum": [
              "saml",
              "oidc",
              "jwt",
              "header",
              "iwa",
              "verba",
              "azure",
              "adfs",
              "ldap"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/TokenResponse"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "401": {
            "description": "Invalid credentials or refresh token supplied"
          }
        }
      }
    },
    "/v1/conversations": {
      "get": {
        "tags": [
          "Conversation"
        ],
        "summary": "Retrieve list of conversations",
        "description": "A request to this endpoint will retrieve the list of the conversations. By default the list only contains the finished conversations, however with query filter parameter the ongoing conversations can be fetched as well.\n\n Permissions required:\n * Conversation Access Scope - Standard or Access All",
        "operationId": "list",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of conversations to be returned",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 10
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field the data should be sorted by, the only supported value is \"startTime\"",
            "required": false,
            "type": "string",
            "x-example": "startTime"
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "asc|desc",
            "required": false,
            "type": "string",
            "x-example": "asc"
          },
          {
            "name": "filters",
            "in": "query",
            "description": "The filters",
            "required": false,
            "type": "string",
            "x-example": "{\"filtersList\": [{\"field\": \"status\", \"operator\": \"EQUAL\", \"values\": [\"finished\"]}]}"
          },
          {
            "name": "nextPageToken",
            "in": "query",
            "description": "The next page token: to query the next page, use the nextPageToken received in the previous response. Do not specify sort or filters when using the nextPageToken.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/ConversationListResponse"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          }
        }
      }
    },
    "/v1/conversations/{id}": {
      "get": {
        "tags": [
          "Conversation"
        ],
        "summary": "Retrieve conversation by the GUID type identifier",
        "description": "A request to this endpoint will retrieve the information about the conversation specified by the id parameter.\n\n Permissions required:\n * Conversation Access Scope - Standard or Access All",
        "operationId": "getById_1",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The GUID identifier of the conversation object",
            "required": true,
            "type": "string",
            "x-example": "3e05f9d6-f687-11eb-8113-00155d001c3b"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/Conversation"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/conversationOptions/getSortableFields": {
      "get": {
        "tags": [
          "Conversation"
        ],
        "summary": "Retrieve the list of fields available for sorting",
        "description": "A request to this endpoint will retrieve the list of fields available for sorting for the Conversation endpoint.\n\n Permissions required:\n * Conversation Access Scope - Standard or Access All",
        "operationId": "getSortableFields_1",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "examples": {
              "application/json": [
                "start_time"
              ]
            },
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "/v1/conversationOptions/getAllowedFilters": {
      "get": {
        "tags": [
          "Conversation"
        ],
        "summary": "Retrieve the list of available filter operators",
        "description": "A request to this endpoint will retrieve the list of available filter operators used by the Conversation endpoint for listing.\n\n Permissions required:\n * Conversation Access Scope - Standard or Access All",
        "operationId": "getAllowedFilters_1",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/FilterField"
              }
            }
          }
        }
      }
    },
    "/v1/conversationControl/{id}/startRecording": {
      "post": {
        "tags": [
          "Conversation"
        ],
        "summary": "Start recording the conversation",
        "description": "A request to this endpoint will start the recording of the ongoing controlled conversation. This method can only be used for Conversations where the value of the manual field is 9. If the manual field is 8, then restarting the recording of the conversation is not allowed.\n\n Permissions required:\n * Access to the conversation",
        "operationId": "startRecording",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the conversation object",
            "required": true,
            "type": "string",
            "x-example": "3e05f9d6-f687-11eb-8113-00155d001c3b"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/Conversation"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/conversationControl/{id}/stopRecording": {
      "post": {
        "tags": [
          "Conversation"
        ],
        "summary": "Stop recording the conversation",
        "description": "A request to this endpoint will stop the recording of the ongoing controlled conversation. The recording can be restarted later. This method can only be used for Conversations where the value of the manual field is a negative integer.\n\n Permissions required:\n * Access to the conversation",
        "operationId": "stopRecording",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the conversation object",
            "required": true,
            "type": "string",
            "x-example": "3e05f9d6-f687-11eb-8113-00155d001c3b"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/Conversation"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/conversationControl/{id}/keepOndemand": {
      "post": {
        "tags": [
          "Conversation"
        ],
        "summary": "Keeps the on-demand conversation",
        "description": "A request to this endpoint will mark the on-demand conversation for recording. This method can only be used for Conversations where the value of the ondemand field is true and the value of the keep field is false. Calling this method for other records has no effect.\n\n Permissions required:\n * Access to the conversation",
        "operationId": "keepOndemand",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the conversation object",
            "required": true,
            "type": "string",
            "x-example": "3e05f9d6-f687-11eb-8113-00155d001c3b"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "examples": {
              "application/json": null
            },
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/conversationControl/{id}/muteRecording": {
      "post": {
        "tags": [
          "Conversation"
        ],
        "summary": "Mute/Unmute recording",
        "description": "A request to this endpoint will mute or unmute the recording of the conversation. This method can only be used for Conversations where the value of the manual field is null, 0 or 1.\n\n Permissions required:\n * Access to the conversation\n * Mute Recording",
        "operationId": "muteRecording",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the conversation object",
            "required": true,
            "type": "string",
            "x-example": "3e05f9d6-f687-11eb-8113-00155d001c3b"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The requested new state. Leave the body empty to query the current the mute status.",
            "required": false,
            "schema": {
              "$ref": "#/definitions/MuteStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/MuteStatus"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/importSources/{id}": {
      "get": {
        "tags": [
          "Import Source"
        ],
        "summary": "Retrieve a import source by the numeric auto-increment identifier",
        "description": "A request to this endpoint will retrieve the information about the import source specified by the id parameter.\n\n Permissions required:\n * Import Source - Read",
        "operationId": "getById_2",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the import source object",
            "required": true,
            "type": "integer",
            "format": "int32",
            "x-example": 16
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/ImportSource"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      },
      "patch": {
        "tags": [
          "Import Source"
        ],
        "summary": "Partially update a import source",
        "description": "A request to this endpoint will update a set of supported properties of an existing import source object.\n The currently supported properties:\n * password\n\n Permissions required:\n * Import Source - Update",
        "operationId": "patchUpdate_1",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the import source object",
            "required": true,
            "type": "integer",
            "format": "int32",
            "x-example": 16
          },
          {
            "in": "body",
            "name": "body",
            "description": "The JSON object with the changed properties and their new value.",
            "required": false,
            "schema": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            },
            "x-examples": {
              "application/json": "{\"password\": \"NEW_PLAIN_PASSWORD\"}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/ImportSource"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/importSources": {
      "get": {
        "tags": [
          "Import Source"
        ],
        "summary": "Retrieve a list of import sources",
        "description": "A request to this endpoint will retrieve the list of import sources.\n\n Permissions required:\n * Import Source - Read",
        "operationId": "listImportSources",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of import sources to be returned",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 10
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field the data should be sorted by, supported values are \"id\", \"type\" and \"name\"",
            "required": false,
            "type": "string",
            "x-example": "type"
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "asc|desc",
            "required": false,
            "type": "string",
            "x-example": "asc"
          },
          {
            "name": "filters",
            "in": "query",
            "description": "The filters",
            "required": false,
            "type": "string",
            "x-example": "{\"filtersList\": [{\"field\": \"type\", \"operator\": \"IN\", \"values\": [\"zoom_phones\", \"verba\"]}]}"
          },
          {
            "name": "nextPageToken",
            "in": "query",
            "description": "The next page token: to query the next page, use the nextPageToken received in the previous response. Do not specify sort or filters when using the nextPageToken.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/ImportSourceListResponse"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          }
        }
      }
    },
    "/v1/importSources/{id}/password/verify": {
      "post": {
        "tags": [
          "Import Source"
        ],
        "summary": "Import Source password verification",
        "description": "A request to this endpoint will verify the import source's password with the posted value.\n\n Permissions required:\n * Import Source - Update",
        "operationId": "verifyPassword_1",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the import source object",
            "required": true,
            "type": "integer",
            "format": "int32",
            "x-example": 16
          },
          {
            "in": "body",
            "name": "body",
            "description": "The known plain password, which should be verified and the name of the field of the password in the specific Import Source child object.",
            "required": false,
            "schema": {
              "$ref": "#/definitions/PropertyValueHolder"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/BooleanHolder"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/importSourceOptions/getSortableFields": {
      "get": {
        "tags": [
          "Import Source"
        ],
        "summary": "Retrieve the list of fields available for sorting",
        "description": "A request to this endpoint will retrieve the list of fields available for sorting for the Import Source endpoint.\n\n Permissions required:\n * Import Source - Read",
        "operationId": "getSortableFields_2",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "examples": {
              "application/json": [
                "label",
                "id"
              ]
            },
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "/v1/importSourceOptions/getAllowedFilters": {
      "get": {
        "tags": [
          "Import Source"
        ],
        "summary": "Retrieve the list of available filter operators",
        "description": "A request to this endpoint will retrieve the list of available filter operators used by the Import Source endpoint for listing.\n\n Permissions required:\n * Import Source - Read",
        "operationId": "getAllowedFilters_2",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/FilterField"
              }
            }
          }
        }
      }
    },
    "/v1/deleteDisabled": {
      "get": {
        "tags": [
          "Legal Hold"
        ],
        "summary": "Returns whether the Environment is configured to prevent conversation deletion and pause delete policies.",
        "description": "A request to this endpoint will retrieve whether the Environment is configured to prevent conversation deletion.\n When this setting is enabled, the delete policies (including the automatic deletion of the expired conversations) will not be executed and the system will prevent conversation deletion in the Environment.\n\n Permissions required:\n * Retention Policies - Read",
        "operationId": "isDeleteDisabled",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/BooleanHolder"
            }
          },
          "403": {
            "description": "Insufficient privileges"
          }
        }
      },
      "put": {
        "tags": [
          "Legal Hold"
        ],
        "summary": "Enables or disables preventing conversation deletion in the Environment.",
        "description": "A request to this endpoint will enable or disable preventing conversation deletion in the Environment.\n When this setting is enabled, the delete policies (including the automatic deletion of the expired conversations) will not be executed and the system will prevent conversation deletion in the Environment.\n This configuration is only available through this API. The method returns the new status.\n\n Permissions required:\n *  Retention Policies - Read and Update",
        "operationId": "update",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": false,
            "schema": {
              "$ref": "#/definitions/BooleanHolder"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/BooleanHolder"
            }
          },
          "403": {
            "description": "Insufficient privileges"
          }
        }
      }
    },
    "/v1/legalHolds": {
      "get": {
        "tags": [
          "Legal Hold"
        ],
        "summary": "Retrieve list of legal holds",
        "description": "A request to this endpoint will retrieve the list of the legal holds ordered by the label.\n\n Permissions required:\n * Manual Labeling - Use",
        "operationId": "list_1",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of legal holds to be returned",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 10
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field the data should be sorted by, supported values are \"label\" and \"id\"",
            "required": false,
            "type": "string",
            "x-example": "label"
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "asc|desc",
            "required": false,
            "type": "string",
            "x-example": "asc"
          },
          {
            "name": "filters",
            "in": "query",
            "description": "The filters",
            "required": false,
            "type": "string",
            "x-example": "{\"filtersList\": [{\"field\": \"label\", \"operator\": \"IN\", \"values\": [\"Case number 3\", \"John Doe Incident\"]}]}"
          },
          {
            "name": "nextPageToken",
            "in": "query",
            "description": "The next page token: to query the next page, use the nextPageToken received in the previous response. Do not specify sort or filters when using the nextPageToken.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/LegalHoldListResponse"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          }
        }
      },
      "post": {
        "tags": [
          "Legal Hold"
        ],
        "summary": "Create new legal hold",
        "description": "A request to this endpoint will create a new legal hold label on conversation records specified by the request parameters. It might take up to several minutes in the case of large number of conversation records in the database. The start and end time parameters defines if the legal hold is applied on historical and/or future conversations as well.\n\n Permissions required:\n * Manual Labeling - Use and Create\n * Enable Legal Hold",
        "operationId": "create",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": false,
            "schema": {
              "$ref": "#/definitions/LegalHold"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/LegalHold"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "409": {
            "description": "Already exists"
          }
        }
      },
      "put": {
        "tags": [
          "Legal Hold"
        ],
        "summary": "Update legal hold",
        "description": "A request to this endpoint will update an existing legal hold label on conversations records specified by the request parameters. It might take up to several minutes in the case of large number of conversation records in the database.\n\n The involved users are also updated, so if fewer users are sent, then the users will be removed from legal hold, and if new users are sent, then they will be added.\n\n Permissions required:\n * Manual Labeling - Use and Create\n * Enable Legal Hold\n * Remove Legal Hold From Conversations",
        "operationId": "update_1",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": false,
            "schema": {
              "$ref": "#/definitions/LegalHold"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/LegalHold"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/legalHolds/{id}": {
      "get": {
        "tags": [
          "Legal Hold"
        ],
        "summary": "Retrieve legal hold by the numeric auto-increment identifier",
        "description": "A request to this endpoint will retrieve the information about the legal hold specified by the id parameter.\n\n Permissions required:\n * Manual Labeling - Use",
        "operationId": "getById_3",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the legal hold object",
            "required": true,
            "type": "integer",
            "format": "int32",
            "x-example": 16
          },
          {
            "name": "countConversations",
            "in": "query",
            "description": "Set to true if the caller application wants to receive the number of conversations having this Legal Hold.",
            "required": false,
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/LegalHold"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      },
      "delete": {
        "tags": [
          "Legal Hold"
        ],
        "summary": "Delete legal hold",
        "description": "A request to this endpoint will permanently delete the legal hold specified by the id parameter. When the system receives the API call to delete a legal hold, the system will remove the entire label from the conversations. It might take up to several minutes in the case of large number of conversation records in  the database. Note: when the legal hold status of a label is removed through the user interface, the system automatically enforces a policy which requires the approval of the removal request. This policy is not enforced when the removal is requested through this API endpoint.\n\n Permissions required:\n * Manual Labeling - Use and Create\n * Enable Legal Hold\n * Remove Legal Hold From Conversations",
        "operationId": "delete",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the legal hold object",
            "required": true,
            "type": "integer",
            "format": "int32",
            "x-example": 123
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "examples": {
              "application/json": null
            },
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/legalHoldOptions/getSortableFields": {
      "get": {
        "tags": [
          "Legal Hold"
        ],
        "summary": "Retrieve the list of fields available for sorting",
        "description": "A request to this endpoint will retrieve the list of fields available for sorting for the Legal Hold API.\n\n Permissions required:\n * Manual Labeling - Use",
        "operationId": "getSortableFields_3",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "examples": {
              "application/json": [
                "label",
                "id"
              ]
            },
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "/v1/legalHoldOptions/getAllowedFilters": {
      "get": {
        "tags": [
          "Legal Hold"
        ],
        "summary": "Retrieve the list of available filter operators",
        "description": "A request to this endpoint will retrieve the list of available filter operators used by the Legal Hold API endpoints for listing.\n\n Permissions required:\n * Manual Labeling - Use",
        "operationId": "getAllowedFilters_3",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/FilterField"
              }
            }
          }
        }
      }
    },
    "/v1/encodePassword": {
      "post": {
        "tags": [
          "Server"
        ],
        "summary": "Encode plain passwords",
        "description": "A request to this endpoint will encode a plain password that can be used for Server Configuration and Server Configuration Profile values.\n\n Permissions required:\n * Server Configuration - Update",
        "operationId": "encode",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "The plain password in RAW format",
            "required": false,
            "schema": {
              "type": "string"
            },
            "x-examples": {
              "text/plain": "NEW_PLAIN_PASSWORD"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "examples": {
              "text/plain": "ENCRYPTED_TEXT"
            },
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          }
        }
      }
    },
    "/v1/configuration/dropdowns": {
      "get": {
        "tags": [
          "Server"
        ],
        "summary": "Get the available values for the dropdown type configurations",
        "description": "Get the available values for the dropdown type configurations",
        "operationId": "getDropdowns",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          },
          "409": {
            "description": "When there are differences between the configuration stored in the server registry and the database (error code PREREQUISITE_NOT_MET). Use the configurationDifferences endpoint first to resolve the differences."
          }
        }
      }
    },
    "/v1/configurationTasks": {
      "get": {
        "tags": [
          "Server"
        ],
        "summary": "Retrieve a list of available configuration tasks on all server",
        "description": "A request to this endpoint will retrieve the list of all available configuration tasks from every server.\n\n Permissions required:\n * Server Configuration - Read",
        "operationId": "listConfigurationTasks",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/ServerConfigurationTaskListResponse"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/servers": {
      "get": {
        "tags": [
          "Server"
        ],
        "summary": "Retrieve a list of servers",
        "description": "A request to this endpoint will retrieve the list of servers.\n\n Permissions required:\n * Server Configuration - Read",
        "operationId": "listServers",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of servers to be returned",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 10
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field the data should be sorted by, supported values can be queried by the v1/serverOptions/getSortableFields endpoint",
            "required": false,
            "type": "string",
            "x-example": "hostname"
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "asc|desc",
            "required": false,
            "type": "string",
            "x-example": "asc"
          },
          {
            "name": "filters",
            "in": "query",
            "description": "The filters",
            "required": false,
            "type": "string",
            "x-example": "{\"filtersList\": [{\"field\": \"hostname\", \"operator\": \"IN\", \"values\": [\"verbamr01\", \"testcombo\"]}]}"
          },
          {
            "name": "expands",
            "in": "query",
            "description": "Related entities can be reached, supported values can be queried by the v1/serverOptions/getAllowedExpands endpoint",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi",
            "x-example": "[TASKS]"
          },
          {
            "name": "nextPageToken",
            "in": "query",
            "description": "The next page token: to query the next page, use the nextPageToken received in the previous response. Do not specify sort or filters when using the nextPageToken.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/ServerListResponse"
            }
          },
          "403": {
            "description": "Insufficient privileges"
          }
        }
      },
      "put": {
        "tags": [
          "Server"
        ],
        "summary": "Update a server",
        "description": "A request to this endpoint will update an existing server.\n It is highly recommended to query and resolve the confinguration differences after changing the profile of a server.\n\n Permissions required:\n * Server Configuration - Update",
        "operationId": "update_2",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": false,
            "schema": {
              "$ref": "#/definitions/Server"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/Server"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/servers/{hostname}/services": {
      "get": {
        "tags": [
          "Server"
        ],
        "summary": "Retrieve a list of the installed services",
        "description": "A request to this endpoint will retrieve the list of the installed services.\n\n Permissions required:\n * Server Configuration - Read",
        "operationId": "listServices",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "hostname",
            "in": "path",
            "description": "The identifier of the server object",
            "required": true,
            "type": "string",
            "x-example": "verbamr01"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/ServerServiceListResponse"
            }
          },
          "403": {
            "description": "Insufficient privileges"
          }
        }
      }
    },
    "/v1/servers/{hostname}": {
      "get": {
        "tags": [
          "Server"
        ],
        "summary": "Retrieve a server object by the hostname",
        "description": "A request to this endpoint will retrieve the information about the server specified by the hostname parameter.\n\n Permissions required:\n * Server Configuration - Read",
        "operationId": "getById_4",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "hostname",
            "in": "path",
            "description": "The identifier of the server object",
            "required": true,
            "type": "string",
            "x-example": "verbamr01"
          },
          {
            "name": "expands",
            "in": "query",
            "description": "Related entities can be reached, supported values can be queried by the v1/serverOptions/getAllowedExpands endpoint",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi",
            "x-example": "[TASKS]"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/Server"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/servers/{hostname}/configurationTasks": {
      "get": {
        "tags": [
          "Server"
        ],
        "summary": "Retrieve a list of available configuration tasks of a server",
        "description": "A request to this endpoint will retrieve the list of available configuration tasks of a server.\n\n Permissions required:\n * Server Configuration - Read",
        "operationId": "listConfigurationTasksByServer",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "hostname",
            "in": "path",
            "description": "The identifier of the server object",
            "required": true,
            "type": "string",
            "x-example": "localhost"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/ServerConfigurationTaskListResponse"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          },
          "409": {
            "description": "When there are differences between the configuration stored in the server registry and the database (error code PREREQUISITE_NOT_MET). Use the configurationDifferences endpoint first to resolve the differences."
          }
        }
      },
      "post": {
        "tags": [
          "Server"
        ],
        "summary": "Apply configuration changes and start every configuration tasks on a server",
        "description": "A request to this endpoint will apply configuration changes and start every configuration tasks on a server. The endpoint can be called without body, all of the related task will be executed.\n\n Permissions required:\n * Server Configuration - Update",
        "operationId": "executeConfigurationTasksByServer",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "hostname",
            "in": "path",
            "description": "The identifier of the server object",
            "required": true,
            "type": "string",
            "x-example": "localhost"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/ExecuteConfigurationTaskResultList"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          },
          "409": {
            "description": "When there are differences between the configuration stored in the server registry and the database (error code PREREQUISITE_NOT_MET). Use the configurationDifferences endpoint first to resolve the differences."
          }
        }
      }
    },
    "/v1/servers/{hostname}/configurationDifferences": {
      "get": {
        "tags": [
          "Server"
        ],
        "summary": "Retrieve a list of the differences between the configuration stored in the server's registry and the database",
        "description": "A request to this endpoint will retrieve the differences between the configuration stored in the server's registry and the database.\n The client application must decide which configuration is the correct and resolve the differences by calling the configurationDifferences POST endpoint.\n\n Permissions required:\n * Server Configuration - Read",
        "operationId": "listConfigurationDifferences",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "hostname",
            "in": "path",
            "description": "The identifier of the server object",
            "required": true,
            "type": "string",
            "x-example": "verbamr01"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/ConfigurationDifferenceList"
            }
          },
          "403": {
            "description": "Insufficient privileges"
          }
        }
      },
      "post": {
        "tags": [
          "Server"
        ],
        "summary": "Resolve the differences between the configuration stored in the server's registry and the database",
        "description": "Use this endpoint to resolve the differences between the configuration stored in the server's registry and the database.\n After the differences resolved, the client application should retrieve the list of the generated configuration tasks and apply them.\n\n Permissions required:\n * Server Configuration - Update",
        "operationId": "resolveConfigurationDifferences",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "hostname",
            "in": "path",
            "description": "The identifier of the server object",
            "required": true,
            "type": "string",
            "x-example": "verbamr01"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The correct source of the configuration values based on the decision of the client application",
            "required": false,
            "schema": {
              "$ref": "#/definitions/ConfigurationDifferenceResolutionList"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/ConfigurationDifferenceList"
            }
          },
          "403": {
            "description": "Insufficient privileges"
          }
        }
      }
    },
    "/v1/servers/{hostname}/configurationTasks/{action}": {
      "delete": {
        "tags": [
          "Server"
        ],
        "summary": "Remove a configuration task",
        "description": "A request to this endpoint will remove a configuration tasks on a server.\n\n Permissions required:\n * Server Configuration - Update",
        "operationId": "deleteConfigurationTask",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "hostname",
            "in": "path",
            "description": "The identifier of the server object",
            "required": true,
            "type": "string",
            "x-example": "localhost"
          },
          {
            "name": "action",
            "in": "path",
            "description": "The action",
            "required": true,
            "type": "string",
            "x-example": "restart"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/servers/{hostname}/configurationTasks/{action}/{service}": {
      "delete": {
        "tags": [
          "Server"
        ],
        "summary": "Remove a configuration task",
        "description": "A request to this endpoint will remove a configuration tasks on a server.\n\n Permissions required:\n * Server Configuration - Update",
        "operationId": "deleteConfigurationTask_1",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "hostname",
            "in": "path",
            "description": "The identifier of the server object",
            "required": true,
            "type": "string",
            "x-example": "localhost"
          },
          {
            "name": "action",
            "in": "path",
            "description": "The action",
            "required": true,
            "type": "string",
            "x-example": "restart"
          },
          {
            "name": "service",
            "in": "path",
            "description": "The service",
            "required": true,
            "type": "string",
            "x-example": "VerbaWebApp"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/servers/{hostname}/configuration/export": {
      "get": {
        "tags": [
          "Server"
        ],
        "summary": "Export a full server configuration",
        "description": "A request to this endpoint will export the full configuration of a server.\n\n Permissions required:\n * Server Configuration - Read",
        "operationId": "exportConfiguration",
        "produces": [
          "application/xml"
        ],
        "parameters": [
          {
            "name": "hostname",
            "in": "path",
            "description": "The identifier of the server object",
            "required": true,
            "type": "string",
            "x-example": "verbamr01"
          },
          {
            "name": "onlyServerCustomValues",
            "in": "query",
            "description": "If true, then only the overriden configurations will be returned, so the response will not include the values inherited from the configuration profile",
            "required": false,
            "type": "boolean",
            "x-example": true
          },
          {
            "name": "source",
            "in": "query",
            "description": "Specifies the source of the retrieved data: DATABASE|REGISTRY",
            "required": false,
            "type": "string",
            "default": "DATABASE",
            "x-example": "REGISTRY"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          },
          "409": {
            "description": "When there are differences between the configuration stored in the server registry and the database (error code PREREQUISITE_NOT_MET). Use the configurationDifferences endpoint first to resolve the differences."
          }
        }
      }
    },
    "/v1/servers/{hostname}/configuration/import": {
      "put": {
        "tags": [
          "Server"
        ],
        "summary": "Import a full server settings set",
        "description": "A request to this endpoint will import a full server settings set. The presented values will overwrite the existing values or create the missing values.\n The endpoint returns the number of updated settings.\n\n Permissions required:\n * Server Configuration - Update",
        "operationId": "importConfiguration",
        "consumes": [
          "application/xml"
        ],
        "parameters": [
          {
            "name": "hostname",
            "in": "path",
            "description": "The identifier of the server object",
            "required": true,
            "type": "string",
            "x-example": "verbamr01"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The configuration values in XML format",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          },
          "409": {
            "description": "When there are differences between the configuration stored in the server registry and the database (error code PREREQUISITE_NOT_MET). Use the configurationDifferences endpoint first to resolve the differences."
          }
        }
      }
    },
    "/v1/servers/{hostname}/configuration": {
      "get": {
        "tags": [
          "Server"
        ],
        "summary": "Retrieve a configuration setting value of a server by configuration setting path",
        "description": "A request to this endpoint will retrieve a configuration setting value of a server specified by the configuration setting path.\n In case of multiline value, every lines are listed, separated by new line character.\n If the server does not override the assoicated profile configuration, then the profile configuration will be returned and the Link response header will indicate the profile identifier, for example: Link: </verba/restapi/v1/configurationProfiles/2>; rel=\"source\".\n\n Permissions required:\n * Server Configuration - Read",
        "operationId": "getSettingByPath",
        "parameters": [
          {
            "name": "hostname",
            "in": "path",
            "description": "The identifier of the server object",
            "required": true,
            "type": "string",
            "x-example": "verbamr01"
          },
          {
            "name": "settingPath",
            "in": "query",
            "description": "URL encoded path of the configuration",
            "required": true,
            "type": "string",
            "x-example": "%5CVerba%5CWeb%5CHTTPEnabled"
          },
          {
            "name": "source",
            "in": "query",
            "description": "Specifies the source of the retrieved data: DATABASE|REGISTRY",
            "required": false,
            "type": "string",
            "default": "DATABASE",
            "x-example": "REGISTRY"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "examples": {
              "text/plain": "configuration_value"
            },
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      },
      "put": {
        "tags": [
          "Server"
        ],
        "summary": "Update a configuration setting value by configuration setting path",
        "description": "A request to this endpoint will update a server configuration setting value specified by the configuration setting path.\nIn case of multiline value, every lines must be sent, separated by new line character.\n\n Permissions required:\n * Server Configuration - Update",
        "operationId": "setSettingByPath",
        "parameters": [
          {
            "name": "hostname",
            "in": "path",
            "description": "The identifier of the server object",
            "required": true,
            "type": "string",
            "x-example": "verbamr01"
          },
          {
            "name": "settingPath",
            "in": "query",
            "description": "URL encoded path of the configuration",
            "required": true,
            "type": "string",
            "x-example": "%5CVerba%5CWeb%5CHTTPEnabled"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The new configuration value in RAW format",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "examples": {
              "text/plain": "configuration_value"
            },
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          },
          "409": {
            "description": "When there are differences between the configuration stored in the server's registry and the database (error code PREREQUISITE_NOT_MET). Use the configurationDifferences endpoint first to resolve the differences."
          }
        }
      }
    },
    "/v1/servers/{hostname}/services/{serviceName}/{action}": {
      "post": {
        "tags": [
          "Server"
        ],
        "summary": "Alter the state of a service",
        "description": "A request to this endpoint will alter the state of a service.\n\n Permissions required:\n * Server Configuration - Update",
        "operationId": "alterService",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "hostname",
            "in": "path",
            "description": "The identifier of the server object",
            "required": true,
            "type": "string",
            "x-example": "verbamr01"
          },
          {
            "name": "serviceName",
            "in": "path",
            "description": "The identifier of the server object",
            "required": true,
            "type": "string",
            "x-example": "VerbaUnifiedRec"
          },
          {
            "name": "action",
            "in": "path",
            "description": "The type of the alteration",
            "required": true,
            "type": "string",
            "x-example": "enableAutomatic",
            "enum": [
              "start",
              "stop",
              "restart",
              "disable",
              "enableManual",
              "enableAutomatic",
              "enableAutomaticDelayed",
              "enableStandby",
              "disableStandby",
              "ServiceLoadReBalancing"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "409": {
            "description": "When there are differences between the configuration stored in the server registry and the database (error code PREREQUISITE_NOT_MET). Use the configurationDifferences endpoint first to resolve the differences."
          }
        }
      }
    },
    "/v1/serverOptions/getAllowedExpands": {
      "get": {
        "tags": [
          "Server"
        ],
        "summary": "Retrieve the list of available expand identifiers",
        "description": "A request to this endpoint will retrieve the list of available expand identifiers used by the Server endpoint for listing.\n\n Permissions required:\n * Server Configuration - Read",
        "operationId": "getAllowedExpands",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "/v1/serverOptions/getSortableFields": {
      "get": {
        "tags": [
          "Server"
        ],
        "summary": "Retrieve the list of fields available for sorting",
        "description": "A request to this endpoint will retrieve the list of fields available for sorting for the Server endpoint.\n\n Permissions required:\n * Server Configuration - Read",
        "operationId": "getSortableFields_4",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "examples": {
              "application/json": [
                "label",
                "id"
              ]
            },
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "/v1/serverOptions/getAllowedFilters": {
      "get": {
        "tags": [
          "Server"
        ],
        "summary": "Retrieve the list of available filter operators",
        "description": "A request to this endpoint will retrieve the list of available filter operators used by the Server endpoint for listing.\n\n Permissions required:\n * Server Configuration - Read",
        "operationId": "getAllowedFilters_4",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/FilterField"
              }
            }
          }
        }
      }
    },
    "/v1/configurationProfiles": {
      "get": {
        "tags": [
          "Configuration Profile"
        ],
        "summary": "Retrieve a list of configuration profiles",
        "description": "A request to this endpoint will retrieve the list of configuration profiles.\n\n Permissions required:\n * Server Configuration - Read",
        "operationId": "listConfigurationProfiles",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of profiles to be returned",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 10
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field the data should be sorted by, supported values can be queried by the v1/configurationProfileOptions/getSortableFields endpoint",
            "required": false,
            "type": "string",
            "x-example": "id"
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "asc|desc",
            "required": false,
            "type": "string",
            "x-example": "asc"
          },
          {
            "name": "filters",
            "in": "query",
            "description": "The filters",
            "required": false,
            "type": "string",
            "x-example": "{\"filtersList\": [{\"field\": \"role\", \"operator\": \"IN\", \"values\": [\"MR\", \"Combo\"]}]}"
          },
          {
            "name": "nextPageToken",
            "in": "query",
            "description": "The next page token: to query the next page, use the nextPageToken received in the previous response. Do not specify sort or filters when using the nextPageToken.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/ConfigurationProfileListResponse"
            }
          },
          "403": {
            "description": "Insufficient privileges"
          }
        }
      },
      "post": {
        "tags": [
          "Configuration Profile"
        ],
        "summary": "Create a new configuration profile",
        "description": "A request to this endpoint will create a new configuration profile.\n\n Permissions required:\n * Server Configuration - Update",
        "operationId": "create_1",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": false,
            "schema": {
              "$ref": "#/definitions/ConfigurationProfile"
            }
          },
          {
            "name": "copySettingsFromProfile",
            "in": "query",
            "description": "Identifier of an existing configuration profile from where the settings should be copied to the new profile",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 12
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/ConfigurationProfile"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          }
        }
      },
      "put": {
        "tags": [
          "Configuration Profile"
        ],
        "summary": "Update a configuration profile",
        "description": "A request to this endpoint will update an existing configuration profile.\n\n Permissions required:\n * Server Configuration - Update",
        "operationId": "update_3",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": false,
            "schema": {
              "$ref": "#/definitions/ConfigurationProfile"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/ConfigurationProfile"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/configurationProfiles/{id}": {
      "get": {
        "tags": [
          "Configuration Profile"
        ],
        "summary": "Retrieve a configuration profile object by the numeric auto-increment identifier",
        "description": "A request to this endpoint will retrieve the information about the configuration profile specified by the id parameter.\n\n Permissions required:\n * Server Configuration - Read",
        "operationId": "getById_5",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the configuration profile object",
            "required": true,
            "type": "integer",
            "format": "int32",
            "x-example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/ConfigurationProfile"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/configurationProfiles/{id}/configuration/export": {
      "get": {
        "tags": [
          "Configuration Profile"
        ],
        "summary": "Export a full configuration profile configuration",
        "description": "A request to this endpoint will export the full configuration of a configuration profile.\n\n Permissions required:\n * Server Configuration - Read",
        "operationId": "exportConfiguration_1",
        "produces": [
          "application/xml"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the profile object",
            "required": true,
            "type": "integer",
            "format": "int32",
            "x-example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation"
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/configurationProfiles/{id}/configuration/import": {
      "put": {
        "tags": [
          "Configuration Profile"
        ],
        "summary": "Import a full configuration profile settings set",
        "description": "A request to this endpoint will import a full configuration profile settings set. The presented values will overwrite the existing values or create the missing values.\n The endpoint returns the number of updated settings.\n\n Permissions required:\n * Server Configuration - Update",
        "operationId": "importConfiguration_1",
        "consumes": [
          "application/xml"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the configuration profile object",
            "required": true,
            "type": "integer",
            "format": "int32",
            "x-example": 1
          },
          {
            "in": "body",
            "name": "body",
            "description": "The configuration values in XML format",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/configurationProfiles/{id}/configuration": {
      "get": {
        "tags": [
          "Configuration Profile"
        ],
        "summary": "Retrieve a configuration setting value of a configuration profile by configuration setting path",
        "description": "A request to this endpoint will retrieve a configuration setting value of a configuration profile specified by the configuration setting path.\nIn case of multiline value, every lines are listed, separated by new line character.\n\n Permissions required:\n * Server Configuration - Read",
        "operationId": "getSettingByPath_1",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the configuration profile object",
            "required": true,
            "type": "integer",
            "format": "int32",
            "x-example": 1
          },
          {
            "name": "settingPath",
            "in": "query",
            "description": "URL encoded path of the configuration setting",
            "required": true,
            "type": "string",
            "x-example": "%5CVerba%5CWeb%5CHTTPEnabled"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "examples": {
              "text/plain": "configuration_value"
            },
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      },
      "put": {
        "tags": [
          "Configuration Profile"
        ],
        "summary": "Update a configuration setting value by configuration setting path",
        "description": "A request to this endpoint will update a configuration profile configuration setting value specified by the configuration setting path.\nIn case of multiline value, every lines must be sent, separated by new line character.\n\n Permissions required:\n * Server Configuration - Update",
        "operationId": "setSettingByPath_1",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the configuration profile object",
            "required": true,
            "type": "integer",
            "format": "int32",
            "x-example": 1
          },
          {
            "name": "settingPath",
            "in": "query",
            "description": "URL encoded path of the configuration",
            "required": true,
            "type": "string",
            "x-example": "%5CVerba%5CWeb%5CHTTPEnabled"
          },
          {
            "in": "body",
            "name": "body",
            "description": "The new configuration value in RAW format",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "examples": {
              "text/plain": "configuration_value"
            },
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/configurationProfileOptions/getSortableFields": {
      "get": {
        "tags": [
          "Configuration Profile"
        ],
        "summary": "Retrieve the list of fields available for sorting",
        "description": "A request to this endpoint will retrieve the list of fields available for sorting for the Configuration Profile endpoint.\n\n Permissions required:\n * Server Configuration - Read",
        "operationId": "getSortableFields_5",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "examples": {
              "application/json": [
                "label",
                "id"
              ]
            },
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "/v1/configurationProfileOptions/getAllowedFilters": {
      "get": {
        "tags": [
          "Configuration Profile"
        ],
        "summary": "Retrieve the list of available filter operators",
        "description": "A request to this endpoint will retrieve the list of available filter operators used by the Configuration Profile endpoint for listing.\n\n Permissions required:\n * Server Configuration - Read",
        "operationId": "getAllowedFilters_5",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/FilterField"
              }
            }
          }
        }
      }
    },
    "/v1/storageTargets/{id}": {
      "get": {
        "tags": [
          "Storage Target"
        ],
        "summary": "Retrieve a storage target by the numeric auto-increment identifier",
        "description": "A request to this endpoint will retrieve the information about the storage target specified by the id parameter.\n\n Permissions required:\n * Storage Targets - Read",
        "operationId": "getById_6",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the storage target object",
            "required": true,
            "type": "integer",
            "format": "int32",
            "x-example": 16
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/StorageTarget"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      },
      "patch": {
        "tags": [
          "Storage Target"
        ],
        "summary": "Partially update a storage target",
        "description": "A request to this endpoint will update a set of supported properties of an existing storage target object.\n The currently supported properties:\n * Amazon S3 - accessKeyId\n * Amazon S3 - secretAccessKey\n * Amazon S3 Compatible - accessKeyId\n * Amazon S3 Compatible - secretAccessKey\n * Bloomberg Vault IM - login\n * Bloomberg Vault IM - password\n * Bloomberg Vault Voice - login\n * Bloomberg Vault Voice - password\n * Bloomberg Vault Voice - sftpPrivateKey\n * Bloomberg Vault Voice - sftpPrivateKeyPassword\n * Bloomberg Vault Voice - sftpPublicKey\n * EMC Isilon SmartLock - apiPassword\n * EMC Isilon SmartLock - apiUser\n * EMC Isilon SmartLock - login\n * EMC Isilon SmartLock - password\n * EMC Unity - login\n * EMC Unity - password\n * Exchange Web Server (EWS) - login\n * Exchange Web Server (EWS) - password\n * Hitachi Content Platform - apiPassword\n * Hitachi Content Platform - apiUser\n * iTernitiy iCAS - login\n * iTernitiy iCAS - password\n * Microsoft Azure Storage - accessKey\n * Microsoft Azure Storage - login\n * Microsoft Azure Storage - password\n * Microsoft Azure Storage - connectionString\n * NetApp SnapLock - apiUser\n * NetApp SnapLock - apiPassword\n * NetApp SnapLock - login\n * NetApp SnapLock - password\n * Network Storage - login\n * Network Storage - password\n * SFTP - login\n * SFTP - password\n * SFTP - sftpPublicKey\n * SFTP - sftpPrivateKey\n * SFTP - sftpPrivateKeyPassword\n * SMTP - login\n * SMTP - password\n * Verint (WFO) - apiKeyId\n * Verint (WFO) - apiSecretKey\n\n Permissions required:\n * Storage Targets - Update",
        "operationId": "patchUpdate_2",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the storage target object",
            "required": true,
            "type": "integer",
            "format": "int32",
            "x-example": 16
          },
          {
            "in": "body",
            "name": "body",
            "description": "The JSON object with the changed properties and their new value.",
            "required": false,
            "schema": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            },
            "x-examples": {
              "application/json": "{\"password\": \"NEW_PLAIN_PASSWORD\"}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/StorageTarget"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/storageTargets": {
      "get": {
        "tags": [
          "Storage Target"
        ],
        "summary": "Retrieve a list of storage targets",
        "description": "A request to this endpoint will retrieve the list of storage targets.\n\n Permissions required:\n * Storage Targets - Read",
        "operationId": "listStorageTargets",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of storage targets to be returned",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 10
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field the data should be sorted by, supported values are \"id\", \"type\" and \"name\"",
            "required": false,
            "type": "string",
            "x-example": "TODO"
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "asc|desc",
            "required": false,
            "type": "string",
            "x-example": "asc"
          },
          {
            "name": "filters",
            "in": "query",
            "description": "The filters",
            "required": false,
            "type": "string",
            "x-example": "{\"filtersList\": [{\"field\": \"type\", \"operator\": \"IN\", \"values\": [\"centera\", \"mr\"]}]}"
          },
          {
            "name": "nextPageToken",
            "in": "query",
            "description": "The next page token: to query the next page, use the nextPageToken received in the previous response. Do not specify sort or filters when using the nextPageToken.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/StorageTargetListResponse"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          }
        }
      }
    },
    "/v1/storageTargets/{id}/password/verify": {
      "post": {
        "tags": [
          "Storage Target"
        ],
        "summary": "Storage target password verification",
        "description": "A request to this endpoint will verify the storage target's password with the posted value.\n The currently supported properties:\n * password\n * apiPassword\n * secretAccessKey\n * sftpPrivateKeyPassword\n * connectionString\n * sftpPrivateKey\n * apiSecretKey\n\n Permissions required:\n * Storage Targets - Update",
        "operationId": "verifyPassword_2",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the storage target object",
            "required": true,
            "type": "integer",
            "format": "int32",
            "x-example": 16
          },
          {
            "in": "body",
            "name": "body",
            "description": "The known plain password, which should be verified and the name of the field of the password in the specific Storage Target child object.",
            "required": false,
            "schema": {
              "$ref": "#/definitions/PropertyValueHolder"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/BooleanHolder"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/storageTargetOptions/getSortableFields": {
      "get": {
        "tags": [
          "Storage Target"
        ],
        "summary": "Retrieve the list of fields available for sorting",
        "description": "A request to this endpoint will retrieve the list of fields available for sorting for the Storage Target endpoint.\n\n Permissions required:\n * Storage Targets - Read",
        "operationId": "getSortableFields_6",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "examples": {
              "application/json": [
                "label",
                "id"
              ]
            },
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "/v1/storageTargetOptions/getAllowedFilters": {
      "get": {
        "tags": [
          "Storage Target"
        ],
        "summary": "Retrieve the list of available filter operators",
        "description": "A request to this endpoint will retrieve the list of available filter operators used by the Storage Target endpoint for listing.\n\n Permissions required:\n * Storage Targets - Read",
        "operationId": "getAllowedFilters_6",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/FilterField"
              }
            }
          }
        }
      }
    },
    "/v1/myAccount": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Retrieve the account properties",
        "description": "A request to this endpoint will retrieve the information about the logged in user account.\n\n No permissions required.",
        "operationId": "get",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/MyAccount"
            }
          }
        }
      }
    },
    "/v1/users/{id}": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Retrieve a user by the numeric auto-increment identifier",
        "description": "A request to this endpoint will retrieve the information about the user specified by the id parameter.\n\n Permissions required:\n * Users - Read",
        "operationId": "getById_7",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the user object",
            "required": true,
            "type": "integer",
            "format": "int32",
            "x-example": 16
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/User"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      },
      "patch": {
        "tags": [
          "User"
        ],
        "summary": "Partially update a user",
        "description": "A request to this endpoint will update a set of supported properties of an existing user object.\n The currently supported properties:\n * password\n\n Permissions required:\n * Users - Update",
        "operationId": "patchUpdate_3",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the user object",
            "required": true,
            "type": "integer",
            "format": "int32",
            "x-example": 16
          },
          {
            "in": "body",
            "name": "body",
            "description": "The JSON object with the changed properties and their new value.",
            "required": false,
            "schema": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            },
            "x-examples": {
              "application/json": "{password: NEW_PLAIN_PASSWORD}"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/User"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/users/{id}/password/verify": {
      "post": {
        "tags": [
          "User"
        ],
        "summary": "User password verification",
        "description": "A request to this endpoint will verify the user's password with the posted plain value.\n\n Permissions required:\n * Users - Update",
        "operationId": "verifyPassword_3",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the user object",
            "required": true,
            "type": "integer",
            "format": "int32",
            "x-example": 16
          },
          {
            "in": "body",
            "name": "body",
            "description": "The known plain password in RAW format, which should be verified.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/BooleanHolder"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/users": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Retrieve a list of users",
        "description": "A request to this endpoint will retrieve the list of users.\n\n Permissions required:\n * Users - Read",
        "operationId": "listUsers",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of users to be returned",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 10
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field the data should be sorted by, supported values are \"loginName\" and \"id\"",
            "required": false,
            "type": "string",
            "x-example": "loginName"
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "asc|desc",
            "required": false,
            "type": "string",
            "x-example": "asc"
          },
          {
            "name": "filters",
            "in": "query",
            "description": "The filters",
            "required": false,
            "type": "string",
            "x-example": "{\"filtersList\": [{\"field\": \"login\", \"operator\": \"IN\", \"values\": [\"john.doe\", \"jane.doe\"]}]}"
          },
          {
            "name": "nextPageToken",
            "in": "query",
            "description": "The next page token: to query the next page, use the nextPageToken received in the previous response. Do not specify sort or filters when using the nextPageToken.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/UserListResponse"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          }
        }
      }
    },
    "/v1/users/({uniqueKeyValues})": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Retrieve a user by other key field value",
        "description": "A request to this endpoint will retrieve the information about the user specified by other unique field value.\n\n Permissions required:\n * Users - Read",
        "operationId": "getByKey",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "uniqueKeyValues",
            "in": "path",
            "description": "The name and the value key-value pairs of the key fields in a comma separated list",
            "required": true,
            "type": "string",
            "x-example": "login=john.doe"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/User"
            }
          },
          "400": {
            "description": "Invalid request, data validation error"
          },
          "403": {
            "description": "Insufficient privileges"
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/v1/userOptions/getSortableFields": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Retrieve the list of fields available for sorting",
        "description": "A request to this endpoint will retrieve the list of fields available for sorting for the User endpoint.\n\n Permissions required:\n * Users - Read",
        "operationId": "getSortableFields_7",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "examples": {
              "application/json": [
                "label",
                "id"
              ]
            },
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "/v1/userOptions/getAllowedFilters": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Retrieve the list of available filter operators",
        "description": "A request to this endpoint will retrieve the list of available filter operators used by the User endpoint for listing.\n\n Permissions required:\n * Users - Read",
        "operationId": "getAllowedFilters_7",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful operation",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/FilterField"
              }
            }
          }
        }
      }
    },
    "/v1/timeZones": {
      "get": {
        "tags": [
          "Time Zones"
        ],
        "operationId": "list_2",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {},
            "schema": {
              "$ref": "#/definitions/TimeZones"
            }
          }
        }
      }
    }
  },
  "definitions": {
    "AdSyncProfile": {
      "type": "object",
      "discriminator": "type",
      "properties": {
        "id": {
          "type": "string",
          "example": "2DBBE84D-E7D7-4BBC-A09B-B36B4287D285",
          "description": "The GUID type auto-generated identifier",
          "readOnly": true
        },
        "description": {
          "type": "string",
          "example": "Azure AD",
          "description": "The display name of the profile"
        },
        "enabled": {
          "type": "boolean",
          "example": true,
          "description": "Specifies that the profile is enabled or not"
        },
        "type": {
          "type": "string",
          "example": "azure_ad",
          "description": "Specifies the type of the Active Directory",
          "enum": [
            "azure_ad",
            "ldap"
          ]
        }
      },
      "description": "Active Directory Synchronization Profile objectImplemented types:\n - Azure Active Directory Synchronization Profile\n - LDAP Active Directory Synchronization Profile\n"
    },
    "AzureAdSyncProfile": {
      "allOf": [
        {
          "$ref": "#/definitions/AdSyncProfile"
        },
        {
          "type": "object",
          "properties": {
            "azureTenantId": {
              "type": "string",
              "example": "fdB4E546-r6u8-dBf0-88rv-BjtZZ7105Gj1",
              "description": "Tenant ID"
            },
            "azureAppId": {
              "type": "string",
              "example": "fdB4E546-r6u8-dBf0-88rv-BjtZZ7105Gj1",
              "description": "Application ID that can be used for the authentication"
            },
            "azureAppSecret": {
              "type": "string",
              "example": "secret",
              "description": "Application Secret Pass that can be used for the authentication"
            }
          },
          "description": "Azure Active Directory Synchronization Profile object"
        }
      ]
    },
    "LdapAdSyncProfile": {
      "allOf": [
        {
          "$ref": "#/definitions/AdSyncProfile"
        },
        {
          "type": "object",
          "properties": {
            "host": {
              "type": "string",
              "example": "LDAPHOST",
              "description": "Address or the host of the LDAP server"
            },
            "port": {
              "type": "integer",
              "format": "int32",
              "example": 2222,
              "description": "Port to the LDAP server"
            },
            "userName": {
              "type": "string"
            },
            "ldapPassword": {
              "type": "string",
              "example": "secret",
              "description": "Password that authenticate to he LDAP server"
            }
          },
          "description": "LDAP Active Directory Synchronization Profile object"
        }
      ]
    },
    "AdSyncProfileListResponse": {
      "type": "object",
      "properties": {
        "list": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AdSyncProfile"
          }
        },
        "nextPageToken": {
          "type": "string"
        }
      }
    },
    "BooleanHolder": {
      "type": "object",
      "properties": {
        "value": {
          "type": "boolean"
        }
      }
    },
    "PropertyValueHolder": {
      "type": "object",
      "properties": {
        "property": {
          "type": "string",
          "example": "field1",
          "description": "Property name"
        },
        "value": {
          "type": "string",
          "example": "NEW_VALUE",
          "description": "Property value"
        }
      },
      "description": "Helper object to specify a property of an object and its value"
    },
    "FilterField": {
      "type": "object",
      "properties": {
        "paramName": {
          "type": "string"
        },
        "operators": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "EQUAL",
              "NOT_EQUAL",
              "GREATER_THAN",
              "GREATER_THAN_OR_EQUAL",
              "LESS_THAN",
              "LESS_THAN_OR_EQUAL",
              "CONTAINS",
              "ENDS_WITH",
              "STARTS_WITH",
              "LIKE",
              "BETWEEN",
              "IN",
              "NOT_IN"
            ]
          }
        }
      }
    },
    "TokenResponse": {
      "type": "object",
      "properties": {
        "access_token": {
          "type": "string",
          "example": "fL9QPL2U667bBpitMFhtNIn2kLHC15WB",
          "description": "The requested access token. The application can use this token to authenticate to the API."
        },
        "refresh_token": {
          "type": "string",
          "example": "mE07g3HZkoSaqkysDZLC6B3JA0stEiUz0maA9fu1GhblAQc3",
          "description": "The refresh token for the requested access token. The application can use this token to request another access token after the current access token expires."
        },
        "token_type": {
          "type": "string",
          "example": "Bearer",
          "description": "Indicates the token type value. The only type that the system supports is Bearer."
        },
        "expires_in": {
          "type": "integer",
          "format": "int32",
          "example": 3600,
          "description": "The length of time, in seconds, that the access token is valid."
        },
        "user_id": {
          "type": "integer",
          "format": "int32",
          "example": 12,
          "description": "The internal identifier of the user."
        },
        "language": {
          "type": "string",
          "example": "en",
          "description": "The User Interface language code."
        },
        "timeZone": {
          "type": "string",
          "example": "US/Eastern",
          "description": "The effective time zone setting."
        }
      },
      "description": "After a successful authentication, the API responds with the access and refresh tokens and additional parameters."
    },
    "Conversation": {
      "type": "object",
      "properties": {
        "ccdrId": {
          "type": "string",
          "description": "The unique identifier of the conversation (GUID)"
        },
        "ownerEid": {
          "type": "string",
          "description": "The Environment ID. Will be 0000 in non-Multi-Tenant systems"
        },
        "startTime": {
          "type": "string",
          "format": "date-time",
          "description": "The start time of the conversation converted to the user's time zone"
        },
        "endTime": {
          "type": "string",
          "format": "date-time",
          "description": "The end time of the conversation converted to the user's time zone"
        },
        "origStartTime": {
          "type": "string",
          "format": "date-time",
          "description": "The original start time of the conversation converted to the user's time zone. This will be different from the startTime in case of Teams IM records, because then the startTime is changed so the record can be aligned in the result list."
        },
        "origStartTimeInGMT": {
          "type": "string",
          "format": "date-time",
          "description": "The original start time of the conversation in GMT"
        },
        "endTimeInGMT": {
          "type": "string",
          "format": "date-time",
          "description": "The end time of the conversation in GMT"
        },
        "verbaUserName": {
          "type": "string",
          "description": "Name of the associated Verba User"
        },
        "verbaUserLogin": {
          "type": "string",
          "description": "Login ID of the associated Verba User"
        },
        "agentId": {
          "type": "string",
          "description": "Agent / User ID provided by the communication platform"
        },
        "recordedParty": {
          "type": "integer",
          "format": "int32",
          "description": "Signals whether the \"From\" (0) or the \"To\" (1) party was the recorded participant (or null if it is unknown)"
        },
        "sourceName": {
          "type": "string",
          "description": "Caller name (\"From Info\")"
        },
        "sourceCallerId": {
          "type": "string",
          "description": "Caller ID (\"From\")"
        },
        "sourceUserId": {
          "type": "integer",
          "format": "int32",
          "description": "Internal ID of the associated Verba User when recordedParty = 0"
        },
        "sourceIp": {
          "type": "string",
          "description": "Caller IP"
        },
        "sourceDeviceId": {
          "type": "string",
          "description": "Caller Device ID (for example MAC address)"
        },
        "sourceProxyIp": {
          "type": "string",
          "description": "\"From Proxy IP\""
        },
        "destinationName": {
          "type": "string",
          "description": "Called name (\"To Info\")"
        },
        "destinationCallerId": {
          "type": "string",
          "description": "Called ID (\"To\")"
        },
        "destinationUserId": {
          "type": "integer",
          "format": "int32",
          "description": "Internal ID of the associated Verba User when recordedParty = 1"
        },
        "destinationIp": {
          "type": "string",
          "description": "Called IP"
        },
        "destinationDeviceId": {
          "type": "string",
          "description": "Called Device ID (for example MAC address)"
        },
        "destinationProxyIp": {
          "type": "string",
          "description": "\"To Proxy IP\""
        },
        "userLocation": {
          "type": "string",
          "description": "The associated Verba User's Location attribute at the time when the conversation was recorded"
        },
        "modalityId": {
          "type": "string",
          "description": "The modality ID of the conversation (reference to the d_modality table)"
        },
        "modalityName": {
          "type": "string",
          "description": "The modality of the conversation (see the d_modality table)"
        },
        "recorderServiceId": {
          "type": "integer",
          "format": "int32",
          "description": "ID of the Recorder Service (reference to the recorder_service table)"
        },
        "location": {
          "type": "string",
          "description": "Name of the Recorder Server"
        },
        "causeId": {
          "type": "integer",
          "format": "int32",
          "description": "End Cause ID"
        },
        "cause": {
          "type": "string",
          "description": "End Cause"
        },
        "directionId": {
          "type": "integer",
          "format": "int32",
          "description": "Direction ID (reference to the direction table)"
        },
        "direction": {
          "type": "string",
          "description": "Direction Name"
        },
        "url": {
          "type": "string",
          "description": "The relative path to the media file"
        },
        "storageFolderId": {
          "type": "integer",
          "format": "int32",
          "description": "ID of the Storage Target where the media files are uploaded to (reference to the storage_folder table)"
        },
        "storageFolderId2": {
          "type": "integer",
          "format": "int32",
          "description": "ID of the 2nd Storage Target (Dual Archiving)"
        },
        "retentionUntil": {
          "type": "string",
          "format": "date-time",
          "description": "End time of the retention"
        },
        "retentionAutoDelete": {
          "type": "boolean",
          "description": "If it is true, then the conversation will be deleted automatically after the retention is over"
        },
        "retentionUntil2": {
          "type": "string",
          "format": "date-time",
          "description": "End time of the retention of the 2nd copy (Dual Archiving)"
        },
        "retentionAutoDelete2": {
          "type": "boolean",
          "description": "If it is true, then this copy will be deleted automatically after the 2nd retention is over"
        },
        "nativeId": {
          "type": "string",
          "description": "Identifier provided by the communication platform"
        },
        "platformCallId": {
          "type": "string",
          "description": "Computed field that can be used to pair the recorded call legs of the same call"
        },
        "secondary": {
          "type": "boolean",
          "description": "If true, then it is a Secondary recording in a 2N setup"
        },
        "hold": {
          "type": "string",
          "format": "byte",
          "description": "Signals if the conversation is under Legal Hold. Possible values are:\n * NULL: not under Legal Hold\n * 1: under Legal Hold because got a Legal Hold Label\n * 2: the Media-Only record is under Legal Hold because a referencing CDR-Only Record is under Legal Hold\n * 3: the Media-Only record is under Legal Hold because got a Legal Hold Label and a referencing CDR-Only Record is under Legal Hold too"
        },
        "manual": {
          "type": "integer",
          "format": "int32",
          "description": "Controlled recording flag:\n * NULL or 0: not a Controlled recording\n * 9: technical controller record which is not recording currently\n * 8: technical controller record which is not recording and restarting the recording of the conversation is not allowed.\n * negative: technical controller record which is currently recording, the negative value references the user started the recording\n * 1: a real recording which was recorded in the controlled mode"
        },
        "manualSourceCcdrId": {
          "type": "string",
          "description": "Unique identifier of the contoller record that was used to initiate this recording"
        },
        "cdrMediaType": {
          "type": "integer",
          "format": "int32",
          "description": "Record Type:\n * 0: Normal\n * 1: CDR-Only\n * 2: Media-Only"
        },
        "audioCodecId": {
          "type": "integer",
          "format": "int32",
          "description": "Audio Codec ID (reference to the codec table)"
        },
        "audioCodec": {
          "type": "string",
          "description": "Audio Codec Name (see the codec table)"
        },
        "videoCodecId": {
          "type": "integer",
          "format": "int32",
          "description": "Video Codec ID (reference to the codec table)"
        },
        "videoCodec": {
          "type": "string",
          "description": "Video Codec Name (see the codec table)"
        },
        "encryptionId": {
          "type": "integer",
          "format": "int32",
          "description": "ID of the Certificate the media files were encrypted with (reference to crypto_key table)"
        },
        "signatureId": {
          "type": "integer",
          "format": "int32",
          "description": "ID of the Certificate the media files were signed with (reference to crypto_key table)"
        },
        "sourceAudioRtpCount": {
          "type": "integer",
          "format": "int32",
          "description": "\"From\" Audio RTP count"
        },
        "destinationAudioRtpCount": {
          "type": "integer",
          "format": "int32",
          "description": "\"To\" Audio RTP count"
        },
        "recordedExtension": {
          "type": "string",
          "description": "The Recorded Extension, only filled in when neither the From nor the To was the recorded party (for example recorded forwarded conversations)"
        },
        "dialedExtension": {
          "type": "string",
          "description": "The originally dialed extension"
        },
        "platformId": {
          "type": "string",
          "description": "Source Platform (reference to the d_platform table)"
        },
        "platformName": {
          "type": "string",
          "description": "Source Platform Name (see the d_platform table)"
        },
        "importSourceId": {
          "type": "integer",
          "format": "int32",
          "description": "ID of the Import Source (reference to the import_source table)"
        },
        "importSourceName": {
          "type": "string",
          "description": "Name of the Import Source (see the import_source table)"
        },
        "transcodeDate": {
          "type": "string",
          "format": "date-time",
          "description": "When the media was transcoded"
        },
        "voiceQuality": {
          "type": "integer",
          "format": "int32",
          "description": "Calculated voice quality (percentage)"
        },
        "forwardReasonName": {
          "type": "string",
          "description": "Forward Reason"
        },
        "silencePercent": {
          "type": "integer",
          "format": "int32",
          "description": "Percentage of silence in the conversation"
        },
        "talkoverPercent": {
          "type": "integer",
          "format": "int32",
          "description": "Percentage of talkover in the conversation"
        },
        "longestSilenceLength": {
          "type": "integer",
          "format": "int32",
          "description": "Longest silence duration"
        },
        "mediaDeleteDate": {
          "type": "string",
          "format": "date-time",
          "description": "When the media files were deleted by a Delete policy that keeps the CDR records"
        },
        "meetingId": {
          "type": "string",
          "description": "Meeting ID"
        },
        "recordingId": {
          "type": "string",
          "description": "Recording ID, not displayed"
        },
        "recordFailed": {
          "type": "boolean",
          "description": "Signals if the record was failed"
        },
        "mediaError": {
          "type": "integer",
          "format": "int32",
          "description": "Bitwise combination of the errors, if any occurred"
        },
        "mediaLength": {
          "type": "integer",
          "format": "int32",
          "description": "Length of the media file"
        },
        "mediaId": {
          "type": "string",
          "description": "The technical Media ID when record type is Media-Only"
        },
        "encryptionPriv": {
          "type": "boolean",
          "description": "Signals whether the private key of the certificate used to encrypt the conversation is available to the Verba system (if false, then the conversation cannot be played back in Verba)"
        },
        "encryptionVer": {
          "type": "integer",
          "format": "int32",
          "description": "Version of the encryption certificate (0 = legacy, 1 = Windows Certificate Store based)"
        },
        "signatureVer": {
          "type": "integer",
          "format": "int32",
          "description": "Version of the singing certificate (0 = legacy, 1 = Windows Certificate Store based)"
        },
        "priv": {
          "type": "boolean",
          "description": "Signals whether the associated Verba User marked this conversation as Private"
        },
        "archiveStatus": {
          "type": "boolean",
          "description": "Signals whether this record was moved to the section_archived table"
        },
        "ondemand": {
          "type": "boolean",
          "description": "Signals whether this is an on-demand recorded conversation"
        },
        "keep": {
          "type": "boolean",
          "description": "Signals whether the on-demand conversation was marked for recording"
        },
        "doNotDelete": {
          "type": "string",
          "format": "byte",
          "description": "The Protected flag (this feature is obsolete); if 1, then it is marked as Protected, if negative, then the recording should be deleted"
        },
        "locationEid": {
          "type": "string",
          "description": "The EID of the Recorder Server when it belongs to a tenant"
        }
      },
      "description": "Conversation object"
    },
    "ConversationListResponse": {
      "type": "object",
      "properties": {
        "list": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Conversation"
          }
        },
        "nextPageToken": {
          "type": "string"
        },
        "nowInGMT": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "MuteStatus": {
      "type": "object",
      "properties": {
        "callerMuted": {
          "type": "boolean"
        },
        "calledMuted": {
          "type": "boolean"
        }
      },
      "description": "Mute status"
    },
    "ImportSource": {
      "type": "object",
      "discriminator": "type",
      "properties": {
        "id": {
          "type": "integer",
          "format": "int32",
          "example": 42,
          "description": "The auto-increment identifier of the import source object, should be left null when creating a new object",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "example": "Zoom Phone Import",
          "description": "Human readable identifier name of the import source"
        },
        "type": {
          "type": "string",
          "example": "zoom_phones",
          "description": "Specify the type of the import source",
          "enum": [
            "acr",
            "bloomberg_im",
            "cisco_ipt_cdr",
            "cisco_mediasense",
            "cisco_spark",
            "cloud9",
            "cloud9_calldata",
            "generic",
            "ipc_dataexchange",
            "lync_archive",
            "lync_cdr",
            "o2",
            "ringcentral",
            "symphony",
            "symphony_xml_cdr",
            "telemessage",
            "verba",
            "verba_restapi",
            "verint",
            "vodafone",
            "zoom_meetings",
            "zoom_phones"
          ]
        },
        "metaJsonString": {
          "type": "object",
          "additionalProperties": {
            "type": "object"
          }
        }
      },
      "description": "Import Source objectImplemented types:\n - ACR\n - Bloomberg IM\n - Cisco Spark (Cisco Webex Teams)\n - Cloud9 Call Data API\n - Cloud9 Recording System API\n - Generic\n - IPC Data Exchange\n - O2\n - RingCentral\n - Symphony XML CDR\n - TeleMessage\n - Verba\n - Verba REST API\n - Verint\n - Vodafone\n - Zoom Meeting\n - Zoom Phone\n"
    },
    "ImportSourceACR": {
      "allOf": [
        {
          "$ref": "#/definitions/ImportSource"
        },
        {
          "type": "object",
          "properties": {
            "hostname": {
              "type": "string",
              "example": "acr.host.local",
              "description": "Enter the hostname or IP address of the ACR server"
            },
            "port": {
              "type": "integer",
              "format": "int32",
              "example": 1111,
              "description": "Enter the port where the ACR server is listening"
            },
            "tlsCertificate": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the certificatefile/certificatethumbprint that is being used for the Cloud9 connection. If left empty then the Verba default certificate will be used"
            },
            "tlsKeyFile": {
              "type": "string",
              "example": "path/to/keyfile.crt",
              "description": "Specify the file where the certificate key is stored if not in the windows certificate store"
            },
            "tlsKeyFilePassword": {
              "type": "string",
              "example": "secret",
              "description": "Specify the password for the file that contains the certificate keys"
            },
            "tlsTrustList": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the list of certificates that Verba trusts from a 3rd-party connection. Available options:\n * .pem file with a list of certificates\n * comma separated certificate thumbprints\n * comma separated CA thumbprints"
            },
            "apiUser": {
              "type": "string",
              "example": "john.doe",
              "description": "User name of the API user"
            },
            "apiPassword": {
              "type": "string",
              "example": "secret",
              "description": "Password of the API user configured"
            },
            "layoutName": {
              "type": "string",
              "example": "foobar",
              "description": "ACR layout name"
            },
            "timezone": {
              "type": "string",
              "example": "Etc/GMT",
              "description": "Timezone"
            },
            "recordingImportBatchSize": {
              "type": "integer",
              "format": "int32",
              "example": 10,
              "description": "Recording Import Batch Size (minutes)"
            },
            "recordingStartTimestamp": {
              "type": "string",
              "example": "2023.02.01 12:11:22",
              "description": "Recording Start Timestamp"
            },
            "recordingEndTimestamp": {
              "type": "string",
              "example": "2023.02.01 12:11:22",
              "description": "Recording End Timestamp"
            }
          },
          "description": "ACR import source specific object"
        }
      ]
    },
    "ImportSourceBloombergIm": {
      "allOf": [
        {
          "$ref": "#/definitions/ImportSource"
        },
        {
          "type": "object",
          "properties": {
            "sourceFolder": {
              "type": "string",
              "example": "\\\\shares\\bloomberg_im",
              "description": "Specify the network path to the shared folder where the Bloomberg IM conversations are available for import"
            }
          },
          "description": "Bloomberg IM import source specific object"
        }
      ]
    },
    "ImportSourceCiscoSpark": {
      "allOf": [
        {
          "$ref": "#/definitions/ImportSource"
        },
        {
          "type": "object",
          "properties": {
            "clientId": {
              "type": "string",
              "example": "dKjsieEBIRrTuW3QR8GO",
              "description": "Enter the Client Id that is shown in Step 7 of the previous section (Creating the Integration on the Cisco Spark side)"
            },
            "clientSecret": {
              "type": "string",
              "example": "secret",
              "description": "Enter the Client Secret that is shown in Step 7 of the previous section (Creating the Integration on the Cisco Spark side)"
            },
            "redirectUri": {
              "type": "string",
              "example": "verba.local",
              "description": "Enter the hostname or IP address of the Verba server"
            },
            "port": {
              "type": "integer",
              "format": "int32",
              "example": 1111,
              "description": "Enter the port where the Verba server is listening"
            },
            "tlsCertificate": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the certificatefile/certificatethumbprint that is being used for the Cloud9 connection. If left empty then the Verba default certificate will be used"
            },
            "tlsKeyFile": {
              "type": "string",
              "example": "path/to/keyfile.crt",
              "description": "Specify the file where the certificate key is stored if not in the windows certificate store"
            },
            "tlsKeyFilePassword": {
              "type": "string",
              "example": "secret",
              "description": "Specify the password for the file that contains the certificate keys"
            },
            "tlsTrustList": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the list of certificates that Verba trusts from a 3rd-party connection. Available options:\n * .pem file with a list of certificates\n * comma separated certificate thumbprints\n * comma separated CA thumbprints"
            }
          },
          "description": "Cisco Spark (alias Cisco Webex Teams) import source specific object"
        }
      ]
    },
    "ImportSourceCloud9CallDataAPI": {
      "allOf": [
        {
          "$ref": "#/definitions/ImportSource"
        },
        {
          "type": "object",
          "properties": {
            "apiKey": {
              "type": "string",
              "example": "api_key",
              "description": "The API Key you created on the Cloud9 Portal"
            },
            "apiSecret": {
              "type": "string",
              "example": "secret",
              "description": "The API Secret you created on the Cloud9 Portal"
            },
            "tlsCertificate": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the certificatefile/certificatethumbprint that is being used for the Cloud9 connection. If left empty then the Verba default certificate will be used"
            },
            "tlsKeyFile": {
              "type": "string",
              "example": "path/to/keyfile.crt",
              "description": "Specify the file where the certificate key is stored if not in the windows certificate store"
            },
            "tlsKeyFilePassword": {
              "type": "string",
              "example": "secret",
              "description": "Specify the password for the file that contains the certificate keys"
            },
            "tlsTrustList": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the list of certificates that Verba trusts from a 3rd-party connection. Available options:\n * .pem file with a list of certificates\n * comma separated certificate thumbprints\n * comma separated CA thumbprints"
            },
            "proxyAddress": {
              "type": "string",
              "example": "testmr.verbatest.local",
              "description": "IP address or FQDN of the forward proxy. When defined, the system will connect through a forward proxy"
            },
            "proxyPort": {
              "type": "integer",
              "format": "int32",
              "example": 1111,
              "description": "The port of the forward proxy"
            },
            "proxyUsername": {
              "type": "string",
              "example": "proxy_user",
              "description": "Username for basic authentication for the forward proxy server"
            },
            "proxyPassword": {
              "type": "string",
              "example": "secret",
              "description": "Password for basic authentication for the forward proxy server"
            }
          },
          "description": "Cloud9 Call Data API import source specific object"
        }
      ]
    },
    "ImportSourceCloud9RecordingSystemAPI": {
      "allOf": [
        {
          "$ref": "#/definitions/ImportSource"
        },
        {
          "type": "object",
          "properties": {
            "httpPort": {
              "type": "integer",
              "format": "int32",
              "example": 1111,
              "description": "HTTP Port, where the Verba C9 import service is listening"
            },
            "httpsPort": {
              "type": "integer",
              "format": "int32",
              "example": 2222,
              "description": "HTTPS Port, where the Verba C9 import service is listening"
            },
            "tlsCertificate": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the certificatefile/certificatethumbprint that is being used for the Cloud9 connection. If left empty then the Verba default certificate will be used"
            },
            "tlsKeyFile": {
              "type": "string",
              "example": "path/to/keyfile.crt",
              "description": "Specify the file where the certificate key is stored if not in the windows certificate store"
            },
            "tlsKeyFilePassword": {
              "type": "string",
              "example": "secret",
              "description": "Specify the password for the file that contains the certificate keys"
            },
            "tlsTrustList": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the list of certificates that Verba trusts from a 3rd-party connection. Available options:\n * .pem file with a list of certificates\n * comma separated certificate thumbprints\n * comma separated CA thumbprints"
            }
          },
          "description": "Cloud9 Recording System API import source specific object"
        }
      ]
    },
    "ImportSourceGeneric": {
      "allOf": [
        {
          "$ref": "#/definitions/ImportSource"
        },
        {
          "type": "object",
          "properties": {
            "customCredential": {
              "type": "boolean",
              "example": true,
              "description": "Custom credentials are used or not"
            },
            "login": {
              "type": "string",
              "example": "john.doe",
              "description": "Login name for the network folder"
            },
            "password": {
              "type": "string",
              "example": "secret",
              "description": "Password for the network folder"
            }
          },
          "description": "Generic import source specific object"
        }
      ]
    },
    "ImportSourceIPCDataExchange": {
      "allOf": [
        {
          "$ref": "#/definitions/ImportSource"
        },
        {
          "type": "object",
          "properties": {
            "url": {
              "type": "string",
              "example": "service.local",
              "description": "A specific URL for each customer must be used to get the call list, retrieve a call and acknowledge the file has been processed"
            },
            "authProvUrl": {
              "type": "string",
              "example": "auth.service.local",
              "description": "A specific URL must be used to be authenticated and authorized to use the Data Exchange API"
            },
            "clientId": {
              "type": "string",
              "example": "john.doe",
              "description": "OAuth client identifier"
            },
            "clientSecret": {
              "type": "string",
              "example": "secret",
              "description": "OAuth client secret"
            },
            "userId": {
              "type": "string",
              "example": "john.doe",
              "description": "An ID used for identifying the tenant"
            },
            "password": {
              "type": "string",
              "example": "secret",
              "description": "Password for the user defined above"
            },
            "tlsCertificate": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the certificatefile/certificatethumbprint that is being used for the Cloud9 connection. If left empty then the Verba default certificate will be used"
            },
            "tlsKeyFile": {
              "type": "string",
              "example": "path/to/keyfile.crt",
              "description": "Specify the file where the certificate key is stored if not in the windows certificate store"
            },
            "tlsKeyFilePassword": {
              "type": "string",
              "example": "secret",
              "description": "Specify the password for the file that contains the certificate keys"
            },
            "tlsTrustList": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the list of certificates that Verba trusts from a 3rd-party connection. Available options:\n * .pem file with a list of certificates\n * comma separated certificate thumbprints\n * comma separated CA thumbprints"
            }
          },
          "description": "IPC Data Exchange import source specific object"
        }
      ]
    },
    "ImportSourceO2": {
      "allOf": [
        {
          "$ref": "#/definitions/ImportSource"
        },
        {
          "type": "object",
          "properties": {
            "serviceUrl": {
              "type": "string",
              "example": "path/to/o2/storage",
              "description": "The URL of the storage location where O2 recordings are stored"
            },
            "liquidAccountId": {
              "type": "string",
              "example": "liquidaccountid",
              "description": "Id of the Liquid Account with access to O2 recordings"
            },
            "solutionInstanceId": {
              "type": "string",
              "example": "solutioninstanceid",
              "description": "Solution Instance Id of the Liquid Account with access to O2 recordings"
            },
            "user": {
              "type": "string",
              "example": "john.doe",
              "description": "Liquid Account Username"
            },
            "password": {
              "type": "string",
              "example": "secret",
              "description": "Liquid Account Password"
            }
          },
          "description": "O2 import source specific object"
        }
      ]
    },
    "ImportSourceRingCentral": {
      "allOf": [
        {
          "$ref": "#/definitions/ImportSource"
        },
        {
          "type": "object",
          "properties": {
            "url": {
              "type": "string",
              "example": "john.doe",
              "description": "The URL of the storage location where the RingCentral data is stored"
            },
            "user": {
              "type": "string",
              "example": "john.doe",
              "description": "Username of the service account that has access to the RingCentral storage"
            },
            "password": {
              "type": "string",
              "example": "secret",
              "description": "Password of the service account that has access to the RingCentral storage"
            },
            "apiKey": {
              "type": "string",
              "example": "API_KEY",
              "description": "RingCentral Access API Key value. Visible in the RingCentral administration portal"
            },
            "apiSecret": {
              "type": "string",
              "example": "secret",
              "description": "RingCentral Access API Secret value. Visible in the RingCentral administration portal"
            }
          },
          "description": "RingCentral import source specific object"
        }
      ]
    },
    "ImportSourceTeleMessage": {
      "allOf": [
        {
          "$ref": "#/definitions/ImportSource"
        },
        {
          "type": "object",
          "properties": {
            "imapServer": {
              "type": "string",
              "example": "imapserver.local:11",
              "description": "e-Mail account receiving TeleMessage data\nServer address format should be: <hostname or ip>:<port number>"
            },
            "imapUsername": {
              "type": "string",
              "example": "john.doe",
              "description": "e-Mail account username"
            },
            "imapPassword": {
              "type": "string",
              "example": "secret",
              "description": "e-Mail account password"
            },
            "tlsCertificate": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the certificatefile/certificatethumbprint that is being used for the Cloud9 connection. If left empty then the Verba default certificate will be used"
            },
            "tlsKeyFile": {
              "type": "string",
              "example": "path/to/keyfile.crt",
              "description": "Specify the file where the certificate key is stored if not in the windows certificate store"
            },
            "tlsKeyFilePassword": {
              "type": "string",
              "example": "secret",
              "description": "Specify the password for the file that contains the certificate keys"
            },
            "useTls": {
              "type": "boolean",
              "example": true,
              "description": "Tick to use TLS between the e-Mail account receiving TeleMessage data and Verba."
            }
          },
          "description": "TeleMessage import source specific object"
        }
      ]
    },
    "ImportSourceVerba": {
      "allOf": [
        {
          "$ref": "#/definitions/ImportSource"
        },
        {
          "type": "object",
          "properties": {
            "storageTargetType": {
              "type": "string",
              "example": "smb",
              "description": "The storage type",
              "enum": [
                "smb",
                "azure"
              ]
            },
            "sourceFolder": {
              "type": "string",
              "example": "\\\\storage_server\\media_storage",
              "description": "(In case 'SMB' storage type) Specify the path where the storage is accessible in the Windows file system (UNC path)"
            },
            "smbUser": {
              "type": "string",
              "example": "john.doe",
              "description": "(In case 'SMB' storage type) Custom credential user login for the storage"
            },
            "smbPassword": {
              "type": "string",
              "example": "secret",
              "description": "(In case 'SMB' storage type) Custom credential password for the storage"
            },
            "azureService": {
              "type": "string",
              "example": "blob",
              "description": "(In case of 'Azure' storage type) Specifies the Azure service type:\n - Azure Files\n - Azure Blob\n",
              "enum": [
                "file",
                "blob"
              ]
            },
            "azureFileShare": {
              "type": "string",
              "example": "verba",
              "description": "(In case of 'Azure' storage type and 'Azure Files' service) The <share name> attribute form the access URL:  https://<storage account>.file.core.windows.net/<share name>"
            },
            "azureBlobContainerName": {
              "type": "string",
              "example": "verba",
              "description": "(In case of 'Azure' storage type and 'Azure Blob' service) The container name that you have created under Storage Account / Blob Service menu on the Microsoft Azure Portal."
            },
            "azureLogin": {
              "type": "string",
              "example": "verbatest",
              "description": "(In case of 'Azure' storage type and 'Account' accessKey) The <storage account> attribute from the access URL: https://<storage account>.file.core.windows.net/<share name>/"
            },
            "azurePassword": {
              "type": "string",
              "example": "secret",
              "description": "(In case of 'Azure' storage type and 'Account' accessKey) Specify the access key"
            },
            "azureConnectionString": {
              "type": "string",
              "example": "secret",
              "description": "(In case of 'Azure' storage type and 'Connection String' accessKey) Specify the connection string that you can find under Storage Account / Access keys menu on the Microsoft Azure Portal"
            }
          },
          "description": "Verba import object"
        }
      ]
    },
    "ImportSourceVerbaRestApi": {
      "allOf": [
        {
          "$ref": "#/definitions/ImportSource"
        },
        {
          "type": "object",
          "properties": {
            "httpPort": {
              "type": "integer",
              "format": "int32",
              "example": 1111,
              "description": "HTTP Port, where the Verba import service is listening"
            },
            "httpsPort": {
              "type": "integer",
              "format": "int32",
              "example": 2222,
              "description": "HTTPS Port, where the Verba import service is listening"
            },
            "tlsCertificate": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the certificatefile/certificatethumbprint that is being used for the Cloud9 connection. If left empty then the Verba default certificate will be used"
            },
            "tlsKeyFile": {
              "type": "string",
              "example": "path/to/keyfile.crt",
              "description": "Specify the file where the certificate key is stored if not in the windows certificate store"
            },
            "tlsKeyFilePassword": {
              "type": "string",
              "example": "secret",
              "description": "Specify the password for the file that contains the certificate keys"
            },
            "tlsTrustList": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the list of certificates that Verba trusts from a 3rd-party connection. Available options:\n * .pem file with a list of certificates\n * comma separated certificate thumbprints\n * comma separated CA thumbprints"
            }
          },
          "description": "Verba REST API import source specific object"
        }
      ]
    },
    "ImportSourceVerint": {
      "allOf": [
        {
          "$ref": "#/definitions/ImportSource"
        },
        {
          "type": "object",
          "properties": {
            "recorderAddress": {
              "type": "string",
              "example": "329001|verintrecorder.contoso.com",
              "description": "Newline separated Verint Recorder address(es). Each line must use the following syntax: Verint Recorder Serial|Verint Recorder FQDN or IP"
            },
            "httpPort": {
              "type": "integer",
              "format": "int32",
              "example": 1111,
              "description": "HTTP Port number matching the Verba Media repository configured in WFO 15.2"
            },
            "httpsPort": {
              "type": "integer",
              "format": "int32",
              "example": 2222,
              "description": "HTTPS Port number matching the Verba Media repository configured in WFO 15.2"
            },
            "tlsCertificate": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the certificatefile/certificatethumbprint that is being used for the Cloud9 connection. If left empty then the Verba default certificate will be used"
            },
            "tlsKeyFile": {
              "type": "string",
              "example": "path/to/keyfile.crt",
              "description": "Specify the file where the certificate key is stored if not in the windows certificate store"
            },
            "tlsKeyFilePassword": {
              "type": "string",
              "example": "secret",
              "description": "Specify the password for the file that contains the certificate keys"
            },
            "tlsTrustList": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the list of certificates that Verba trusts from a 3rd-party connection. Available options:\n * .pem file with a list of certificates\n * comma separated certificate thumbprints\n * comma separated CA thumbprints"
            }
          },
          "description": "Verint import source specific object"
        }
      ]
    },
    "ImportSourceVodafone": {
      "allOf": [
        {
          "$ref": "#/definitions/ImportSource"
        },
        {
          "type": "object",
          "properties": {
            "primaryServiceUrl": {
              "type": "string",
              "example": "primary.host",
              "description": "Primary Service Url"
            },
            "secondaryServiceUrl": {
              "type": "string",
              "example": "secondary.host",
              "description": "Secondary Service Url"
            },
            "user": {
              "type": "string",
              "example": "john.doe",
              "description": "User name"
            },
            "password": {
              "type": "string",
              "example": "secret",
              "description": "Password of the user"
            },
            "tlsCertificate": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the certificatefile/certificatethumbprint that is being used for the Cloud9 connection. If left empty then the Verba default certificate will be used"
            },
            "tlsKeyFile": {
              "type": "string",
              "example": "path/to/keyfile.crt",
              "description": "Specify the file where the certificate key is stored if not in the windows certificate store"
            },
            "tlsKeyFilePassword": {
              "type": "string",
              "example": "secret",
              "description": "Specify the password for the file that contains the certificate keys"
            },
            "tlsTrustList": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the list of certificates that Verba trusts from a 3rd-party connection. Available options:\n * .pem file with a list of certificates\n * comma separated certificate thumbprints\n * comma separated CA thumbprints"
            },
            "forwardProxyAddress": {
              "type": "string",
              "example": "10.110.0.27",
              "description": "IP of the forward proxy server. If left empty, no attempt is made for establishing a forward proxy connection."
            },
            "forwardProxyPort": {
              "type": "integer",
              "format": "int32",
              "example": 8181,
              "description": "Port for the forward proxy connection"
            },
            "forwardProxyUser": {
              "type": "string",
              "example": "john.doe",
              "description": "Username for authenticating with the Forward Proxy. If left empty, authentication is omitted."
            },
            "forwardProxyPassword": {
              "type": "string",
              "example": "secret",
              "description": "Password for authenticating with the Forward Proxy."
            },
            "businessHoursTimezone": {
              "type": "string",
              "example": "Etc/GMT",
              "description": "Business Hours Timezone"
            },
            "businessHoursStartTime": {
              "type": "string",
              "example": "2023.02.01 12:11:22",
              "description": "Business Hours Start Time\t"
            },
            "businessHoursEndTime": {
              "type": "string",
              "example": "2023.02.01 12:11:22",
              "description": "Business Hours End Time"
            },
            "defaultThrottleWaitTime": {
              "type": "integer",
              "format": "int32",
              "example": 10,
              "description": "Default Throttle Wait Time (Seconds)"
            },
            "recordingImportBatchSize": {
              "type": "string",
              "example": "200",
              "description": "Recording Import Batch Size"
            }
          },
          "description": "Vodafone import source specific object"
        }
      ]
    },
    "ImportSourceZoomMeeting": {
      "allOf": [
        {
          "$ref": "#/definitions/ImportSource"
        },
        {
          "type": "object",
          "properties": {
            "authType": {
              "type": "string",
              "example": "oauth2",
              "description": "Specifies the type of authentication",
              "enum": [
                "jwt",
                "oauth2"
              ]
            },
            "oauthAccountId": {
              "type": "string",
              "example": "oauth2",
              "description": "The Zoom API OAuth account ID associated with the Zoom application registered earlier"
            },
            "oauthClientId": {
              "type": "string",
              "example": "oauth2",
              "description": "The Zoom API OAuth client ID associated with the Zoom application registered earlier"
            },
            "oauthClientPassword": {
              "type": "string",
              "example": "oauth2",
              "description": "The Zoom API OAuth client password associated with the Zoom application registered earlier"
            },
            "apiKey": {
              "type": "string",
              "example": "API_KEY",
              "description": "The Zoom API JWT key associated with the Zoom application registered earlier"
            },
            "apiSecret": {
              "type": "string",
              "example": "secret",
              "description": "The Zoom API JWT secret associated with your Zoom application registered earlier"
            },
            "forwardProxyAddress": {
              "type": "string",
              "example": "10.110.0.27",
              "description": "IP of the forward proxy server. If left empty, no attempt is made for establishing a forward proxy connection."
            },
            "forwardProxyPort": {
              "type": "integer",
              "format": "int32",
              "example": 8181,
              "description": "Port for the forward proxy connection"
            },
            "forwardProxyUser": {
              "type": "string",
              "example": "john.doe",
              "description": "Username for authenticating with the Forward Proxy. If left empty, authentication is omitted."
            },
            "forwardProxyPassword": {
              "type": "string",
              "example": "secret",
              "description": "Password for authenticating with the Forward Proxy."
            },
            "apiAddress": {
              "type": "string",
              "example": "https://api.zoom.us/v2/",
              "description": "The base URL of the Zoom API"
            },
            "tlsCertificate": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the certificatefile/certificatethumbprint that is being used for the Cloud9 connection. If left empty then the Verba default certificate will be used"
            },
            "tlsKeyFile": {
              "type": "string",
              "example": "path/to/keyfile.crt",
              "description": "Specify the file where the certificate key is stored if not in the windows certificate store"
            },
            "tlsKeyFilePassword": {
              "type": "string",
              "example": "secret",
              "description": "Specify the password for the file that contains the certificate keys"
            },
            "tlsTrustList": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the list of certificates that Verba trusts from a 3rd-party connection. Available options:\n * .pem file with a list of certificates\n * comma separated certificate thumbprints\n * comma separated CA thumbprints"
            }
          },
          "description": "Zoom Meeting import object"
        }
      ]
    },
    "ImportSourceZoomPhone": {
      "allOf": [
        {
          "$ref": "#/definitions/ImportSource"
        },
        {
          "type": "object",
          "properties": {
            "authType": {
              "type": "string",
              "example": "oauth2",
              "description": "Specifies the type of authentication",
              "enum": [
                "jwt",
                "oauth2"
              ]
            },
            "oauthAccountId": {
              "type": "string",
              "example": "oauth2",
              "description": "The Zoom API OAuth account ID associated with the Zoom application registered earlier"
            },
            "oauthClientId": {
              "type": "string",
              "example": "oauth2",
              "description": "The Zoom API OAuth client ID associated with the Zoom application registered earlier"
            },
            "oauthClientPassword": {
              "type": "string",
              "example": "oauth2",
              "description": "The Zoom API OAuth client password associated with the Zoom application registered earlier"
            },
            "apiKey": {
              "type": "string",
              "example": "API_KEY",
              "description": "The Zoom API JWT key associated with the Zoom application registered earlier"
            },
            "apiSecret": {
              "type": "string",
              "example": "secret",
              "description": "The Zoom API JWT secret associated with your Zoom application registered earlier"
            },
            "forwardProxyAddress": {
              "type": "string",
              "example": "10.110.0.27",
              "description": "IP of the forward proxy server. If left empty, no attempt is made for establishing a forward proxy connection."
            },
            "forwardProxyPort": {
              "type": "integer",
              "format": "int32",
              "example": 8181,
              "description": "Port for the forward proxy connection"
            },
            "forwardProxyUser": {
              "type": "string",
              "example": "john.doe",
              "description": "Username for authenticating with the Forward Proxy. If left empty, authentication is omitted."
            },
            "forwardProxyPassword": {
              "type": "string",
              "example": "secret",
              "description": "Password for authenticating with the Forward Proxy."
            },
            "apiAddress": {
              "type": "string",
              "example": "https://api.zoom.us/v2/",
              "description": "The base URL of the Zoom API"
            },
            "tlsCertificate": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the certificatefile/certificatethumbprint that is being used for the Cloud9 connection. If left empty then the Verba default certificate will be used"
            },
            "tlsKeyFile": {
              "type": "string",
              "example": "path/to/keyfile.crt",
              "description": "Specify the file where the certificate key is stored if not in the windows certificate store"
            },
            "tlsKeyFilePassword": {
              "type": "string",
              "example": "secret",
              "description": "Specify the password for the file that contains the certificate keys"
            },
            "tlsTrustList": {
              "type": "string",
              "example": "28b845a6ea7600310a64526ce48939e6a31199ba",
              "description": "Specify the list of certificates that Verba trusts from a 3rd-party connection. Available options:\n * .pem file with a list of certificates\n * comma separated certificate thumbprints\n * comma separated CA thumbprints"
            }
          },
          "description": "Zoom Phone import object"
        }
      ]
    },
    "ImportSymphonyXmlCdr": {
      "allOf": [
        {
          "$ref": "#/definitions/ImportSource"
        },
        {
          "type": "object",
          "properties": {
            "sourceFolder": {
              "type": "string",
              "example": "\\\\storage_server\\symphony",
              "description": "Specify the network path to the shared folder where the Symphony conversations are available for import"
            },
            "login": {
              "type": "string",
              "example": "john.doe",
              "description": "Login name for the network folder"
            },
            "password": {
              "type": "string",
              "example": "secret",
              "description": "Password for the network folder"
            }
          },
          "description": "Symphony XML CDR import source specific object"
        }
      ]
    },
    "ImportSourceListResponse": {
      "type": "object",
      "properties": {
        "list": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ImportSource"
          }
        },
        "nextPageToken": {
          "type": "string"
        }
      }
    },
    "ConversationParticipant": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "description": "Defines the tpye of the recorded extension entry. The following valid values apply:\n * EXTENSION: a recorded phone number, extension number or address (e.g. SIP address). The system will search in the From/To metadata fields based on this type of participant entry.\n * USER_ID: a recorded user ID valid on the recorded platform (e.g. trader ID, agent ID). The system will search in the User ID metadata field based on this type of participant entry.",
          "enum": [
            "EXTENSION",
            "USER_ID"
          ]
        },
        "identifier": {
          "type": "string",
          "example": "+123456789",
          "description": "The identifier of the participant. If type=EXTENSION, then a phone number, extension number or address, if type=USER_ID, then a trader ID or an agent ID."
        }
      },
      "description": "This object provides the participant information for a recorded conversation which can be used to filter various API endpoints."
    },
    "LegalHold": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "format": "int32",
          "example": 42,
          "description": "The auto-increment identifier of the legal hold object, should be left null when creating a new object"
        },
        "label": {
          "type": "string",
          "example": "Case 3:00CV0001-ABC-XYZ",
          "description": "The identifier of the legal hold object"
        },
        "hold": {
          "type": "boolean",
          "example": true,
          "description": "Indicates if this Label is under Legal Hold. If the hold property is null then it is considered as a Legal Hold Label."
        },
        "startTime": {
          "type": "string",
          "format": "date-time",
          "example": "2021-01-31T23:00:00",
          "description": "The start time of the interval within the conversations should be marked as legal hold. Null value means that the legal hold will be applied to all historical conversations."
        },
        "endTime": {
          "type": "string",
          "format": "date-time",
          "example": "2021-06-30T21:59:59",
          "description": "The end time of the interval within the conversations should be marked as legal hold. Null value or a future time means that the legal hold will be applied to future conversations too."
        },
        "numberOfConversations": {
          "type": "integer",
          "format": "int64",
          "example": 152388,
          "description": "The number of conversations have been assigned to this Legal Hold. Will be returned only if the countConversations parameter is set to true for the get Legal Hold API call."
        },
        "participants": {
          "type": "array",
          "description": "List of conversation participant identifiers (extension numbers, agent IDs, trader IDs etc) whose conversations should be marked as legal hold. If both participants and users are listed, then the system will take the union of the matching conversations.",
          "items": {
            "$ref": "#/definitions/ConversationParticipant"
          }
        },
        "users": {
          "type": "array",
          "description": "List of VFC users whose conversations should be marked as legal hold. If both participants and users are listed, then the system will take the union of the matching conversations.",
          "items": {
            "$ref": "#/definitions/UserIdentificationData"
          }
        },
        "metadata": {
          "type": "array",
          "example": "[{\"name\":\"Requestor Name\",\"value\":\"Jerry Jones\"},{\"name\":\"Approver Name\",\"value\":\"Sharon Harrington\"}]",
          "description": "List of additional metadata that should be attached to the label object in the Verba system.",
          "items": {
            "$ref": "#/definitions/NameValuePair"
          }
        }
      },
      "description": "Legal hold object"
    },
    "NameValuePair": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "example": "Requestor Name",
          "description": "The name of the metadata."
        },
        "value": {
          "type": "string",
          "example": "Jerry Jones",
          "description": "The value of the metadata."
        }
      },
      "description": "Object represents custom metadata with a name and a value"
    },
    "UserIdentificationData": {
      "type": "object",
      "properties": {
        "userId": {
          "type": "integer",
          "format": "int32",
          "example": 47,
          "description": "The Verba User ID. This is an auto-increment field in the Verba system."
        },
        "loginId": {
          "type": "string",
          "example": "jerry.jones",
          "description": "The Login ID of the user as stored in the Verba system."
        },
        "email": {
          "type": "string",
          "example": "jerry.jones@company.com",
          "description": "The email address of the user."
        }
      },
      "description": "This object provides Verba user identification data to various API endpoints. A Verba user can be identified by either their Verba User ID, or their Login ID or their email address."
    },
    "LegalHoldListResponse": {
      "type": "object",
      "properties": {
        "list": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LegalHold"
          }
        },
        "nextPageToken": {
          "type": "string"
        }
      }
    },
    "ServerConfigurationTask": {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "example": "restart",
          "description": "The action",
          "enum": [
            "refresh_access_list",
            "refresh_ann_whitelist",
            "refresh_crypto_keys",
            "refresh_ew_rules",
            "refresh_instance",
            "refresh_voh",
            "remove_shared_access_list",
            "reread",
            "restart",
            "send_config",
            "send_file",
            "server_deactivate",
            "server_delete"
          ]
        },
        "service": {
          "type": "string",
          "example": "WebApp",
          "description": "(Optional) The name of the related service"
        },
        "server": {
          "type": "string",
          "example": "localhost",
          "description": "The name of the server where the task should be applied"
        },
        "configurationChanges": {
          "type": "array",
          "example": "{\"\\Verba\\Web\\LogLevel\" = \"DEBUG\", \"\\Verba\\Web\\PasswordsExpiresAfter\" = \"30\"}",
          "description": "Configuration changes (path=newValue) when action=send_config",
          "items": {
            "$ref": "#/definitions/NameValuePair"
          }
        }
      },
      "description": "Server configuration task object"
    },
    "ServerConfigurationTaskListResponse": {
      "type": "object",
      "properties": {
        "list": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ServerConfigurationTask"
          }
        }
      }
    },
    "Server": {
      "type": "object",
      "properties": {
        "json": {
          "type": "string"
        },
        "hostname": {
          "type": "string",
          "example": "verbamr01",
          "description": "The hostname of the configured server"
        },
        "role": {
          "type": "string",
          "example": "Combo",
          "description": "The role of the configured server",
          "enum": [
            "AS",
            "Combo",
            "DR",
            "LF",
            "LFRC",
            "MR",
            "RC",
            "RS",
            "SS"
          ]
        },
        "configurationProfileId": {
          "type": "integer",
          "format": "int32",
          "example": 12,
          "description": "The ID of the associated Configuration Profile"
        },
        "description": {
          "type": "string",
          "example": "Foo bar",
          "description": "The description of the configured server"
        },
        "tasks": {
          "type": "array",
          "description": "List of the actual Configuration Task for the server that should be applied\n(The data must be expanded)",
          "items": {
            "$ref": "#/definitions/ServerConfigurationTask"
          }
        }
      },
      "description": "Server object"
    },
    "ServerService": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "displayName": {
          "type": "string"
        },
        "logName": {
          "type": "string"
        },
        "apiPort": {
          "type": "integer",
          "format": "int32"
        },
        "canBeRestarted": {
          "type": "boolean"
        },
        "standbySupported": {
          "type": "boolean"
        },
        "status": {
          "type": "string"
        },
        "startupType": {
          "type": "string"
        },
        "fileVersion": {
          "type": "string"
        },
        "loadReBalancingSupported": {
          "type": "boolean"
        },
        "standby": {
          "type": "integer",
          "format": "int32"
        },
        "standbyOngoing": {
          "type": "integer",
          "format": "int32"
        }
      },
      "description": "Service object"
    },
    "ServerServiceListResponse": {
      "type": "object",
      "properties": {
        "list": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ServerService"
          }
        }
      }
    },
    "ExecuteConfigurationTaskResult": {
      "type": "object",
      "properties": {
        "task": {
          "$ref": "#/definitions/ServerConfigurationTask"
        },
        "consideredExecuted": {
          "type": "boolean"
        },
        "warning": {
          "type": "string"
        },
        "error": {
          "type": "string"
        }
      }
    },
    "ExecuteConfigurationTaskResultList": {
      "type": "object",
      "properties": {
        "list": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ExecuteConfigurationTaskResult"
          }
        }
      }
    },
    "ConfigurationDifference": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string",
          "example": "\\Verba\\Web\\HTTPEnabled",
          "description": "The path of the configuration"
        },
        "valueRegistry": {
          "type": "string",
          "example": "1",
          "description": "The value of the configuration stored in the server's registry"
        },
        "valueDb": {
          "type": "string",
          "example": "0",
          "description": "The value of the configuration stored in the central database"
        },
        "serverCustom": {
          "type": "boolean",
          "example": false,
          "description": "Signals whether the central databse value is a custom setting of the server (true) or is coming from the server's configuration profile (false)"
        }
      },
      "description": "Configuration Difference object"
    },
    "ConfigurationDifferenceList": {
      "type": "object",
      "properties": {
        "differences": {
          "type": "array",
          "description": "List of the differences.",
          "items": {
            "$ref": "#/definitions/ConfigurationDifference"
          }
        }
      },
      "description": "List of Configuration Differences"
    },
    "ConfigurationDifferenceResolution": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string",
          "example": "\\Verba\\Web\\HTTPEnabled",
          "description": "The path of the configuration"
        },
        "correctSource": {
          "type": "string",
          "example": "1",
          "description": "The correct source of the configuration value based on the decision of the client application",
          "enum": [
            "REGISTRY",
            "DATABASE"
          ]
        }
      },
      "description": "Configuration Difference Resolution object"
    },
    "ConfigurationDifferenceResolutionList": {
      "type": "object",
      "properties": {
        "resolutions": {
          "type": "array",
          "description": "List of the resolutions.",
          "items": {
            "$ref": "#/definitions/ConfigurationDifferenceResolution"
          }
        }
      },
      "description": "List of Configuration Difference Resolutions"
    },
    "ServerListResponse": {
      "type": "object",
      "properties": {
        "list": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Server"
          }
        },
        "nextPageToken": {
          "type": "string"
        }
      }
    },
    "GeneralResult": {
      "type": "object",
      "properties": {
        "info": {
          "type": "string"
        },
        "warning": {
          "type": "string"
        }
      },
      "description": "General result object that can contain an informational and a warning message."
    },
    "ConfigurationProfile": {
      "type": "object",
      "properties": {
        "json": {
          "type": "string"
        },
        "id": {
          "type": "integer",
          "format": "int32",
          "example": 42,
          "description": "The auto-increment identifier of the configuration profile object, should be left null when creating a new object",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "example": "Announcement Server Configuration Profile",
          "description": "Human readable name of the profile"
        },
        "type": {
          "type": "string",
          "example": "AS",
          "description": "Specify the profile compatibility with the server role",
          "enum": [
            "AS",
            "Combo",
            "DR",
            "LF",
            "LFRC",
            "MR",
            "RC",
            "RS",
            "SS"
          ]
        },
        "def": {
          "type": "boolean",
          "example": true,
          "description": "Specify if the profile is the default one for this type of profiles"
        }
      },
      "description": "Configuration profile object"
    },
    "ConfigurationProfileListResponse": {
      "type": "object",
      "properties": {
        "list": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ConfigurationProfile"
          }
        },
        "nextPageToken": {
          "type": "string"
        }
      }
    },
    "StorageTarget": {
      "type": "object",
      "discriminator": "type",
      "properties": {
        "id": {
          "type": "integer",
          "format": "int32",
          "example": 42,
          "description": "The auto-increment identifier of the storage target object, should be left null when creating a new object",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "example": "Verba Media Repository",
          "description": "Display name of the storage target"
        },
        "type": {
          "type": "string",
          "example": "MR",
          "description": "Type of the storage target object",
          "enum": [
            "amazon_s3",
            "azure",
            "bloomberg",
            "bloomberg_voice",
            "centera",
            "emc_unity",
            "ews",
            "external_mr",
            "hitachi_cp",
            "iternity_icas",
            "mr",
            "nas",
            "s3",
            "sftp",
            "smartlock",
            "smtp",
            "snaplock",
            "tsm",
            "vantage",
            "verint_ingestion"
          ]
        }
      },
      "description": "Storage Target object\nImplemented types:\n - Amazon S3\n - Amazon S3 Compatible\n - Bloomberg Vault IM\n - Bloomberg Vault Voice\n - EMC Isilon SmartLock\n - EMC Unity\n - Exchange Web Server (EWS)\n - External Verba Media Repository\n - Hitachi Content Platform\n - IBM Tivoli Storage Manager\n - iTernitiy iCAS\n - Microsoft Azure Storage\n - NetApp SnapLock\n - Network Storage\n - SFTP\n - SMTP\n - Verba Media Repository Local Disk\n - Verint (WFO)"
    },
    "StorageTargetAmazonS3": {
      "allOf": [
        {
          "$ref": "#/definitions/StorageTarget"
        },
        {
          "type": "object",
          "properties": {
            "bucket": {
              "type": "string",
              "example": "us.east.verbabucket",
              "description": "The name of your Bucket in Amazon S3"
            },
            "region": {
              "type": "string",
              "example": "useast",
              "description": "Region-specific endpoints that Amazon S3 supports."
            },
            "objectLockEnabled": {
              "type": "boolean",
              "example": true,
              "description": "Identifies if the object lock feature will be used for retention and legal hold."
            },
            "objectLockMode": {
              "type": "string",
              "example": "compliance",
              "description": "Object Lock mode",
              "enum": [
                "compliance",
                "governance"
              ]
            },
            "accessKeyId": {
              "type": "string",
              "example": "KEY_ID",
              "description": "Access Key Id of your Amazon S3"
            },
            "secretAccessKey": {
              "type": "string",
              "example": "secret",
              "description": "Secret Access Key of your Amazon S3"
            }
          },
          "description": "Amazon S3 storage target specific object"
        }
      ]
    },
    "StorageTargetAmazonS3Compatible": {
      "allOf": [
        {
          "$ref": "#/definitions/StorageTarget"
        },
        {
          "type": "object",
          "properties": {
            "bucket": {
              "type": "string",
              "example": "us.east.verbabucket",
              "description": "The name of your Bucket in S3"
            },
            "restEndpoint": {
              "type": "string",
              "example": "restendpoint.example.local",
              "description": "Specify the S3 compatible API endpoint. It can be found in the S3 storage's documentation"
            },
            "objectLockEnabled": {
              "type": "boolean",
              "example": true,
              "description": "Identifies if the object lock feature will be used for retention and legal hold. This is supported only in the case of IBM COS storage."
            },
            "objectLockMode": {
              "type": "string",
              "example": "ibm",
              "description": "Object Lock and Legal Hold mode",
              "enum": [
                "ibm"
              ]
            },
            "authVersion": {
              "type": "string",
              "example": "v4_ibm",
              "description": "Request Authentication",
              "enum": [
                "v2",
                "v4",
                "v4_imb"
              ]
            },
            "accessKeyId": {
              "type": "string",
              "example": "KEY_ID",
              "description": "Access Key Id of the S3 storage"
            },
            "secretAccessKey": {
              "type": "string",
              "example": "secret",
              "description": "Secret Access Key of the S3 storage"
            },
            "region": {
              "type": "string",
              "example": "useast",
              "description": "The region of the bucket. Only required if V4 authentication is being used. In the case of on-prem storage, it can be anything."
            }
          },
          "description": "Amazon S3 Compatible storage target specific object"
        }
      ]
    },
    "StorageTargetBloomberVaultVoice": {
      "allOf": [
        {
          "$ref": "#/definitions/StorageTarget"
        },
        {
          "type": "object",
          "properties": {
            "sftpServer": {
              "type": "string",
              "example": "SFTPSERVER",
              "description": "IP address or hostname or FQDN of the SFTP server"
            },
            "sftpCustomId": {
              "type": "string",
              "example": "verba",
              "description": "The custom ID received from Bloomberg Vault. This helps Bloomberg distinguish ingested media records from different vendors/applications."
            },
            "port": {
              "type": "integer",
              "format": "int32",
              "example": 2222,
              "description": "SFTP Port"
            },
            "login": {
              "type": "string",
              "example": "john.doe",
              "description": "Login name of the SFTP user"
            },
            "password": {
              "type": "string",
              "example": "secret",
              "description": "Login password of the SFTP user"
            },
            "sftpPublicKey": {
              "type": "string",
              "example": "PUBLIC_KEY",
              "description": "SFTP public key for key based authentication"
            },
            "sftpPrivateKey": {
              "type": "string",
              "example": "secret",
              "description": "SFTP private key for key based authentication"
            },
            "sftpPrivateKeyPassword": {
              "type": "string",
              "example": "secret",
              "description": "Password for the SFTP private key"
            },
            "sftpVoicePath": {
              "type": "string",
              "example": "/Voice/Location/",
              "description": "SFTP Voice Path"
            },
            "sftpReconciliationPath": {
              "type": "string",
              "example": "/Reconciliation/Voice/Location/",
              "description": "SFTP Reconciliation Path\t"
            }
          },
          "description": "Bloomberg Vault Voice storage target specific metadata object"
        }
      ]
    },
    "StorageTargetBloombergVaultIm": {
      "allOf": [
        {
          "$ref": "#/definitions/StorageTarget"
        },
        {
          "type": "object",
          "properties": {
            "sourceEmail": {
              "type": "string",
              "example": "sender@example.local",
              "description": "Specify the Email Address that should be used to send the data to the Bloomberg Vault"
            },
            "targetEmail": {
              "type": "string",
              "example": "target@example.local",
              "description": "Specify the Email Address of the Bloomberg Vault service"
            },
            "smtpServer": {
              "type": "string",
              "example": "smtp.example.local",
              "description": "Address of the SMTP Server"
            },
            "tlsEncryption": {
              "type": "boolean",
              "example": false,
              "description": "Flag that identifies if the connection is TLS encrypted or not."
            },
            "port": {
              "type": "integer",
              "format": "int32",
              "example": 25,
              "description": "SMTP Port"
            },
            "login": {
              "type": "string",
              "example": "john.doe",
              "description": "Email Login Name of the Source Email Address"
            },
            "password": {
              "type": "string",
              "example": "secret",
              "description": "Email Password of the Source Email Address"
            }
          },
          "description": "Bloomberg Vault IM storage target specific object"
        }
      ]
    },
    "StorageTargetEmcCentera": {
      "allOf": [
        {
          "$ref": "#/definitions/StorageTarget"
        },
        {
          "type": "object",
          "properties": {
            "peaPath": {
              "type": "string",
              "example": "C:\\isv1.pea",
              "description": "Specify the path where the PEA configuration file is located. This PEA file always needs to be present at this path on each of the Verba servers (Media Repositories and Recording Servers)."
            },
            "primaryClusterAddressList": {
              "type": "string",
              "example": "PRIMARY_HOST",
              "description": "Specify the IP addresses of the Primary Centera cluster servers, separated with a comma (,)"
            },
            "secondaryClusterAddressList": {
              "type": "string",
              "example": "SECONDARY_HOST",
              "description": "Specify the IP addresses of the Secondary (Replica) Centera cluster servers, separated with a comma (,)"
            }
          },
          "description": "EMC Centera storage target specific object"
        }
      ]
    },
    "StorageTargetEmcIsilonSmartLock": {
      "allOf": [
        {
          "$ref": "#/definitions/StorageTarget"
        },
        {
          "type": "object",
          "properties": {
            "path": {
              "type": "string",
              "example": "\\\\storage_server\\media_storage",
              "description": "Specify the path where the storage is accessible in the Windows file system (UNC path)"
            },
            "apiUrl": {
              "type": "string",
              "example": "https://storage_server:8080//namespace/media_storage",
              "description": "Specify the EMC Isilon SmartLock specific share path"
            },
            "apiUser": {
              "type": "string",
              "example": "john.doe",
              "description": "User name of the API user configured for Verba access in EMC Isilon SmartLock"
            },
            "apiPassword": {
              "type": "string",
              "example": "secret",
              "description": "Password of the API user configured for Verba access in EMC Isilon SmartLock"
            },
            "login": {
              "type": "string",
              "example": "john.doe",
              "description": "Custom credential user login for the storage"
            },
            "password": {
              "type": "string",
              "example": "secret",
              "description": "Custom credential password for the storage"
            }
          },
          "description": "EMC Isilon SmartLock storage target specific object"
        }
      ]
    },
    "StorageTargetEmcUnity": {
      "allOf": [
        {
          "$ref": "#/definitions/StorageTarget"
        },
        {
          "type": "object",
          "properties": {
            "path": {
              "type": "string",
              "example": "\\\\storage_server\\media_storage",
              "description": "Specify the path where the storage is accessible in the Windows file system (UNC path)"
            },
            "login": {
              "type": "string",
              "example": "john.doe",
              "description": "Custom credential user login for the storage"
            },
            "password": {
              "type": "string",
              "example": "secret",
              "description": "Custom credential password for the storage"
            }
          },
          "description": "EMC Unity storage target specific object"
        }
      ]
    },
    "StorageTargetExchangeWebServer": {
      "allOf": [
        {
          "$ref": "#/definitions/StorageTarget"
        },
        {
          "type": "object",
          "properties": {
            "hostname": {
              "type": "string",
              "example": "EWSHOST",
              "description": "Name or address of the storage"
            },
            "tlsEncryption": {
              "type": "boolean",
              "example": false,
              "description": "Flag that identifies if the connection is TLS encrypted or not."
            },
            "port": {
              "type": "integer",
              "format": "int32",
              "example": 443,
              "description": "Port of the storage"
            },
            "login": {
              "type": "string",
              "example": "john.doe",
              "description": "Login name of the storage user"
            },
            "password": {
              "type": "string",
              "example": "secret",
              "description": "Login password of the storage user"
            }
          },
          "description": "Exchange Web Server (EWS) storage target specific object"
        }
      ]
    },
    "StorageTargetExternalVerbaMediaRepository": {
      "allOf": [
        {
          "$ref": "#/definitions/StorageTarget"
        },
        {
          "type": "object",
          "properties": {
            "hostname": {
              "type": "string",
              "example": "VERBAMR1",
              "description": "Name or address of the External Verba Media Repository"
            },
            "port": {
              "type": "integer",
              "format": "int32",
              "example": 20111,
              "description": "Port used to access the External Verba Media Repository (default: 20111)"
            }
          },
          "description": "External Verba Media Repository storage target specific object"
        }
      ]
    },
    "StorageTargetHitachiContentPlatform": {
      "allOf": [
        {
          "$ref": "#/definitions/StorageTarget"
        },
        {
          "type": "object",
          "properties": {
            "serviceUrl": {
              "type": "string",
              "example": "https://namespace.tenant.hostname/rest",
              "description": "The URL address, where the Verba System can upload and download the recordings."
            },
            "apiUser": {
              "type": "string",
              "example": "john.doe",
              "description": "API user for the Verba System"
            },
            "apiPassword": {
              "type": "string",
              "example": "secret",
              "description": "Password of the API user"
            }
          },
          "description": "Hitachi Content Platform storage target specific object"
        }
      ]
    },
    "StorageTargetIbmTivoliStorageManager": {
      "allOf": [
        {
          "$ref": "#/definitions/StorageTarget"
        },
        {
          "type": "object",
          "properties": {
            "fileSpace": {
              "type": "string",
              "example": "MediaFileSpace",
              "description": "Specify the filespace for the files. If filespace does not exists Verba tries to create it"
            },
            "managementClass": {
              "type": "string",
              "example": "STANDARD",
              "description": "Specify the Management Class to be applied to the files (determines retention time)"
            },
            "configurationFilePath": {
              "type": "string",
              "example": "C:\\Program Files\\Tivoli\\TSM\\config\\dsm_verba.opt",
              "description": "Path of TSM client configuration related to current target"
            },
            "retentionPeriod": {
              "type": "integer",
              "format": "int32",
              "example": 30,
              "description": "If Management Class forces data retention, then the number of days of the retention period"
            }
          },
          "description": "IBM Tivoli Storage Manager storage target specific object"
        }
      ]
    },
    "StorageTargetIternityIcas": {
      "allOf": [
        {
          "$ref": "#/definitions/StorageTarget"
        },
        {
          "type": "object",
          "properties": {
            "path": {
              "type": "string",
              "example": "\\\\storage_server\\media_storage",
              "description": "Specify the path where the storage is accessible in the Windows file system (UNC path)"
            },
            "login": {
              "type": "string",
              "example": "john.doe",
              "description": "Custom credential user login for the storage"
            },
            "password": {
              "type": "string",
              "example": "secret",
              "description": "Custom credential password for the storage"
            }
          },
          "description": "iTernitiy iCAS storage target specific object"
        }
      ]
    },
    "StorageTargetMicrosoftAzureStorage": {
      "allOf": [
        {
          "$ref": "#/definitions/StorageTarget"
        },
        {
          "type": "object",
          "properties": {
            "azureService": {
              "type": "string",
              "example": "blob",
              "description": "Specifies the Azure service type:\n - Azure Files\n - Azure Blob\n",
              "enum": [
                "file",
                "blob"
              ]
            },
            "path": {
              "type": "string",
              "example": "verba",
              "description": "Azure Files: The <share name> attribute form the access URL:  https://<storage account>.file.core.windows.net/<share name> \nAzure Blob: The container name that you have created under Storage Account / Blob Service menu on the Microsoft Azure Portal."
            },
            "accessKey": {
              "type": "string",
              "example": "connectionString",
              "description": "Specifies the authentication mode:\n - Account\n - Connection String",
              "enum": [
                "fields",
                "connectionString"
              ]
            },
            "login": {
              "type": "string",
              "example": "verbatest",
              "description": "(In case 'Account' accessKey) The <storage account> attribute from the access URL: https://<storage account>.file.core.windows.net/<share name>/"
            },
            "password": {
              "type": "string",
              "example": "secret",
              "description": "(In case 'Account' accessKey) Specify the access key"
            },
            "connectionString": {
              "type": "string",
              "example": "secret",
              "description": "(In case 'Connection String' accessKey) Specify the connection string that you can find under Storage Account / Access keys menu on the Microsoft Azure Portal"
            }
          },
          "description": "Microsoft Azure storage target specific object"
        }
      ]
    },
    "StorageTargetNetAppSnapLock": {
      "allOf": [
        {
          "$ref": "#/definitions/StorageTarget"
        },
        {
          "type": "object",
          "properties": {
            "path": {
              "type": "string",
              "example": "\\\\storage_server\\media_storage",
              "description": "Specify the path where the storage is accessible in the Windows file system (UNC path)"
            },
            "volumePath": {
              "type": "string",
              "example": "/vol/test_volume",
              "description": "Specify the NetApp specific volume path"
            },
            "hostname": {
              "type": "string",
              "example": "NETAPP",
              "description": "The connection string used by the application to connect to the NetApp SnapLock Data ONTAP API"
            },
            "port": {
              "type": "integer",
              "format": "int32",
              "example": 443,
              "description": "The access port of the NetApp SnapLock Data ONTAP API (443 by default)"
            },
            "apiUser": {
              "type": "string",
              "example": "john.doe",
              "description": "User name of the API user configured for Verba access in NetApp SnapLock"
            },
            "apiPassword": {
              "type": "string",
              "example": "secret",
              "description": "Password of the API user configured for Verba access in NetApp SnapLock"
            },
            "login": {
              "type": "string",
              "example": "john.doe",
              "description": "Custom credential user login for the storage"
            },
            "password": {
              "type": "string",
              "example": "secret",
              "description": "Custom credential password for the storage"
            }
          },
          "description": "NetApp SnapLock storage target specific object"
        }
      ]
    },
    "StorageTargetNetworkStorage": {
      "allOf": [
        {
          "$ref": "#/definitions/StorageTarget"
        },
        {
          "type": "object",
          "properties": {
            "path": {
              "type": "string",
              "example": "\\\\storage_server\\media_storage",
              "description": "Specify the path where the storage is accessible in the Windows file system (UNC path)"
            },
            "login": {
              "type": "string",
              "example": "john.doe",
              "description": "Custom credential user login for the storage"
            },
            "password": {
              "type": "string",
              "example": "secret",
              "description": "Custom credential password for the storage"
            }
          },
          "description": "Network Storage storage target specific object"
        }
      ]
    },
    "StorageTargetSFTP": {
      "allOf": [
        {
          "$ref": "#/definitions/StorageTarget"
        },
        {
          "type": "object",
          "properties": {
            "path": {
              "type": "string",
              "example": "SFTPSERVER/path",
              "description": "This is the path where you want to store the media files"
            },
            "hostname": {
              "type": "string",
              "example": "SFTPSERVER",
              "description": "Name or address of the SFTP server."
            },
            "port": {
              "type": "integer",
              "format": "int32",
              "example": 2222,
              "description": "Access port of the SFTP server."
            },
            "login": {
              "type": "string",
              "example": "john.doe",
              "description": "User name of the SFTP user configured for Verba access in SFTP server."
            },
            "password": {
              "type": "string",
              "example": "secret",
              "description": "Password of the SFTP user configured for Verba access in SFTP server."
            },
            "sftpPublicKey": {
              "type": "string",
              "example": "PUBLIC_KEY",
              "description": "SFTP public key for key based authentication"
            },
            "sftpPrivateKey": {
              "type": "string",
              "example": "secret",
              "description": "SFTP private key for key based authentication"
            },
            "sftpPrivateKeyPassword": {
              "type": "string",
              "example": "secret",
              "description": "Password for the SFTP private key"
            }
          },
          "description": "SFTP storage target specific object"
        }
      ]
    },
    "StorageTargetSMTP": {
      "allOf": [
        {
          "$ref": "#/definitions/StorageTarget"
        },
        {
          "type": "object",
          "properties": {
            "sourceEmail": {
              "type": "string",
              "example": "sender@example.local",
              "description": "This is the source e-mail address for the SMTP protocol"
            },
            "targetEmail": {
              "type": "string",
              "example": "target@example.local",
              "description": "This is the target e-mail address for the SMTP protocol"
            },
            "ccEmail": {
              "type": "string",
              "example": "target@example.local",
              "description": "This is the CC e-mail address for the SMTP protocol"
            },
            "smtpServer": {
              "type": "string",
              "example": "smtp.example.local",
              "description": "Address of the SMTP Server"
            },
            "tlsEncryption": {
              "type": "boolean",
              "example": false,
              "description": "Flag that identifies if the connection is TLS encrypted or not."
            },
            "port": {
              "type": "integer",
              "format": "int32",
              "example": 25,
              "description": "SMTP Port"
            },
            "login": {
              "type": "string",
              "example": "john.doe",
              "description": "Enter the login name of your SMTP user"
            },
            "password": {
              "type": "string",
              "example": "secret",
              "description": "Enter the password for your SMTP user"
            }
          },
          "description": "SMTP storage target specific object"
        }
      ]
    },
    "StorageTargetVerbaMediaRepositoryLocalDisk": {
      "allOf": [
        {
          "$ref": "#/definitions/StorageTarget"
        },
        {
          "type": "object",
          "properties": {
            "path": {
              "type": "string",
              "example": "C:\\media_storage",
              "description": "Specify the path where the storage is accessible in the Windows file system (UNC path)"
            },
            "hostname": {
              "type": "string",
              "example": "VERBAMR1",
              "description": "Name or address of the Verba Media Repository"
            },
            "port": {
              "type": "integer",
              "format": "int32",
              "example": 20111,
              "description": "Port used to access the Verba Media Repository (default: 20111)"
            }
          },
          "description": "Verba Media Repository Local Disk storage target specific object"
        }
      ]
    },
    "StorageTargetVerint": {
      "allOf": [
        {
          "$ref": "#/definitions/StorageTarget"
        },
        {
          "type": "object",
          "properties": {
            "hostname": {
              "type": "string",
              "example": "http(s)://verintappserver.contoso.com",
              "description": "Address of the Verint application server"
            },
            "apiKeyId": {
              "type": "string",
              "example": "KEY_ID",
              "description": "API key id for authentication."
            },
            "apiSecretKey": {
              "type": "string",
              "example": "secret",
              "description": "API key value for authentication."
            }
          },
          "description": "Verint (WFO) storage target specific object"
        }
      ]
    },
    "StorageTargetListResponse": {
      "type": "object",
      "properties": {
        "list": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/StorageTarget"
          }
        },
        "nextPageToken": {
          "type": "string"
        }
      }
    },
    "MyAccount": {
      "type": "object",
      "properties": {
        "userId": {
          "type": "integer",
          "format": "int32",
          "example": 12,
          "description": "The internal identifier of the user."
        },
        "login": {
          "type": "string",
          "example": "john.doe",
          "description": "The Login ID."
        },
        "name": {
          "type": "string",
          "example": "John Doe",
          "description": "Display name."
        },
        "language": {
          "type": "string",
          "example": "en",
          "description": "The User Interface language code."
        },
        "timeZone": {
          "type": "string",
          "example": "US/Eastern",
          "description": "The effective time zone setting."
        },
        "permissions": {
          "type": "object",
          "example": "US/Eastern",
          "description": "The permissions of the user.",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "description": "Information about the logged in user account."
    },
    "User": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "format": "int32",
          "example": 42,
          "description": "The auto-increment identifier of the user object, should be left null when creating a new object",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "example": "John Doe",
          "description": "Display name of the user"
        },
        "login": {
          "type": "string",
          "example": "john.doe@example.local",
          "description": "Login name of the user, which has to be used for the authentication"
        },
        "email": {
          "type": "string",
          "example": "john.doe@example.local",
          "description": "Email address of the user"
        },
        "password": {
          "type": "string",
          "example": "secret",
          "description": "Password of the user, which has to be used for the authentication"
        }
      },
      "description": "User object"
    },
    "UserListResponse": {
      "type": "object",
      "properties": {
        "list": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/User"
          }
        },
        "nextPageToken": {
          "type": "string"
        }
      }
    },
    "TimeZoneInfo": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "offset": {
          "type": "integer",
          "format": "int32"
        },
        "gmtInfo": {
          "type": "string"
        }
      }
    },
    "TimeZones": {
      "type": "object",
      "properties": {
        "def": {
          "type": "string"
        },
        "effective": {
          "type": "string"
        },
        "timeZones": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TimeZoneInfo"
          }
        }
      }
    }
  }
}