Versions Compared

Key

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

...

  • The deletion/removal of legal holds does not require approval through the API.
  • By creating a new legal hold via the API, the application can automatically apply to both historical and future conversations. On the user interface, a separate labeling or case rule has to be defined.
  • Only the API allows enabling or disabling the system-wide legal hold configuration setting.

Swagger open api
supportedSubmitMethodsnone
---
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"