---
swagger: "2.0"
info:
version: "1.0"
title: "Verint Financial Compliance REST API"
basePath: "/restapi"
tags:
- name: "Authentication"
- name: "Conversation"
- name: "Current user"
- name: "Legal Hold"
- name: "Time Zones"
paths:
/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"
responses- name: "targetEid"
in: "200formData":
description: "SuccessfulFor operation"Reference Environment users the eid will be 0000, so they\
schema: \ can use this $ref: "#/definitions/TokenResponse"
"401":parameter to define the Environment ID they want to work\
\ description: in"Invalid
credentials or refresh token supplied" "400"required: false
descriptiontype: "string"Invalid
request, data validation error" /v1/legalHoldAll x-example: "0001"
get: - name: "targetTimeZone"
tags: -in: "formData"Legal
Hold" summarydescription: "Returns whether the system is configured to put all conversationsSet this if want to work in a different time zone than the user's\
\ under legal\ holddefault." The valid identifiers can be queried description:by "A request to this endpoint will retrieve whether the system is\
the restapi/v1/timeZone\
\ API call."
\ configured to put allrequired: conversationsfalse
under legal hold. When this setting\ type: "string"
\ is enabled, all historical and future conversations are automatically put\x-example: "US/Eastern"
responses:
\ under legal hold.\n\n Permissions required: \n * Manual Labeling - Use" "200":
operationIddescription: "isLegalHoldAllSuccessful operation"
produces: schema:
- "application/json" parameters: [] $ref: "#/definitions/TokenResponse"
responses:
"200401":
description: "SuccessfulInvalid operation"credentials or refresh token supplied"
schema: "400":
$refdescription: "#/definitions/BooleanHolder"
Invalid request, data validation error"
/v1/conversations:
"403": get:
descriptiontags:
"Insufficient privileges" put:
tags:
- "Legal HoldConversation"
summary: "EnablesRetrieve orlist disables the system wide legal hold configuration.of conversations"
description: "A request to this endpoint will enableretrieve the orlist disableof the system wideconversations.\
\ legalBy holddefault configuration.the Thelist systemonly cancontains putthe allfinished conversations, underhowever legalwith\
\ hold.query Whenfilter thisparameter settingthe isongoing enabled,conversations allcan historicalbe andfetched future conversationsas well.\n\
\ are automatically put under legal hold. The system will not delete any conversations\
n Permissions required:\n * Conversation Access Scope - Standard or Access\
\ All"
operationId: \"list"
if this setting is enabled. This configurationproduces:
is only available through\ - "application/json"
\ this API.parameters:
The method returns the new status. \n\n Permissions required:\
- name: "limit"
\ \n *in: "query"
Manual Labeling - Use and Create\n * Enabledescription: Legal Hold"The maximum number of conversations to be operationId: "updatereturned"
consumes: required: false
- "application/json" type: "integer"
produces: -format: "application/jsonint32"
parametersx-example: 10
- inname: "bodysortBy"
namein: "bodyquery"
requireddescription: false
schema:"The field the data should be sorted by, the only supported value\
\ $ref:is "#/definitions/BooleanHolder"\"startTime\""
responsesrequired: false
type: "200string":
descriptionx-example: "Successful operationstartTime"
- schemaname: "sortOrder"
$refin: "#/definitions/BooleanHolderquery"
description: "403asc|desc":
required: false
description: "Insufficient privileges" /v1/legalHolds: type: "string"
get: tags:x-example: "asc"
- name: "Legal Holdfilters"
summary: "Retrieve list of legal holds"in: "query"
description: "The "A request to this endpoint will retrieve the list of the legal\
filters"
required: false
type: "string"
\ holds ordered by the label.\n\n Permissions required:\n * Manual Labeling\x-example: "{\"filtersList\": [{\"field\": \"status\", \"operator\": \"EQUAL\"\
, \"values\ - Use"": [\"finished\"]}]}"
- operationIdname: "listnextPageToken"
produces: in: "query"
- "application/json" description: "The next parameterspage token: to query the next page, - name: "limit"use the nextPageToken\
\ received in: "query"
the previous response. Do not specify sort or filters when\
description: "The maximum number of legal holds\ tousing bethe returnednextPageToken."
required: false
type: "integerstring"
responses:
format: "int32" "200":
x-example: 10 - namedescription: "sortBySuccessful operation"
inschema:
"query" description$ref: "The field the data should be sorted by, supported values are\#/definitions/ConversationListResponse"
"400":
\ \"label\" and \"id\""description: "Invalid request, data validation error"
required"403":
false typedescription: "stringInsufficient privileges"
/v1/conversations/{id}:
get:
x-example: "label"tags:
- name: "sortOrderConversation"
summary: "Retrieve conversation by in: "query"
the GUID type identifier"
description: "asc|desc"A request to this endpoint will retrieve the information required:about\
false \ type: "string"
x-example: "asc"the conversation specified by the id parameter.\n\n Permissions required:\n\
\ - name: "filters"
* Conversation Access Scope - Standard or Access All"
inoperationId: "querygetById"
produces:
description: "The filters" - "application/json"
required: false parameters:
- typename: "stringid"
x-examplein: "{\"filtersList\": [{\"field\": \"label\", \"operator\": \"IN\"\
path"
description: "The GUID identifier of the conversation object"
, \"values\": [\"Case number 3\", \"John Doe Incident\"]}]}" required: true
- nametype: "nextPageTokenstring"
inx-example: "query3e05f9d6-f687-11eb-8113-00155d001c3b"
descriptionresponses:
"The next page token: to query the next page, use the nextPageToken\ "200":
description: "Successful operation"
\ received in the previous response. Do not specify sort orschema:
filters when\ \ using the nextPageToken.$ref: "#/definitions/Conversation"
required"404":
false typedescription: "string"
responses:Not found"
"200400":
description: "SuccessfulInvalid operation"request, data validation error"
schema"403":
$refdescription: "#/definitions/LegalHoldListResponseInsufficient privileges"
/v1/conversationOptions/getSortableFields:
"400": get:
tags:
description: "Invalid request, data validation error"- "Conversation"
summary: "Retrieve the list "403":of fields available for sorting"
description: "InsufficientA privileges"request to this endpoint will post:retrieve the list of fields available\
tags: -\ "Legalfor Hold"sorting for the Conversation endpoint.\n\n Permissions summaryrequired:\n "Create*\
new legal hold" \ description:Conversation "AAccess requestScope to- thisStandard endpointor willAccess createAll"
a new legal hold label\ operationId: "getSortableFields"
\ onproduces:
conversation records specified by the request parameters. It might take\- "application/json"
parameters: []
\ up to several minutesresponses:
in the case of large number of conversation records\ "200":
\ in the database. The start and end time parameters defines if the legal\
description: "Successful operation"
examples:
\ hold is applied on historical and/or future conversations as well.\n\n Permissions\application/json:
- "start_time"
\ required:\n * Manual Labeling - Useschema:
and Create\n * Enable Legal Hold" operationIdtype: "createstring"
/v1/conversationOptions/getAllowedFilters:
consumesget:
tags:
- "application/jsonConversation"
producessummary: "Retrieve the list of available - "application/jsonfilter operators"
parametersdescription: "A request to this endpoint will retrieve the -list in: "body"of available\
name: "body"
required: false\ filter operators used by the Conversation endpoint for listing.\n\n Permissions\
\ schemarequired:\n * Conversation Access Scope - Standard or Access All"
$refoperationId: "#/definitions/LegalHoldgetAllowedFilters"
responsesproduces:
- "201application/json":
parameters: []
description: "Created" responses:
schema"200":
description: $ref: "#/definitions/LegalHold""Successful operation"
"409"schema:
descriptiontype: "Already existsarray"
"400": items:
description: "Invalid request, data validation error" $ref: "403#/definitions/FilterField":
description: "Insufficient privileges"/v1/conversationControl/{id}/startRecording:
putpost:
tags:
- "Legal HoldConversation"
summary: "UpdateStart recording legalthe holdconversation"
description: "A request to this endpoint will start updatethe anrecording existingof legalthe holdongoing\
\ labelcontrolled onconversation. conversationsThis recordsmethod specifiedcan byonly thebe requestused parameters. It mightfor Conversations\
\ takewhere upthe tovalue several minutesof in the casemanual offield large number of conversation recordsis 9.\n\n Permissions required:\n *\
\ Access into the database.\n\n The involved users are also updated, so if fewer users\conversation"
operationId: "startRecording"
produces:
\ are sent, then users will be removed from legal hold, and if new users are\
- "application/json"
parameters:
- name: "id"
\ sent, then they will be added.\n\n Permissions required:\n * Manual Labeling\in: "path"
description: "The identifier of the \conversation -object"
Use and Create\n * Enable Legal Hold\n * Remove Legal Hold From Conversations"required: true
operationIdtype: "update_1string"
consumes: - "application/jsonx-example: "3e05f9d6-f687-11eb-8113-00155d001c3b"
producesresponses:
- "application/json200":
parameters: description: "Successful operation"
- in: "body" nameexamples:
"body" required: false application/json: null
schema: schema:
$ref: "#/definitions/LegalHold" responsestype: "string"
"200404":
description: "SuccessfulNot operationfound"
schema"400":
description: "Invalid $ref: "#/definitions/LegalHold"
"404":
description: "Not found"
"400":
description: "Invalid request, request, data validation error"
"403":
description: "Insufficient privileges"
/v1/legalHoldsconversationControl/{id}/muteRecording:
getpost:
tags:
- "Legal HoldConversation"
summary: "Retrieve legal hold by the numeric auto-increment identifierMute/Unmute recording"
description: "A request to this endpoint will retrievemute or unmute the informationrecording aboutof\
\ the legalconversation. holdThis specifiedmethod bycan theonly id parameter.\n\n be used for Conversations where the\
\ value of the manual field is null, 0 or 1.\n\n Permissions required:\n *\
\ Access to *the Manualconversation\n Labeling* -Mute UseRecording"
operationId: "getByIdmuteRecording"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "The identifier of the legal holdconversation object"
required: true
type: "integerstring"
format: "int32"
x-example: 16"3e05f9d6-f687-11eb-8113-00155d001c3b"
- namein: "countConversationsbody"
inname: "querybody"
description: "SetThe requested tonew truestate. ifLeave the callerbody application wantsempty to receivequery the numbercurrent\
\ ofthe conversations having this Legal Holdmute status."
required: false
typeschema:
$ref: "boolean#/definitions/MuteStatus"
responses:
"200":
description: "Successful operation"
schema:
$ref: "#/definitions/LegalHoldMuteStatus"
"404":
description: "Not found"
"400":
description: "Invalid request, data validation error"
"403":
description: "Insufficient privileges"
/v1/conversationControl/{id}/stopRecording:
deletepost:
tags:
- "Legal HoldConversation"
summary: "DeleteStop recording legalthe holdconversation"
description: "A request to this endpoint will stop the permanentlyrecording deleteof the legal holdongoing\
\ specified by the id parametercontrolled conversation. WhenThe therecording systemcan receivesbe therestarted APIlater. callThis tomethod\
\ deletecan aonly legalbe hold,used thefor systemConversations willwhere removethe thevalue entireof labelthe frommanual thefield conversations.is\
\ Ita might take up to several minutes in the case of large number of conversation\
negative integer.\n\n Permissions required:\n * Access to the conversation"
operationId: "stopRecording"
\produces:
records in the database. Note: when the legal hold status of a label is\- "application/json"
parameters:
- name: \"id"
removed through the user interface, the system automatically enforces a\in: "path"
\description: policy"The whichidentifier requiresof the conversation object"
approval of the removal request. This policy is\required: true
\ not enforced when the removal is requested through this API endpoint.\n\n\type: "string"
x-example: "3e05f9d6-f687-11eb-8113-00155d001c3b"
responses:
\ Permissions required:\n * Manual Labeling -"200":
Use and Create\n * Enable Legal\ description: "Successful operation"
\ Hold\n * Remove Legal Hold From Conversations" examples:
operationId: "delete" producesapplication/json: null
- "application/json" schema:
parameters: - nametype: "idstring"
in"404":
"path" description: "TheNot identifierfound"
of the legal hold object" "400":
required: true description: "Invalid request, data type:validation "integererror"
format"403":
"int32" x-exampledescription: 123"Insufficient privileges"
/v1/conversationControl/{id}/keepOndemand:
responses: post:
"200"tags:
- "Conversation"
description: "Successful operation" summary: "Keeps the on-demand conversation"
examples: description: "A request to this endpoint will mark the on-demand conversation\
application/json: null \ for recording. This schema:method can only be used for Conversations where the\
type: "string" \ value of the ondemand field "404":is true and the value of the keep field is false.\
description: "Not found" \ Calling "400":
this method for other records has no effect.\n\n Permissions required:\n\
description:\ "Invalid* request,Access datato validationthe errorconversation"
operationId: "403keepOndemand":
produces:
description:- "Insufficient privileges"
/v1/legalHoldOptions/getAllowedFilters:application/json"
getparameters:
tags:- name: "id"
- "Legal Hold" in: "path"
summarydescription: "RetrieveThe the listidentifier of availablethe filterconversation operatorsobject"
description: "A requestrequired: totrue
this endpoint will retrieve the list of available\ type: "string"
\ filter operators used by the Legal Hold API endpoints for listing.\n\n Permissions\ x-example: "3e05f9d6-f687-11eb-8113-00155d001c3b"
responses:
"200":
description: "Successful operation"
examples:
application/json: null
schema:
type: "string"
"404":
description: "Not found"
"400":
description: "Invalid request, data validation error"
"403":
description: "Insufficient privileges"
/v1/me:
get:
tags:
- "Current user"
summary: "Retrieve the user profile of the current user"
description: "A request to this endpoint will retrieve the user profile of the\
\ current user.\n\n Permissions required:\n * TODO"
operationId: "get"
produces:
- "application/json"
parameters: []
responses:
"200":
description: "Successful operation"
schema:
$ref: "#/definitions/UserData"
"404":
description: "Not found"
"400":
description: "Invalid request, data validation error"
"403":
description: "Insufficient privileges"
/v1/myPermissions:
get:
tags:
- "Current user"
summary: "Retrieve the permission set of the current user"
description: "A request to this endpoint will retrieve the permission set of\
\ the current user.\n\n Permissions required:\n * TODO"
operationId: "list_1"
produces:
- "application/json"
parameters: []
responses:
"200":
description: "Successful operation"
schema:
type: "object"
additionalProperties:
type: "object"
"404":
description: "Not found"
"400":
description: "Invalid request, data validation error"
"403":
description: "Insufficient privileges"
/v1/legalHoldAll:
get:
tags:
- "Legal Hold"
summary: "Returns whether the system is configured to put all conversations\
\ under legal hold."
description: "A request to this endpoint will retrieve whether the system is\
\ configured to put all conversations under legal hold. When this setting\
\ is enabled, all historical and future conversations are automatically put\
\ under legal hold.\n\n Permissions required: \n * Manual Labeling - Use"
operationId: "isLegalHoldAll"
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 the system wide legal hold configuration."
description: "A request to this endpoint will enable or disable the system wide\
\ legal hold configuration. The system can put all conversations under legal\
\ hold. When this setting is enabled, all historical and future conversations\
\ are automatically put under legal hold. The system will not delete any conversations\
\ if this setting is enabled. This configuration is only available through\
\ this API. The method returns the new status. \n\n Permissions required:\
\ \n * Manual Labeling - Use and Create\n * Enable Legal Hold"
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_2"
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"
"409":
description: "Already exists"
"400":
description: "Invalid request, data validation error"
"403":
description: "Insufficient privileges"
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"
"404":
description: "Not found"
"400":
description: "Invalid request, data validation error"
"403":
description: "Insufficient privileges"
/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_1"
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"
"404":
description: "Not found"
"400":
description: "Invalid request, data validation error"
"403":
description: "Insufficient privileges"
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"
"404":
description: "Not found"
"400":
description: "Invalid request, data validation error"
"403":
description: "Insufficient privileges"
/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_1"
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_1"
produces:
- "application/json"
parameters: []
responses:
"200":
description: "Successful operation"
schema:
type: "array"
items:
$ref: "#/definitions/FilterField"
/v1/timeZones:
get:
tags:
- "Time Zones"
operationId: "list_3"
produces:
- "application/json"
parameters: []
responses:
"200":
description: "successful operation"
headers: {}
schema:
$ref: "#/definitions/TimeZones"
definitions:
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."
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"
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 *\
\ 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:
nextPageToken:
type: "string"
list:
type: "array"
items:
$ref: "#/definitions/Conversation"
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"
MuteStatus:
type: "object"
properties:
callerMuted:
type: "boolean"
calledMuted:
type: "boolean"
description: "Mute status"
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\
\ required:\n * Manual Labeling - Use take the union of the matching conversations."
operationId items:
$ref: "getAllowedFilters#/definitions/UserIdentificationData"
producesmetadata:
- type: "application/json"
array"
example: "[{\"name\":\"Requestor Name\",\"value\":\"Jerry Jones\"},{\"name\"\
parameters: [] responses:
"200":
\"Approver Name\",\"value\":\"Sharon Harrington\"}]"
description: "SuccessfulList operation"of additional metadata that should be attached to the label\
schema: \ object in the type: "array"
Verba system."
items:
$ref: "#/definitions/FilterFieldNameValuePair"
/v1/legalHoldOptions/getSortableFields:
get:
tags:
- "Legal Hold description: "Legal hold object"
summary: "Retrieve the list of fields available for sorting"
NameValuePair:
descriptiontype: "Aobject"
request to this endpoint willproperties:
retrieve the list of fields available\ name:
\ for sorting for the Legal Hold API.\n\n Permissions required:\n * Manual\
type: "string"
example: "Requestor Name"
\ Labeling -description: Use"The name of the metadata."
operationId: "getSortableFields" value:
produces: type: "string"
- "application/json" parametersexample: []"Jerry Jones"
responses: description: "The value of the "200metadata.":
description: "Object represents custom metadata with description:a "Successfulname operation"and a value"
UserIdentificationData:
examplestype: "object"
properties:
application/jsonuserId:
type: "integer"
- "label" format: "int32"
- "id" example: 47
schemadescription: "The Verba User ID. This is an auto-increment field in the Verba\
type: "string" definitions: TokenResponse: type: "object\ system."
properties: access_tokenloginId:
type: "string"
example: "fL9QPL2U667bBpitMFhtNIn2kLHC15WBjerry.jones"
description: "The requestedLogin accessID token.of Thethe applicationuser canas usestored thisin token\the \ to authenticate to the APIVerba system."
refresh_tokenemail:
type: "string"
example: "mE07g3HZkoSaqkysDZLC6B3JA0stEiUz0maA9fu1GhblAQc3jerry.jones@company.com"
description: "The refreshemail tokenaddress forof the requesteduser."
access token. The application\ description: "This object provides Verba user identification data to various API\
can use this token to request\ anotherendpoints. accessA tokenVerba afteruser thecan currentbe access\identified by either their Verba User ID, or\
\ token expires." \ their Login ID or their token_type:
email address."
Locale:
type: "stringobject"
properties:
examplelanguage: "Bearer"
descriptiontype: "Indicatesstring"
the token type value. Thecountry:
only type that the system\ type: "string"
\ supportsdisplayCountry:
is Bearer." expires_intype: "string"
type: "integer"displayLanguage:
formattype: "int32string"
exampledisplayName: 3600
descriptiontype: "string"The
length of time, in seconds, that thedisplayScript:
access token is valid." descriptiontype: "string"After
a successful authentication, thedisplayVariant:
API responds with the access\ type: "string"
\ and refresh tokens and additionalextensionKeys:
parameters." BooleanHolder: type: "objectarray"
properties: uniqueItems: true
value: items:
type: "boolean" ConversationParticipant: type: "objectstring"
propertiesiso3Country:
type: "string"
type: "string"iso3Language:
descriptiontype: "string"Defines
the tpye of the recorded extensionscript:
entry. The following\ type: "string"
\ valid values applyunicodeLocaleAttributes:\n
* EXTENSION: a recorded phone number, extension\ type: "array"
\ numberuniqueItems: ortrue
address (e.g. SIP address). The system will search initems:
the From/To\ type: "string"
\ metadata fields based on this typeunicodeLocaleKeys:
of participant entry.\n * USER_ID:\ type: "array"
\ a recorded useruniqueItems: IDtrue
valid on the recorded platform (e.g. trader ID, agent\items:
\ ID). The system will search in the User ID metadata field based on this\
type: "string"
variant:
type: "string"
UserData:
\ type: "object"
of participant entry." properties:
enumlogin:
-type: "EXTENSIONstring"
adSyncMatchId:
- type: "USER_IDstring"
identifierfullName:
type: "string"
examplelastName:
"+123456789" descriptiontype: "Thestring"
identifier of the participant. If type=EXTENSION, then a\validFrom:
type: "string"
\ phone number, extension number or address, if type=USER_ID, then a trader\
format: "date-time"
validTo:
\ ID or an agent ID."type: "string"
descriptionformat: "Thisdate-time"
object provides the participant information for auser2:
recorded\ \ conversation which can be used to filter various API endpoints."
LegalHold:type: "string"
group2:
type: "objectstring"
properties: idemail:
type: "integerstring"
format: "int32"crmUserId:
exampletype: 42"string"
agentId:
description: "The auto-increment identifier of the legal hold object, should\type: "string"
samplingRate:
\ be left null when creating a new object"type: "number"
labelformat: "double"
type: "string"recorderLinePIN:
exampletype: "Case 3:00CV0001-ABC-XYZstring"
userID:
description: "The identifier of the legal holdtype: object"string"
holdlanguageID:
type: "booleanstring"
examplelanguageString: true
descriptiontype: "string"Indicates
if this Label is under LegallanguageLocale:
Hold. If the hold property\ $ref: "#/definitions/Locale"
\ isprimaryExtension:
null then it is considered as a Legal Hold Label.type: "string"
startTimelastPasswordChange:
type: "string"
format: "date-time"
apiAccessOnly:
example type: "2021-01-31T23:00:00boolean"
lastLogin:
description: "The start time of the interval within the conversations should\type: "string"
format: "date-time"
\ be markedcustomDateFormatMine:
as legal hold. Null value means that the legal hold will be\type: "string"
customTimeFormatMine:
\ applied to all historical conversations.type: "string"
endTimecustomDateFormatUse:
type: "string"
formatcustomTimeFormatUse:
"date-time" exampletype: "2021-06-30T21:59:59"string"
externalId:
description: "The end time of the interval within the conversations should\
type: "string"
annPromptInbound:
type: \"boolean"
be marked as legal hold. Null valueannPromptOutbound:
or a future time means that the legal\ type: "boolean"
annPromptConference:
\ hold will be applied to future conversations too.type: "boolean"
numberOfConversationsannFileInbound:
type: "integerstring"
annFileOutbound:
format type: "int64string"
exampleannFileConference: 152388
descriptiontype: "string"The
number of conversations have been assigned toannFileMoh:
this Legal\ type: "string"
\ Hold. Will be returnedannMessageConference:
only if the countConversations parameter is set\ type: "string"
annPromptInboundCisco:
\ to true for the get Legal Hold API call.type: "boolean"
participantsannFileInboundCisco:
type: "arraystring"
annPromptOutboundCisco:
description: "List of conversation participant identifiers (extension numbers,\type: "boolean"
annFileOutboundCisco:
\ agent IDs, trader IDs etc) whose conversations should be marked as legal\
type: "string"
annPromptInternalTeams:
type: \"boolean"
hold. If both participants and users areannPromptInboundTeams:
listed, then the system will\ type: "boolean"
\ takeannPromptOutboundTeams:
the union of the matching conversations." type: "boolean"
items: annPromptConferenceTeams:
$reftype: "#/definitions/ConversationParticipantboolean"
usersretentionDays:
type: "arrayinteger"
descriptionformat: "Listint32"
of VFC users whose conversations should beretentionAutoDelete:
marked as legal\ type: "boolean"
\ hold. If both participants andworkflowId:
users are listed, then the system will\ type: "integer"
\ take the union of the matching conversations."
format: "int32"
itemslocation:
$reftype: "#/definitions/UserIdentificationDatastring"
metadatacreationDate:
type: "arraystring"
exampleformat: "[{\"name\":\"Requestor Name\",\"value\":\"Jerry Jones\"},{\"name\"\
date-time"
createdBy:
:\"Approver Name\",\"value\":\"Sharon Harrington\"}] type: "string"
descriptionlastModificationDate:
"List of additional metadata that should be attached to the label\type: "string"
\ object in the Verba system."
format: "date-time"
items: lastModifiedBy:
$reftype: "#/definitions/NameValuePairstring"
description: "Legal holddefaultTimeZone:
object" NameValuePair: type: "objectstring"
properties: nameneedChangePwdAtNextLogin:
type: "stringboolean"
examplesendRecordingNotificationEmails:
"Requestor Name" descriptiontype: "The name of the metadata.boolean"
valueuserType:
type: "string"
nonModifiable:
example type: "Jerry Jonesboolean"
descriptioneid:
"The value of the metadata." descriptiontype: "string"Object represents
custom metadata with a name and aenabled:
value" UserIdentificationData: type: "objectboolean"
propertiesrestrictedBecause4Eyes:
userId type: "boolean"
typedatasource:
"integer" formattype: "int32string"
examplesynchronizedByAdsync:
47 descriptiontype: "Theboolean"
Verba User ID. This is an auto-increment field in the Verba\ adSyncId:
\ system.type: "string"
loginIdadSyncDescription:
type: "string"
adSyncUserMatchAttribute:
example type: "jerry.jonesstring"
description: "The Login ID of the user as stored in the Verba system.adFullDN:
type: "string"
emailvisWindow:
type: "stringinteger"
exampleformat: "jerry.jones@company.comint32"
description: "The email address of the user."spnegoEnabled:
descriptiontype: "boolean"This
object provides Verba user identification data to various API\ passwordVerbaEnabled:
\ endpoints. A Verba user can be identified by either their Verba User ID, or\type: "boolean"
passwordADEnabled:
type: "boolean"
\ their Login ID or their emailhideCDRFields:
address." LegalHoldListResponse: type: "objectstring"
properties locked:
nextPageTokentype: "boolean"
passwordExpires:
type: "string" listtype: "boolean"
BooleanHolder:
type: "arrayobject"
properties:
items: value:
$ref type: "#/definitions/LegalHoldboolean"
FilterFieldLegalHoldListResponse:
type: "object"
properties:
paramNamenextPageToken:
type: "string"
operatorslist:
type: "array"
items:
$ref: "#/definitions/LegalHold"
TimeZoneInfo:
type: "stringobject"
properties:
enum:
code:
type: "string"
name:
- "EQUAL" type: "string"
- "NOT_EQUAL" offset:
-type: "GREATER_THANinteger"
format: "int32"
- "GREATER_THAN_OR_EQUAL" gmtInfo:
- "LESS_THAN" type: "string"
TimeZones:
-type: "LESS_THAN_OR_EQUALobject"
properties:
- "CONTAINS"def:
type: - "ENDS_WITH"string"
effective:
- "STARTS_WITH" type: "string"
- "LIKE"timeZones:
type: - "BETWEENarray"
items:
- "IN" $ref: - "NOT_IN"
"#/definitions/TimeZoneInfo"
|