swagger: '2.0'
info:
  version: '3.0/4.0'
  title: Alvaria Cloud ComplianceHub REST API
  contact:
    name: Alvaria
    url: 'http://www.alvaria.com'
  license:
    name: 'License: Creative Commons Attribution 4.0 International Public License'
    url: 'https://creativecommons.org/licenses/by/4.0/legalcode'
  description: >-
    # Overview
     The Alvaria&trade; Cloud ComplianceHub REST endpoints enable developers to create applications that manage compliance related activities. Using these endpoints, management of compliance rules and compliance checks are possible
    ## Compliance Management
     ComplianceHub manages the following compliance related rules
      - __Exclusions__
      - __ConvenientContactTimes__
      - __AttemptTrackers__
      - __QuotaControls__
      - __MessageTrackers__
    ### Exclusions
     This rule allows to exclude records from being contacted. Different types of exclusions are available like Account, Phone, Email, SMS and SSN(a custom exclusion number).
    ### ConvenientContactTimes
     The Convenient Time to Contact rule allows you to enforce contact times for a specific customer or account and contact address based on a specific time frame that is convenient for the customer/account or convenient based on other related criteria.
    ### AttemptTrackers
     Attempt Tracking allows you to track, control and limit the number of attempts that are made to a specific customer, contact address, customer/contact address, account or account/contact address combination across lists and strategies.
    ### QuotaControls
     QuotaControl is a way of restricting records from being dialed. QuotaControl entries are created for products and used in managing product inventory. It contains the product identifier, the total quantity, items sold, and unit price. The quotaControl entry is evaluated to check the availability of inventory before records are sent for dialing.
    ### MessageTrackers
     Centralized Message Tracking allows you to track, control and limit the number of messages and the types of messages that are left for a specific customer, contact address, customer/contact address, account or account/contact address across lists and strategies.
    ### ContactAttempts
     AttemptTracker and MessageTracker require historical contact attempts for validation of rules. Also QuotaControl require the quantity to increment quota in corresponding rules. So ComplianceHub have a provision to manage these using contactAttempts.
    ## ExternalData endpoints
     The resources Dispositions, NumberTypes, Geocodes, Purposes and ContactLists are used in compliance rules but their source of truth is consumer of Compliance Hub. So consumer can register their data or redirect url using externalData endpoints. This can be managed using externalData. The consumer should ensure they are using same property value from redirect endpoints across Compliance Hub endpoints. For example, if disposition code used from redirect endpoint for disposition then use disposition code in CRUD on /attemptTrackers, POST on /complianceStatuses, POST on /contactAttempts also.
    ## Load Job endpoints
     Bulk Exclusions, ConvenientContactTimes and ContactAttempts operations can perform from a delimited file using load endpoints.

     - POST /jobs/exclusionsLoad
     - POST /jobs/convenientContactTimesLoad
     - POST /jobs/contactAttemptsLoad

     Prior to this, the input file is uploaded to the network path('imports/outreach/exclusions') using the mediaStorage signed upload GET endpoint. The load job operations are performed asynchronously and the progress status is retrieved using the GET jobs/{jobId} endpoint. If any error occurred on processing a line in the file, the load will continue processing the other lines in the file and mark the job as Completed. An error file (.json) will be generated with the failed line index and the reason if the error response type specified is ErrorFileWithSummary. This file can be download from network path('exports/compliance/audit') to identify errors and load again with correction if needed. A load job will mark as Failed, if it failed to read the file in network path or the file not found.
    ## Sample ComplianceHub consumer code
     Register url or data for Dispositions, NumberTypes, Geocodes, Purposes and ContactLists. This is onetime task
     POST /compliance/externalData

     Create required rules in Exclusions, ConvenientContactTimes, QuotaControls, MessageTrackers. This can be done based on business use cases.

     POST /exclusions

     POST /attemptTrackers

     POST /convenientContactTimes

     POST /quotaControls

     POST /messageTrackers

     While making a contact(Voice or Email or Sms), do compliance check

     POST /complianceStatuses

     If record is not restricted by ComplianceHub then dial and send the contact outcome to ComplianceHub

     POST /contactAttempts

    ## Configurations
     The configuration endpoints offer the functionality to access configurations using GET and support updates through PATCH. The default values for these configurations are initially set as outlined in the below table
     ### AttemptTrackers

     |         **Configuration**          |  **Category**   |  **Default**  |    **Range**   |
     |:-----------------------------------|:----------------|:--------------|:---------------|
     |excludeFromContactAddressRule       | AttemptTracker  |    None       |       N/A      |
     |excludedContactAddresses            | AttemptTracker  |    None       |       N/A      |
     |enableActiveRecordFeature           | ActiveRecord    |    true       |       N/A      |
     |lifeTimeOfActiveRecord              | ActiveRecord    |  120 minutes  | 1-1440 minutes |
     |minutesToWaitAfterActiveRestriction | ActiveRecord    |   10 minutes  | 0-1440 minutes |

     ### MessageTrackers
     |        **Configuration**      |   **Category**  |  **Default**  |    **Range**   |
     |:------------------------------|:----------------|:--------------|:---------------|
     |excludeFromContactAddressRule  | MessageTracker  |     None      |       N/A      |
     |excludedContactAddresses       | MessageTracker  |     None      |       N/A      |

     ### Exclusions
     | **Configuration**  |  **Category**   |  **Default**  |    **Range**   |
     |:-------------------|:----------------|:--------------|:---------------|
     |retainDays          | Data retention  |   14 days     |    0-14 days   |
     |retainNoEndTime     | Data retention  |    false      |       N/A      |

     ### ConvenientContactTimes
     |  **Configuration** |  **Category**   |  **Default**  |    **Range**   |
     |:-------------------|:----------------|:--------------|:---------------|
     |retainDays          | Data retention  |   14 days     |    0-14 days   |


     All Alvaria&trade; Cloud resource instances are accessed through an Alvaria-supplied identifier. Before a specific resource instance can be updated, its properties must be retrieved through a GET operation specifically. The version property from the GET operation must be included in the properties of the PUT operation that updates the entity instance. The version enforces the optimistic locking mechanism rules when multiple clients attempt to update the same resource simultaneously.

     The primary focus of the new and modified enhancements are delivered with the intent to facilitate our customers complying with the new Consumers Financial Protection Bureau (CFPB) 2020 Final Rules. CFPB enhancements are implemented as V4 endpoints.

host: orgId.via.aspect-cloud.net
schemes:
  - https
consumes:
  - application/json
produces:
  - application/json
tags:
  - name: 'Exclusions'
  - name: 'AttemptTrackers'
  - name: 'ConvenientContactTimes'
  - name: 'QuotaControls'
  - name: 'MessageTrackers'
  - name: 'ComplianceStatuses'
  - name: 'ContactAttempts'
  - name: 'ExternalData'
  - name: 'Dispositions'
  - name: 'NumberTypes'
  - name: 'Geocodes'
  - name: 'Purposes'
  - name: 'ContactLists'
  - name: 'Jobs'
  - name: 'Configurations'
paths:
  '/via/v3/organizations/{orgId}/compliance/exclusions':
    post:
      tags:
        - Exclusions
      operationId: CreateExclusion
      summary: Create or updates Exclusion
      description: >-
        This endpoint accepts exclusion details and creates an exclusion or updates if already exists with same exclusionType, exclusionValue and contactListName where endTime is later in time.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: exclusions
          in: body
          description: ''
          required: true
          schema:
            $ref: '#/definitions/ExclusionsInsertRequest'
      security:
        - oauth:
            - complianceapi
      responses:
        '201':
          schema:
            $ref: '#/definitions/ItemExclusionsResponse'
          description: Created
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    get:
      tags:
        - Exclusions
      operationId: GetExclusions
      summary: Get exclusions
      description: >-
        To get all configured exclusions or a subset based on the query parameters specified.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: exclusionType
          in: query
          type: string
          enum:
          - Account
          - Voice
          - Email
          - SMS
          - SSN
          description: Contact Type.
          required: false
        - name: exclusionValue
          in: query
          type: string
          description: >-
            Exclusion value. This is used to get records associated with the specified exclusion value.
          required: false
        - name: contactListName
          in: query
          type: string
          description: >-
            Name of a contact list. This is used to get records associated with the specified contact list name. The valid contact list names can be retrieved using GET /compliance/contactLists endpoint'.
          required: false
        - $ref: '#/parameters/fromStartTime'
        - $ref: '#/parameters/toStartTime'
        - $ref: '#/parameters/fromEndTime'
        - $ref: '#/parameters/toEndTime'
        - $ref: '#/parameters/fromCreationTime'
        - $ref: '#/parameters/toCreationTime'
        - $ref: '#/parameters/fromLastModifiedTime'
        - $ref: '#/parameters/toLastModifiedTime'
        - $ref: '#/parameters/lastModifiedBy'
        - $ref: '#/parameters/maxResults'
        - $ref: '#/parameters/startIndex'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/CollectionExclusionsResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v3/organizations/{orgId}/compliance/exclusions/{exclusionId}':
    get:
      tags:
        - Exclusions
      operationId: GetExclusionInstance
      summary: Get Exclusion Instance
      description: >-
        Get the properties for an exclusion instance specified by the exclusion identifier.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/exclusionId'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/ItemExclusionsResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundEx'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    put:
      tags:
        - Exclusions
      operationId: UpdateExclusionInstance
      summary: Update Exclusion Instance
      description: >-
        Modifies the properties for an exclusion instance specified by the exclusion identifier.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/exclusionId'
        - name: exclusions
          in: body
          description: ''
          required: true
          schema:
            $ref: '#/definitions/ExclusionsUpdateRequest'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/ItemExclusionsResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundEx'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    delete:
      tags:
        - Exclusions
      operationId: DeleteExclusionInstance
      summary: Delete Exclusion Instance
      description: >-
        Deletes an exclusion specified by the exclusion identifier.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/exclusionId'
      security:
        - oauth:
            - complianceapi
      responses:
        '204':
          $ref: '#/responses/noContent'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundEx'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v3/organizations/{orgId}/compliance/attemptTrackers':
    post:
      tags:
        - AttemptTrackers
      operationId: CreateAttemptTracker
      summary: Create AttemptTracker v3 (deprecated)
      description: >-
        **This endpoint is deprecated, please use 'POST /via/v4/organizations/{orgId}/compliance/attemptTrackers' instead**
        <p>This endpoint accepts attemptTracker details and creates an attemptTracker.</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: attemptTrackers
          in: body
          description: attemptTracker details.
          required: true
          schema:
            $ref: '#/definitions/AttemptTrackersInsertRequest'
      security:
        - oauth:
            - complianceapi
      responses:
        '201':
          schema:
            $ref: '#/definitions/TerseAttemptTrackersResponse'
          description: Created
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    get:
      tags:
        - AttemptTrackers
      operationId: GetAttemptTrackers
      summary: Get AttemptTrackers v3 (deprecated)
      description: >-
        **This endpoint is deprecated, please use 'GET /via/v4/organizations/{orgId}/compliance/attemptTrackers' instead**
        <p>To get all configured attemptTrackers or a subset based on the query parameters specified.</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/attemptTrackerName'
        - $ref: '#/parameters/attemptTrackerDescription'
        - $ref: '#/parameters/typeOfTracker'
        - $ref: '#/parameters/numberOfAttempts'
        - $ref: '#/parameters/threshold'
        - $ref: '#/parameters/thresholdType'
        - $ref: '#/parameters/dispositions'
        - $ref: '#/parameters/numberTypes'
        - $ref: '#/parameters/geocodes'
        - $ref: '#/parameters/purposes'
        - $ref: '#/parameters/fromCreationTime'
        - $ref: '#/parameters/toCreationTime'
        - $ref: '#/parameters/fromLastModifiedTime'
        - $ref: '#/parameters/toLastModifiedTime'
        - $ref: '#/parameters/lastModifiedBy'
        - $ref: '#/parameters/maxResults'
        - $ref: '#/parameters/startIndex'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/CollectionAttemptTrackerResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v3/organizations/{orgId}/compliance/attemptTrackers/{attemptTrackerId}':
    get:
      tags:
        - AttemptTrackers
      operationId: GetAttemptTrackerInstance
      summary: Get AttemptTracker Instance v3 (deprecated)
      description: >-
        **This endpoint is deprecated, please use 'GET /via/v4/organizations/{orgId}/compliance/attemptTrackers/{attemptTrackerId}' instead**
        <p>Get the properties for an attemptTracker instance specified by the attemptTracker identifier</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/attemptTrackerId'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/TerseAttemptTrackersResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundAt'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    put:
      tags:
        - AttemptTrackers
      operationId: UpdateAttemptTrackerInstance
      summary: Update AttemptTracker Instance v3 (deprecated)
      description: >-
        **This endpoint is deprecated, please use 'PUT /via/v4/organizations/{orgId}/compliance/attemptTrackers/{attemptTrackerId}' instead**
        <p>Modifies the properties for an attemptTracker instance specified by the attemptTracker identifier.</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/attemptTrackerId'
        - name: attemptTrackers
          in: body
          description: attemptTracker details to update.
          required: true
          schema:
            $ref: '#/definitions/AttemptTrackersUpdateRequest'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/TerseAttemptTrackersResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundAt'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    delete:
      tags:
        - AttemptTrackers
      operationId: DeleteAttemptTrackerInstance
      summary: Delete AttemptTracker Instance v3 (deprecated)
      description: >-
        **This endpoint is deprecated, please use 'DELETE /via/v4/organizations/{orgId}/compliance/attemptTrackers/{attemptTrackerId}' instead**
        <p>Deletes an attemptTracker specified by the attemptTracker identifier.</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/attemptTrackerId'
      security:
        - oauth:
            - complianceapi
      responses:
        '204':
          $ref: '#/responses/noContent'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundAt'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v4/organizations/{orgId}/compliance/attemptTrackers':
    post:
      tags:
        - AttemptTrackers
      operationId: createAttemptTrackerV4
      summary: Create AttemptTracker v4
      description: >-
        This endpoint accepts attemptTracker details and creates an attemptTracker.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: attemptTrackers
          in: body
          description: attemptTracker details.
          required: true
          schema:
            $ref: '#/definitions/AttemptTrackersInsertRequestV4'
      security:
        - oauth:
            - complianceapi
      responses:
        '201':
          schema:
            $ref: '#/definitions/TerseAttemptTrackersResponseV4'
          description: Created
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    get:
      tags:
        - AttemptTrackers
      operationId: getAttemptTrackersV4
      summary: Get AttemptTrackers v4
      description: >-
        To get all configured attemptTrackers or a subset based on the query parameters specified.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/attemptTrackerName'
        - $ref: '#/parameters/attemptTrackerDescription'
        - $ref: '#/parameters/typeOfTrackerV4'
        - $ref: '#/parameters/contactChannels'
        - $ref: '#/parameters/numberOfAttemptsV4'
        - $ref: '#/parameters/threshold'
        - $ref: '#/parameters/thresholdType'
        - $ref: '#/parameters/dispositions'
        - $ref: '#/parameters/numberTypes'
        - $ref: '#/parameters/geocodes'
        - $ref: '#/parameters/purposes'
        - $ref: '#/parameters/fromCreationTime'
        - $ref: '#/parameters/toCreationTime'
        - $ref: '#/parameters/fromLastModifiedTime'
        - $ref: '#/parameters/toLastModifiedTime'
        - $ref: '#/parameters/lastModifiedBy'
        - $ref: '#/parameters/maxResults'
        - $ref: '#/parameters/startIndex'
        - $ref: '#/parameters/enabled'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/CollectionAttemptTrackerResponseV4'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v4/organizations/{orgId}/compliance/attemptTrackers/{attemptTrackerId}':
    get:
      tags:
        - AttemptTrackers
      operationId: getAttemptTrackerInstanceV4
      summary: Get AttemptTracker Instance v4
      description: >-
        Get the properties for an attemptTracker instance specified by the attemptTracker identifier
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/attemptTrackerId'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/TerseAttemptTrackersResponseV4'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundAt'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    put:
      tags:
        - AttemptTrackers
      operationId: updateAttemptTrackerInstanceV4
      summary: Update AttemptTracker Instance v4
      description: >-
        Modifies the properties for an attemptTracker instance specified by the attemptTracker identifier.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/attemptTrackerId'
        - name: attemptTrackers
          in: body
          description: attemptTracker details to update.
          required: true
          schema:
            $ref: '#/definitions/AttemptTrackersUpdateRequestV4'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/TerseAttemptTrackersResponseV4'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundAt'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    delete:
      tags:
        - AttemptTrackers
      operationId: deleteAttemptTrackerInstanceV4
      summary: Delete AttemptTracker Instance v4
      description: >-
        Deletes an attemptTracker specified by the attemptTracker identifier.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/attemptTrackerId'
      security:
        - oauth:
            - complianceapi
      responses:
        '204':
          $ref: '#/responses/noContent'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundAt'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v3/organizations/{orgId}/compliance/convenientContactTimes':
    post:
      tags:
        - ConvenientContactTimes
      operationId: CreateConvenientContactTime
      summary: Create ConvenientContactTime v3 (deprecated)
      description: >-
        **This endpoint is deprecated, please use 'POST /via/v4/organizations/{orgId}/compliance/convenientContactTimes' instead**
        <p>This endpoint accepts convenientContactTime details and creates a convenientContactTime or updates if already exists with same customer and phone.</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: convenientContactTimes
          in: body
          description: convenientContactTime details.
          required: true
          schema:
            $ref: '#/definitions/ConvenientContactTimesInsertRequest'
      security:
        - oauth:
            - complianceapi
      responses:
        '201':
          schema:
            $ref: '#/definitions/TerseConvenientContactTimesResponse'
          description: Created
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    get:
      tags:
        - ConvenientContactTimes
      operationId: GetConvenientContactTimes
      summary: Get ConvenientContactTimes v3 (deprecated)
      description: >-
        **This endpoint is deprecated, please use 'GET /via/v4/organizations/{orgId}/compliance/convenientContactTimes' instead**
        <p>To get all configured convenientContactTimes or a subset based on the query parameters specified.</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: customer
          in: query
          description: Customer name.
          required: false
          type: string
        - name: phone
          in: query
          description: Phone number.
          required: false
          type: string
        - $ref: '#/parameters/fromEndTime'
        - $ref: '#/parameters/toEndTime'
        - $ref: '#/parameters/fromCreationTime'
        - $ref: '#/parameters/toCreationTime'
        - $ref: '#/parameters/fromLastModifiedTime'
        - $ref: '#/parameters/toLastModifiedTime'
        - $ref: '#/parameters/lastModifiedBy'
        - $ref: '#/parameters/maxResults'
        - $ref: '#/parameters/startIndex'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/CollectionConvenientContactTimeResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v3/organizations/{orgId}/compliance/convenientContactTimes/{convenientContactTimeId}':
    get:
      tags:
        - ConvenientContactTimes
      operationId: GetConvenientContactTimeInstance
      summary: Get ConvenientContactTime Instance v3 (deprecated)
      description: >-
        **This endpoint is deprecated, please use 'GET /via/v4/organizations/{orgId}/compliance/convenientContactTimes/{convenientContactTimeId}' instead**
        <p>Get the properties for a convenientContactTime instance specified by the convenientContactTime identifier.</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/convenientContactTimeId'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/TerseConvenientContactTimesResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundCct'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    put:
      tags:
        - ConvenientContactTimes
      operationId: UpdateConvenientContactTimeInstance
      summary: Update ConvenientContactTime Instance v3 (deprecated)
      description: >-
        **This endpoint is deprecated, please use 'PUT /via/v4/organizations/{orgId}/compliance/convenientContactTimes/{convenientContactTimeId}' instead**
        <p>Modifies the properties for a ConvenientContactTime instance specified by the ConvenientContactTime identifier.</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/convenientContactTimeId'
        - name: convenientContactTimes
          in: body
          description: ConvenientContactTime details to update
          required: true
          schema:
            $ref: '#/definitions/ConvenientContactTimesUpdateRequest'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/TerseConvenientContactTimesResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundCct'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    delete:
      tags:
        - ConvenientContactTimes
      operationId: DeleteConvenientContactTimeInstance
      summary: Delete ConvenientContactTime Instance v3 (deprecated)
      description: >-
        **This endpoint is deprecated, please use 'DELETE /via/v4/organizations/{orgId}/compliance/convenientContactTimes/{convenientContactTimeId}' instead**
        <p>Deletes a ConvenientContactTime specified by the ConvenientContactTime identifier.</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/convenientContactTimeId'
      security:
        - oauth:
            - complianceapi
      responses:
        '204':
          $ref: '#/responses/noContent'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundCct'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v4/organizations/{orgId}/compliance/convenientContactTimes':
    post:
      tags:
        - ConvenientContactTimes
      operationId: createConvenientContactTimeV4
      summary: Create ConvenientContactTime v4
      description: >-
        This endpoint accepts convenientContactTime details and creates a convenientContactTime or updates if already exists with same contact key and contact value.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: convenientContactTimes
          in: body
          description: convenientContactTime details.
          required: true
          schema:
            $ref: '#/definitions/ConvenientContactTimesInsertRequestV4'
      security:
        - oauth:
            - complianceapi
      responses:
        '201':
          schema:
            $ref: '#/definitions/TerseConvenientContactTimesResponseV4'
          description: Created
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    get:
      tags:
        - ConvenientContactTimes
      operationId: getConvenientContactTimesV4
      summary: Get ConvenientContactTimes v4
      description: >-
        To get all configured convenientContactTimes or a subset based on the query parameters specified.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/contactKeyType'
        - $ref: '#/parameters/contactKey'
        - $ref: '#/parameters/contactValueType'
        - $ref: '#/parameters/contactValue'
        - $ref: '#/parameters/fromEndTime'
        - $ref: '#/parameters/toEndTime'
        - $ref: '#/parameters/fromCreationTime'
        - $ref: '#/parameters/toCreationTime'
        - $ref: '#/parameters/fromLastModifiedTime'
        - $ref: '#/parameters/toLastModifiedTime'
        - $ref: '#/parameters/lastModifiedBy'
        - $ref: '#/parameters/maxResults'
        - $ref: '#/parameters/startIndex'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/CollectionConvenientContactTimeResponseV4'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v4/organizations/{orgId}/compliance/convenientContactTimes/{convenientContactTimeId}':
    get:
      tags:
        - ConvenientContactTimes
      operationId: getConvenientContactTimeInstanceV4
      summary: Get ConvenientContactTime Instance v4
      description: >-
        Get the properties for a convenientContactTime instance specified by the convenientContactTime identifier.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/convenientContactTimeId'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/TerseConvenientContactTimesResponseV4'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundCct'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    put:
      tags:
        - ConvenientContactTimes
      operationId: updateConvenientContactTimeInstanceV4
      summary: Update ConvenientContactTime Instance v4
      description: >-
        Modifies the properties for a ConvenientContactTime instance specified by the ConvenientContactTime identifier.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/convenientContactTimeId'
        - name: convenientContactTimes
          in: body
          description: ConvenientContactTime details to update
          required: true
          schema:
            $ref: '#/definitions/ConvenientContactTimesUpdateRequestV4'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/TerseConvenientContactTimesResponseV4'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundCct'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    delete:
      tags:
        - ConvenientContactTimes
      operationId: deleteConvenientContactTimeInstanceV4
      summary: Delete ConvenientContactTime Instance v4
      description: >-
        Deletes a ConvenientContactTime specified by the ConvenientContactTime identifier.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/convenientContactTimeId'
      security:
        - oauth:
            - complianceapi
      responses:
        '204':
          $ref: '#/responses/noContent'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundCct'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v3/organizations/{orgId}/compliance/quotaControls':
    post:
      tags:
        - QuotaControls
      operationId: CreateQuotaControl
      summary: Create QuotaControl
      description: >-
        This endpoint accepts quotaControl details and creates a quotaControl.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: quotaControls
          in: body
          description: ''
          required: true
          schema:
            $ref: '#/definitions/QuotaControlsInsertRequest'
      security:
        - oauth:
            - complianceapi
      responses:
        '201':
          schema:
            $ref: '#/definitions/TerseQuotaControlsResponse'
          description: Created
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    get:
      tags:
        - QuotaControls
      operationId: GetQuotaControls
      summary: Get QuotaControls
      description: >-
        To get all configured quotaControls or a subset based on the query parameters specified.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/product'
        - $ref: '#/parameters/productDescription'
        - $ref: '#/parameters/totalQuota'
        - $ref: '#/parameters/productSold'
        - $ref: '#/parameters/unitValue'
        - $ref: '#/parameters/fromCreationTime'
        - $ref: '#/parameters/toCreationTime'
        - $ref: '#/parameters/fromLastModifiedTime'
        - $ref: '#/parameters/toLastModifiedTime'
        - $ref: '#/parameters/lastModifiedBy'
        - $ref: '#/parameters/maxResults'
        - $ref: '#/parameters/startIndex'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/CollectionQuotaControlsResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '401':
          $ref: '#/responses/unauthorized'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v3/organizations/{orgId}/compliance/quotaControls/{quotaControlId}':
    get:
      tags:
        - QuotaControls
      operationId: GetQuotaControlInstance
      summary: Get QuotaControl Instance
      description: >-
        Get the properties for a quotaControl instance specified by the quotaControl identifier.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/quotaControlId'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/TerseQuotaControlsResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundQt'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    put:
      tags:
        - QuotaControls
      operationId: UpdateQuotaControlInstance
      summary: Update quotaControl Instance
      description: >-
        Modifies the properties for a quotaControl instance specified by the quotaControl identifier.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/quotaControlId'
        - name: quotaControls
          in: body
          description: ''
          required: true
          schema:
            $ref: '#/definitions/QuotaControlsUpdateRequest'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/TerseQuotaControlsResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundQt'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    delete:
      tags:
        - QuotaControls
      operationId: DeleteQuotaControlInstance
      summary: Delete quotaControl Instance
      description: >-
        Deletes a quotaControl specified by the quotaControl identifier.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/quotaControlId'
      security:
        - oauth:
            - complianceapi
      responses:
        '204':
          $ref: '#/responses/noContent'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundQt'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v3/organizations/{orgId}/compliance/messageTrackers':
    post:
      tags:
        - MessageTrackers
      operationId: CreateMessageTracker
      summary: Create MessageTracker v3 (deprecated)
      description: >-
        **This endpoint is deprecated, please use 'POST /via/v4/organizations/{orgId}/compliance/messageTrackers' instead**
        <p>This endpoint accepts messageTracker details and creates a messageTracker.</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: messageTrackers
          in: body
          description: messageTracker details
          required: true
          schema:
            $ref: '#/definitions/MessageTrackersInsertRequest'
      security:
        - oauth:
            - complianceapi
      responses:
        '201':
          schema:
            $ref: '#/definitions/TerseMessageTrackersResponse'
          description: Created
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    get:
      tags:
        - MessageTrackers
      operationId: GetMessageTrackers
      summary: Get MessageTrackers v3 (deprecated)
      description: >-
        **This endpoint is deprecated, please use 'GET /via/v4/organizations/{orgId}/compliance/messageTrackers' instead**
        <p>To get all configured messageTrackers or a subset based on the query parameters specified.</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/messageTrackerName'
        - $ref: '#/parameters/messageTrackerDescription'
        - $ref: '#/parameters/typeOfTracker'
        - $ref: '#/parameters/numberOfAttempts'
        - $ref: '#/parameters/threshold'
        - $ref: '#/parameters/thresholdType'
        - $ref: '#/parameters/dispositions'
        - $ref: '#/parameters/numberTypes'
        - $ref: '#/parameters/geocodes'
        - $ref: '#/parameters/purposes'
        - $ref: '#/parameters/fromCreationTime'
        - $ref: '#/parameters/toCreationTime'
        - $ref: '#/parameters/fromLastModifiedTime'
        - $ref: '#/parameters/toLastModifiedTime'
        - $ref: '#/parameters/lastModifiedBy'
        - $ref: '#/parameters/maxResults'
        - $ref: '#/parameters/startIndex'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/CollectionMessageTrackerResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '401':
          $ref: '#/responses/unauthorized'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v3/organizations/{orgId}/compliance/messageTrackers/{messageTrackerId}':
    get:
      tags:
        - MessageTrackers
      operationId: GetMessageTrackerInstance
      summary: Get MessageTracker Instance v3 (deprecated)
      description: >-
        **This endpoint is deprecated, please use 'GET /via/v4/organizations/{orgId}/compliance/messageTrackers/{messageTrackerId}' instead**
        <p>Get the properties for a messageTracker instance specified by the messageTracker identifier.</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/messageTrackerId'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/TerseMessageTrackersResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundMt'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    put:
      tags:
        - MessageTrackers
      operationId: UpdateMessageTrackerInstance
      summary: Update MessageTracker Instance v3 (deprecated)
      description: >-
        **This endpoint is deprecated, please use 'PUT /via/v4/organizations/{orgId}/compliance/messageTrackers/{messageTrackerId}' instead**
        <p>Modifies the properties for a MessageTracker instance specified by the MessageTracker identifier.</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/messageTrackerId'
        - name: messageTrackers
          in: body
          description: MessageTracker details to update
          required: true
          schema:
            $ref: '#/definitions/MessageTrackersUpdateRequest'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/TerseMessageTrackersResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundMt'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    delete:
      tags:
        - MessageTrackers
      operationId: DeleteMessageTrackerInstance
      summary: Delete MessageTracker Instance v3 (deprecated)
      description: >-
        **This endpoint is deprecated, please use 'DELETE /via/v4/organizations/{orgId}/compliance/messageTrackers/{messageTrackerId}' instead**
        <p>Deletes a MessageTracker specified by the MessageTracker identifier.</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/messageTrackerId'
      security:
        - oauth:
            - complianceapi
      responses:
        '204':
          $ref: '#/responses/noContent'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundMt'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v4/organizations/{orgId}/compliance/messageTrackers':
    post:
      tags:
        - MessageTrackers
      operationId: createMessageTrackerV4
      summary: Create MessageTracker v4
      description: >-
        This endpoint accepts messageTracker details and creates a messageTracker.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: messageTrackers
          in: body
          description: messageTracker details
          required: true
          schema:
            $ref: '#/definitions/MessageTrackersInsertRequestV4'
      security:
        - oauth:
            - complianceapi
      responses:
        '201':
          schema:
            $ref: '#/definitions/TerseMessageTrackersResponseV4'
          description: Created
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    get:
      tags:
        - MessageTrackers
      operationId: getMessageTrackersV4
      summary: Get MessageTrackers v4
      description: >-
        To get all configured messageTrackers or a subset based on the query parameters specified.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/messageTrackerName'
        - $ref: '#/parameters/messageTrackerDescription'
        - $ref: '#/parameters/typeOfTrackerV4'
        - $ref: '#/parameters/numberOfAttemptsV4'
        - $ref: '#/parameters/threshold'
        - $ref: '#/parameters/thresholdType'
        - $ref: '#/parameters/thresholdActionType'
        - $ref: '#/parameters/dispositions'
        - $ref: '#/parameters/numberTypes'
        - $ref: '#/parameters/geocodes'
        - $ref: '#/parameters/purposes'
        - $ref: '#/parameters/fromCreationTime'
        - $ref: '#/parameters/toCreationTime'
        - $ref: '#/parameters/fromLastModifiedTime'
        - $ref: '#/parameters/toLastModifiedTime'
        - $ref: '#/parameters/lastModifiedBy'
        - $ref: '#/parameters/maxResults'
        - $ref: '#/parameters/startIndex'
        - $ref: '#/parameters/enabled'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/CollectionMessageTrackerResponseV4'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '401':
          $ref: '#/responses/unauthorized'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v4/organizations/{orgId}/compliance/messageTrackers/{messageTrackerId}':
    get:
      tags:
        - MessageTrackers
      operationId: getMessageTrackerInstanceV4
      summary: Get MessageTracker Instance v4
      description: >-
        Get the properties for a messageTracker instance specified by the messageTracker identifier.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/messageTrackerId'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/TerseMessageTrackersResponseV4'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundMt'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    put:
      tags:
        - MessageTrackers
      operationId: updateMessageTrackerInstanceV4
      summary: Update MessageTracker Instance v4
      description: >-
        Modifies the properties for a messageTracker instance specified by the messageTracker identifier.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/messageTrackerId'
        - name: messageTrackers
          in: body
          description: messageTracker details to update
          required: true
          schema:
            $ref: '#/definitions/MessageTrackersUpdateRequestV4'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/TerseMessageTrackersResponseV4'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundMt'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    delete:
      tags:
        - MessageTrackers
      operationId: deleteMessageTrackerInstanceV4
      summary: Delete MessageTracker Instance v4
      description: >-
        Deletes a MessageTracker specified by the MessageTracker identifier.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/messageTrackerId'
      security:
        - oauth:
            - complianceapi
      responses:
        '204':
          $ref: '#/responses/noContent'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundMt'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v3/organizations/{orgId}/compliance/complianceStatuses':
    get:
      tags:
        - ComplianceStatuses
      operationId: CheckComplianceStatus
      summary: Check Compliance Status v3 (deprecated)
      description: >-
        **This endpoint is deprecated, please use 'POST /via/v4/organizations/{orgId}/compliance/complianceStatuses' instead**
        <p>Check if a record is allowed to be contacted or not based on exclusion, attemptTracker, messageTracker, convenientContactTime and quotaControls rules. The given query parameter values in this endpoint will validate against exclusion, quotaControl, attemptTracker, convenientContactTime and messageTracker to determine whether this record is allowed to be contacted now. This endpoint can do selective checks using query parameter 'requiredChecks'. If the record is restricted by any type of the rule then response will prepare based on rule that caused the restriction and no further checks will be performed for this record. For example, if an exclusion rule prevents this record from being contacted then convenientContactTime, quotaControl, attemptTracker and messageTracker rule evaluation wont happen. This endpoint does not guarantee the evaluation order mentioned in 'requiredChecks' query parameter. This endpoint will return a key and that should pass into subsequent GET on /complianceStatuses for the same record(if any). If record is not restricted and a contact attempt is made, then consumer of this endpoint must contact POST on /contactAttempts with key received to report the contact status to Compliance Hub.</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/requiredChecks'
        - $ref: '#/parameters/contactChannel'
        - $ref: '#/parameters/contactAddress'
        - $ref: '#/parameters/accountNumber'
        - $ref: '#/parameters/ssn'
        - $ref: '#/parameters/contactListName'
        - $ref: '#/parameters/customer'
        - $ref: '#/parameters/numberTypeCheck'
        - $ref: '#/parameters/geocodesCheck'
        - $ref: '#/parameters/purposeCheck'
        - $ref: '#/parameters/timeZone'
        - $ref: '#/parameters/product'
        - $ref: '#/parameters/key'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/TerseComplianceStatusesResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v4/organizations/{orgId}/compliance/complianceStatuses':
    post:
      tags:
        - ComplianceStatuses
      operationId: postComplianceStatusV4
      summary: Post Compliance Status v4
      description: >-
        <p>Check a contact is allowed or not based on the given values against the configured exclusion, attemptTracker, messageTracker, convenientContactTime and quotaControl rules.</p>
        <p>If contact is allowed then a key will be generated which is available in the response. After a compliance check the outcome of the contact with this key must send back to Compliance Hub via POST /contactAttempts endpoint. Until this call, Compliance Hub consider an active contact is going on against the contactAddress, customer and accountNumber. In case compliance check allowed to contact but no contact is made due to other reasons then also POST /contactAttempts must be called with operationType as CancelContact to clear active record.</p>
        <p>If there is a significant delay in making a contact after a compliance check then consider doing POST/ complianceStatuses again to incorporate the changes in rules after the compliance check. In case of multiple compliance checks required before making a contact then ensure the key generated in first check is passed into these subsequent compliance checks to ensure only one active record is generated for this contact. In this case single POST /contactAttempts endpoint request only needed after the contact is completed.</p>
        <p>If the record is prevented from contact by any one rule then no further checks will be performed and restricted property will be true in response. For example, if an exclusion rule prevents this record from being contacted then convenientContactTime, quotaControl, attemptTracker and messageTracker rule evaluations will be skipped. In this case no need to call POST/ contactAttempts endpoint.</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: complianceStatus
          in: body
          description: complianceStatus details.
          required: true
          schema:
            $ref: '#/definitions/ComplianceStatusesInsertRequestV4'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/TersePostComplianceStatusesResponseV4'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    get:
      tags:
        - ComplianceStatuses
      operationId: checkComplianceStatusV4
      summary: Check Compliance Status v4
      description: >-
        **This GET endpoint will be deprecated in future, please consider using the equivalent POST /complianceStatuses endpoint**
        <p>Check if a record is allowed to be contacted or not based on exclusion, attemptTracker, messageTracker, convenientContactTime and quotaControls rules. The given query parameter values in this endpoint will validate against exclusion, quotaControl, attemptTracker, convenientContactTime and messageTracker to determine whether this record is allowed to be contacted now. This endpoint can do selective checks using query parameter 'requiredChecks'. If the record is restricted by any type of the rule then response will prepare based on rule that caused the restriction and no further checks will be performed for this record. For example, if an exclusion rule prevents this record from being contacted then convenientContactTime, quotaControl, attemptTracker and messageTracker rule evaluation wont happen. This endpoint does not guarantee the evaluation order mentioned in 'requiredChecks' query parameter. This endpoint will return a key and that should pass into subsequent GET on /complianceStatuses for the same record(if any). If the record is not restricted, the Compliance Hub treats this record as active and return a key to identify the record. The consumer of this endpoint must call the POST /contactAttempts with the key received which saves the contact attempt and clear the active record. In case a contact is not made, the consumer must call the POST /contactAttempts with the operationType property as CancelContact which clears the active record only.</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/requiredChecks'
        - $ref: '#/parameters/contactChannel'
        - $ref: '#/parameters/contactAddress'
        - $ref: '#/parameters/accountNumber'
        - $ref: '#/parameters/ssn'
        - $ref: '#/parameters/contactListName'
        - $ref: '#/parameters/customer'
        - $ref: '#/parameters/numberTypeCheck'
        - $ref: '#/parameters/geocodesCheck'
        - $ref: '#/parameters/purposeCheck'
        - $ref: '#/parameters/timeZone'
        - $ref: '#/parameters/product'
        - $ref: '#/parameters/key'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/TerseComplianceStatusesResponseV4'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v3/organizations/{orgId}/compliance/contactAttempts':
    post:
      tags:
        - ContactAttempts
      operationId: ReportContactStatus
      summary: Report Contact Status v3 (deprecated)
      description: >-
        **This endpoint is deprecated, please use 'POST /via/v4/organizations/{orgId}/compliance/contactAttempts' instead**
        <p>After each contact, an outcome must be sent to Compliance Hub using this endpoint.  This contact attempt information is used by attemptTracker, messageTracker and quotaControl. For each non-restricted GET /complianceStatuses call a corresponding call to POST on /contactAttempts should be sent. If the same record is checked multiple times with same key before contact then only one POST on /contactAttempts is required.</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: contactAttempts
          in: body
          description: ''
          required: true
          schema:
            $ref: '#/definitions/ContactAttemptsInsertRequest'
      security:
        - oauth:
            - complianceapi
      responses:
        '202':
          description: Accepted
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    get:
      tags:
        - ContactAttempts
      operationId: GetContactAttempts
      summary: Get ContactAttempts v3 (deprecated)
      description: >-
        **This endpoint is deprecated, please use 'GET /via/v4/organizations/{orgId}/compliance/contactAttempts' instead**
        <p>To get all contact outcome details or a subset based on the query parameters specified. This endpoint performs a search on persisted values.</p>
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: contactChannel
          in: query
          type: string
          enum:
          - Voice
          - SMS
          - Email
          description: Contact channel to search.
        - name: contactAddress
          in: query
          type: string
          description: Contact Address to search.
        - $ref: '#/parameters/customer'
        - $ref: '#/parameters/disposition'
        - $ref: '#/parameters/numberType'
        - $ref: '#/parameters/geocodes'
        - $ref: '#/parameters/purpose'
        - $ref: '#/parameters/timeZone'
        - $ref: '#/parameters/fromTimeOfContact'
        - $ref: '#/parameters/toTimeOfContact'
        - $ref: '#/parameters/maxResults'
        - $ref: '#/parameters/startIndex'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/CollectionContactAttemptsResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v4/organizations/{orgId}/compliance/contactAttempts':
    post:
      tags:
        - ContactAttempts
      operationId: reportContactStatusV4
      summary: Report Contact Status v4
      description: >-
        This endpoint will saves the contact attempt and clear the active record. After each contact, an outcome must be sent to Compliance Hub using this endpoint. This contact attempt information is used by attemptTracker, messageTracker and quotaControl. If record is not restricted in compliance evaluation then Compliance Hub treat that record as active and return a key to identify the record. So after a compliance check, must report the contact status to Compliance Hub using this endpoint with key received in compliance check. In case a contact is not made, then use 'CancelContact' as 'operationType' to clear the active record without persisting the attempt. If the same record is checked multiple times with same key before contact then only one POST on /contactAttempts is required. All attempts are enabled by default, a contactAttempt can disable by calling PATCH on /contactAttempts. In case, a contactEvent need to insert without a compliance check then use 'SaveContactNoKeyCheck' as 'operationType' to skip the 'key' validation.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: contactAttempts
          in: body
          description: ''
          required: true
          schema:
            $ref: '#/definitions/ContactAttemptsInsertRequestV4'
      security:
        - oauth:
            - complianceapi
      responses:
        '202':
          description: Accepted
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    get:
      tags:
        - ContactAttempts
      operationId: getContactAttemptsV4
      summary: Get ContactAttempts v4
      description: >-
        To get all contact outcome details or a subset based on the query parameters specified. This endpoint performs a search on persisted values.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: contactChannel
          in: query
          type: string
          enum:
          - Voice
          - SMS
          - Email
          description: Contact channel to search.
        - name: contactAddress
          in: query
          type: string
          description: Contact Address to search.
        - $ref: '#/parameters/customer'
        - $ref: '#/parameters/disposition'
        - $ref: '#/parameters/numberType'
        - $ref: '#/parameters/geocodes'
        - $ref: '#/parameters/purpose'
        - $ref: '#/parameters/timeZone'
        - $ref: '#/parameters/fromTimeOfContact'
        - $ref: '#/parameters/toTimeOfContact'
        - $ref: '#/parameters/accountNumber'
        - $ref: '#/parameters/status'
        - $ref: '#/parameters/fromCreationTime'
        - $ref: '#/parameters/toCreationTime'
        - $ref: '#/parameters/fromLastModifiedTime'
        - $ref: '#/parameters/toLastModifiedTime'
        - $ref: '#/parameters/lastModifiedBy'
        - $ref: '#/parameters/maxResults'
        - $ref: '#/parameters/startIndex'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/CollectionContactAttemptsResponseV4'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v4/organizations/{orgId}/compliance/contactAttempts/{contactAttemptId}':
    get:
      tags:
        - ContactAttempts
      operationId: getContactAttemptInstanceV4
      summary: Get ContactAttempt Instance v4
      description: >-
        Get the properties for an contactAttempt instance specified by the contactAttempt identifier
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/contactAttemptId'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/TerseContactAttemptsResponseV4'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundAt'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    patch:
      tags:
        - ContactAttempts
      operationId: patchContactAttemptInstanceV4
      summary: Patch ContactAttempt Instance v4
      description: >-
        Modifies the properties for an contactAttempt instance specified by the contactAttempt identifier.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/contactAttemptId'
        - name: contactAttempts
          in: body
          description: contactAttempt details to update.
          required: true
          schema:
            $ref: '#/definitions/ContactAttemptsPatchRequest'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/TerseContactAttemptsResponseV4'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundAt'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v3/organizations/{orgId}/compliance/externalData':
    post:
      tags:
        - ExternalData
      operationId: RegisterExternalData
      summary: Register ExternalData
      description: >-
        This endpoint accepts externalData and creates an externalData. This will accept redirect url or file with data in json format. The file data should match the format of corresponding url response. For example, externalData resource is 'Dispositions' then the json data in file should match 'dispositions' array response of GET /dispositions endpoint. The externalData allow only one entry against one resource.
      consumes:
        - multipart/form-data
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - in: formData
          name: resource
          type: string
          enum:
          - Dispositions
          - NumberTypes
          - Geocodes
          - Purposes
          - ContactLists
          required: true
          description: Resource name
        - in: formData
          name: valueType
          type: string
          enum:
          - Url
          - File
          description: Data type
          required: true
        - in: formData
          name: value
          type: string
          description: Value based valueType. If valueType is 'Url' then redirect url. If valueType is 'File' then filename. If this value not provided for valueType 'File' then filename will use
          required: false
        - in: formData
          name: jsonFile
          type: file
          description: File with json data. This required for valueType File
          required: false
        - in: formData
          name: locale
          type: string
          description: Resource's locale name
          required: false
      security:
        - oauth:
            - complianceapi
      responses:
        '201':
          schema:
            $ref: '#/definitions/TerseExternalDataResponse'
          description: Created
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    get:
      tags:
        - ExternalData
      operationId: GetExternalData
      summary: Get ExternalData
      description: >-
        To get all configured externalData or a subset based on the query parameters specified.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: resource
          in: query
          description: ExternalData Resource name.
          required: false
          type: string
          enum:
          - Dispositions
          - NumberTypes
          - Geocodes
          - Purposes
          - ContactLists
        - name: valueType
          in: query
          type: string
          enum:
          - Url
          - File
          description: Type of value
          required: false
        - name: value
          in: query
          type: string
          description: Data stored based on valueType.
          required: false
        - $ref: '#/parameters/fromCreationTime'
        - $ref: '#/parameters/toCreationTime'
        - $ref: '#/parameters/fromLastModifiedTime'
        - $ref: '#/parameters/toLastModifiedTime'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/CollectionExternalDataResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '401':
          $ref: '#/responses/unauthorized'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v3/organizations/{orgId}/compliance/externalData/{externalDataId}':
    delete:
      tags:
        - ExternalData
      operationId: UnregisterExternalDataInstance
      summary: Unregister externalData Instance
      description: >-
        Deletes a externalData specified by the externalData identifier.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/externalDataId'
      security:
        - oauth:
            - complianceapi
      responses:
        '204':
          $ref: '#/responses/noContent'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundQt'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v3/organizations/{orgId}/compliance/dispositions':
    get:
      tags:
        - Dispositions
      operationId: GetDispositions
      summary: Get Dispositions
      description: >-
        Retrieves registered json data or redirect url for dispositions as per the /externalData registration
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/maxResults'
        - $ref: '#/parameters/startIndex'
      security:
        - oauth:
            - complianceapi
      responses:
        '302':
          $ref: '#/responses/found'
        '200':
          schema:
            $ref: '#/definitions/CollectionDispositionsResponse'
          description: OK
        '405':
          $ref: '#/responses/methodNotAllowed'
        '401':
          $ref: '#/responses/unauthorized'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v3/organizations/{orgId}/compliance/numberTypes':
    get:
      tags:
        - NumberTypes
      operationId: GetNumberTypes
      summary: Get NumberTypes
      description: >-
        Retrieves registered json data or redirect url for numberTypes as per the /externalData registration
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/maxResults'
        - $ref: '#/parameters/startIndex'
      security:
        - oauth:
            - complianceapi
      responses:
        '302':
          $ref: '#/responses/found'
        '200':
          schema:
            $ref: '#/definitions/CollectionNumberTypesResponse'
          description: OK
        '405':
          $ref: '#/responses/methodNotAllowed'
        '401':
          $ref: '#/responses/unauthorized'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v3/organizations/{orgId}/compliance/geocodes':
    get:
      tags:
        - Geocodes
      operationId: GetGeocodes
      summary: Get Geocodes
      description: >-
        Retrieves registered json data or redirect url for geocodes as per the /externalData registration
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/maxResults'
        - $ref: '#/parameters/startIndex'
      security:
        - oauth:
            - complianceapi
      responses:
        '302':
          $ref: '#/responses/found'
        '200':
          schema:
            $ref: '#/definitions/CollectionGeocodesResponse'
          description: OK
        '405':
          $ref: '#/responses/methodNotAllowed'
        '401':
          $ref: '#/responses/unauthorized'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v3/organizations/{orgId}/compliance/purposes':
    get:
      tags:
        - Purposes
      operationId: GetPurposes
      summary: Get Purposes
      description: >-
        Retrieves registered json data or redirect url for purposes as per the /externalData registration
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/maxResults'
        - $ref: '#/parameters/startIndex'
      security:
        - oauth:
            - complianceapi
      responses:
        '302':
          $ref: '#/responses/found'
        '200':
          schema:
            $ref: '#/definitions/CollectionPurposesResponse'
          description: OK
        '405':
          $ref: '#/responses/methodNotAllowed'
        '401':
          $ref: '#/responses/unauthorized'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v3/organizations/{orgId}/compliance/contactLists':
    get:
      tags:
        - ContactLists
      operationId: GetContactLists
      summary: Get ContactLists
      description: >-
        Retrieves registered json data or redirect url for contactLists as per the /externalData registration
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/maxResults'
        - $ref: '#/parameters/startIndex'
      security:
        - oauth:
            - complianceapi
      responses:
        '302':
          $ref: '#/responses/found'
        '200':
          schema:
            $ref: '#/definitions/CollectionContactListsResponse'
          description: OK
        '405':
          $ref: '#/responses/methodNotAllowed'
        '401':
          $ref: '#/responses/unauthorized'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v4/organizations/{orgId}/compliance/jobs/exclusionsLoad':
    post:
      tags:
        - Jobs
      operationId: LoadExclusionFile
      summary: Load Exclusion File
      description: >-
        This endpoint accepts a filename of type "act" which contains exclusion details to either create or delete. See "act" file format [here](https://help.aspect.com/go/aspect/aspectvia.inboundoutboundvoice.via20.manager.managermanual.outboundcampaigns.compliancehubguide.exclusion.load.createforupload).
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: exclusionsLoad
          in: body
          description: ''
          required: true
          schema:
            $ref: '#/definitions/exclusionsLoadRequest'
      security:
        - oauth:
            - complianceapi
      responses:
        '202':
          schema:
            $ref: '#/definitions/exclusionsLoadJobResponse'
          description: Accepted
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v4/organizations/{orgId}/compliance/jobs/convenientContactTimesLoad':
    post:
      tags:
        - Jobs
      operationId: LoadConvenientContactTimeFile
      summary: Load Convenient Contact Time File
      description: >-
        This endpoint accepts a filename of type "cct" which contains convenientContactTime details to either create or delete. See "cct" file format [here](https://help.aspect.com/go/aspect/aspectvia.inboundoutboundvoice.via20.manager.managermanual.outboundcampaigns.compliancehubguide.cct.load.creating).
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: convenientContactTimesLoad
          in: body
          description: ''
          required: true
          schema:
            $ref: '#/definitions/convenientContactTimesLoadRequest'
      security:
        - oauth:
            - complianceapi
      responses:
        '202':
          schema:
            $ref: '#/definitions/convenientContactTimesLoadJobResponse'
          description: Accepted
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v4/organizations/{orgId}/compliance/jobs/contactAttemptsLoad':
    post:
      tags:
        - Jobs
      operationId: LoadContactAttemptFile
      summary: Load Contact Attempt File
      description: >-
        This endpoint accepts a filename of type "cet" which contains contact attempts details to create. See "cet" file format [here](https://help.aspect.com/go/aspect/aspectvia.inboundoutboundvoice.via20.manager.managermanual.outboundcampaigns.compliancehubguide.importorexport.chubimp.loadcet).
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: contactAttemptsLoad
          in: body
          description: ''
          required: true
          schema:
            $ref: '#/definitions/contactAttemptsLoadRequest'
      security:
        - oauth:
            - complianceapi
      responses:
        '202':
          schema:
            $ref: '#/definitions/contactAttemptsLoadJobResponse'
          description: Accepted
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v4/organizations/{orgId}/compliance/jobs/{jobId}':
    get:
      tags:
        - Jobs
      operationId: GetJobInstance
      summary: Get Job Instance
      description: >-
        Get the properties for a job instance specified by the job identifier.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - $ref: '#/parameters/jobId'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/ItemJobResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '404':
          $ref: '#/responses/notFoundJob'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v4/organizations/{orgId}/compliance/attemptTrackers/configurations':
    get:
      tags:
        - Configurations
      operationId: GetAttemptTrackerConfigurations
      summary: Get AttemptTracker Configurations
      description: >-
        To get the properties of the AttemptTracker configurations.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/attemptTrackerConfigurationResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    patch:
      tags:
        - Configurations
      operationId: PatchAttemptTrackerConfigurations
      summary: Patch AttemptTracker Configurations
      description: >-
        Modifies the AttemptTracker configuration values
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: configurations
          in: body
          description: 'AttemptTracker configuration details to update'
          required: true
          schema:
            $ref: '#/definitions/attemptTrackerConfigurationPatchRequest'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/attemptTrackerConfigurationResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v4/organizations/{orgId}/compliance/messageTrackers/configurations':
    get:
      tags:
        - Configurations
      operationId: GetMessageTrackerConfigurations
      summary: Get MessageTracker Configurations
      description: >-
        To get the properties of the MessageTracker configurations.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/messageTrackerConfigurationResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    patch:
      tags:
        - Configurations
      operationId: PatchMessageTrackerConfigurations
      summary: Patch MessageTracker Configurations
      description: >-
        Modifies the MessageTracker configuration values
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: configurations
          in: body
          description: 'MessageTracker configuration details to update'
          required: true
          schema:
            $ref: '#/definitions/messageTrackerConfigurationPatchRequest'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/messageTrackerConfigurationResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v4/organizations/{orgId}/compliance/exclusions/configurations':
    get:
      tags:
        - Configurations
      operationId: GetExclusionsConfigurations
      summary: Get Exclusions Configurations
      description: >-
        To get the properties of the Exclusions configurations.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/exclusionConfigurationResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    patch:
      tags:
        - Configurations
      operationId: PatchExclusionConfigurations
      summary: Patch Exclusion Configurations
      description: >-
        Modifies the Exclusion configuration values
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: configurations
          in: body
          description: 'Exclusion configuration details to update'
          required: true
          schema:
            $ref: '#/definitions/exclusionConfigurationPatchRequest'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/exclusionConfigurationResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
  '/via/v4/organizations/{orgId}/compliance/convenientContactTimes/configurations':
    get:
      tags:
        - Configurations
      operationId: GetConvenientContactTimeConfigurations
      summary: Get ConvenientContactTime Configurations
      description: >-
        To get the properties of the ConvenientContactTime configurations.
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/convenientContactTimeConfigurationResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
    patch:
      tags:
        - Configurations
      operationId: PatchConvenientContactTimeConfigurations
      summary: Patch ConvenientContactTime Configurations
      description: >-
        Modifies the ConvenientContactTime configuration values
      parameters:
        - $ref: '#/parameters/orgId'
        - $ref: '#/parameters/authorization'
        - $ref: '#/parameters/x-api-key'
        - name: configurations
          in: body
          description: 'ConvenientContactTime configuration details to update'
          required: true
          schema:
            $ref: '#/definitions/convenientContactTimeConfigurationPatchRequest'
      security:
        - oauth:
            - complianceapi
      responses:
        '200':
          schema:
            $ref: '#/definitions/convenientContactTimeConfigurationResponse'
          description: OK
        '400':
          $ref: '#/responses/badRequest'
        '401':
          $ref: '#/responses/unauthorized'
        '405':
          $ref: '#/responses/methodNotAllowed'
        '408':
          $ref: '#/responses/requestTimeout'
        '409':
          $ref: '#/responses/conflict'
        '415':
          $ref: '#/responses/unsupportedMediaType'
        '429':
          $ref: '#/responses/throttled'
        '500':
          $ref: '#/responses/internalServerError'
securityDefinitions:
  oauth:
    type: oauth2
    authorizationUrl: >-
      https://myaspect.region.id.aspect-cloud.net/tokenservice/oauth2/access_token?realm=orgId
    flow: implicit
    scopes:
      complianceapi: manage the compliance hub resource
definitions:
  CollectionExclusionsResponse:
    type: object
    properties:
      kind:
        $ref: '#/definitions/exKindCollection'
      totalItems:
        $ref: '#/definitions/totalItems'
      links:
        $ref: '#/definitions/linksEx'
      exclusions:
        type: array
        description: Collection of exclusion
        items:
          $ref: '#/definitions/ItemExclusionsResponse'
  ItemExclusionsResponse:
    type: object
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        $ref: '#/definitions/exKind'
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      exclusionType:
        $ref: '#/definitions/exclusionType'
      exclusionValue:
        $ref: '#/definitions/exclusionValue'
      contactListName:
        $ref: '#/definitions/contactListName'
      reason:
        $ref: '#/definitions/reasonEx'
      startTime:
        $ref: '#/definitions/startTime'
      endTime:
        $ref: '#/definitions/endTime'
      creationTime:
        $ref: '#/definitions/creationTime'
      lastModifiedTime:
        $ref: '#/definitions/lastModifiedTime'
      lastModifiedBy:
        $ref: '#/definitions/lastModifiedBy'
  ExclusionsInsertRequest:
    type: object
    required:
      - exclusionType
      - exclusionValue
      - startTime
    properties:
      locale:
        $ref: '#/definitions/locale'
      exclusionType:
        $ref: '#/definitions/exclusionType'
      exclusionValue:
        $ref: '#/definitions/exclusionValue'
      contactListName:
        $ref: '#/definitions/contactListName'
      reason:
        $ref: '#/definitions/reasonEx'
      startTime:
        $ref: '#/definitions/startTime'
      endTime:
        $ref: '#/definitions/endTime'
  ExclusionsUpdateRequest:
    type: object
    required:
      - version
      - exclusionType
      - exclusionValue
      - startTime
    properties:
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      exclusionType:
        $ref: '#/definitions/exclusionType'
      exclusionValue:
        $ref: '#/definitions/exclusionValue'
      contactListName:
        $ref: '#/definitions/contactListName'
      reason:
        $ref: '#/definitions/reasonEx'
      startTime:
        $ref: '#/definitions/startTime'
      endTime:
        $ref: '#/definitions/endTime'
  CollectionAttemptTrackerResponse:
    type: object
    properties:
      kind:
        $ref: '#/definitions/atKindCollection'
      totalItems:
        $ref: '#/definitions/totalItems'
      links:
        $ref: '#/definitions/linksAt'
      attemptTrackers:
        type: array
        description: Collection of attemptTracker
        items:
          $ref: '#/definitions/TerseAttemptTrackersResponse'
  CollectionAttemptTrackerResponseV4:
    type: object
    properties:
      kind:
        $ref: '#/definitions/atKindCollection'
      totalItems:
        $ref: '#/definitions/totalItems'
      links:
        $ref: '#/definitions/linksAt'
      attemptTrackers:
        type: array
        description: Collection of attemptTracker
        items:
          $ref: '#/definitions/TerseAttemptTrackersResponseV4'
  TerseAttemptTrackersResponse:
    type: object
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        $ref: '#/definitions/atKind'
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      attemptTrackerName:
        $ref: '#/definitions/attemptTrackerName'
      attemptTrackerDescription:
        $ref: '#/definitions/attemptTrackerDescription'
      typeOfTracker:
        $ref: '#/definitions/typeOfTracker'
      numberOfAttempts:
        $ref: '#/definitions/numberOfAttempts'
      thresholdType:
        $ref: '#/definitions/thresholdType'
      threshold:
        $ref: '#/definitions/threshold'
      dispositions:
        $ref: '#/definitions/dispositions'
      numberTypes:
        $ref: '#/definitions/numberTypes'
      geocodes:
        $ref: '#/definitions/geocodes'
      purposes:
        $ref: '#/definitions/purposes'
      creationTime:
        $ref: '#/definitions/creationTime'
      lastModifiedTime:
        $ref: '#/definitions/lastModifiedTime'
      lastModifiedBy:
        $ref: '#/definitions/lastModifiedBy'
  TerseAttemptTrackersResponseV4:
    type: object
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        $ref: '#/definitions/atKind'
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      attemptTrackerName:
        $ref: '#/definitions/attemptTrackerName'
      attemptTrackerDescription:
        $ref: '#/definitions/attemptTrackerDescription'
      contactChannels:
        $ref: '#/definitions/contactChannels'
      acrossContactChannels:
        $ref: '#/definitions/acrossContactChannels'
      excludeContactChannels:
        $ref: '#/definitions/excludeContactChannels'
      typeOfTracker:
        $ref: '#/definitions/typeOfTrackerV4'
      numberOfAttempts:
        $ref: '#/definitions/numberOfAttemptsAtV4'
      thresholdType:
        $ref: '#/definitions/thresholdType'
      threshold:
        $ref: '#/definitions/threshold'
      dispositions:
        $ref: '#/definitions/dispositions'
      numberTypes:
        $ref: '#/definitions/numberTypes'
      geocodes:
        $ref: '#/definitions/geocodes'
      purposes:
        $ref: '#/definitions/purposes'
      creationTime:
        $ref: '#/definitions/creationTime'
      lastModifiedTime:
        $ref: '#/definitions/lastModifiedTime'
      lastModifiedBy:
        $ref: '#/definitions/lastModifiedBy'
      enabled:
        $ref: '#/definitions/enabled'
  AttemptTrackersInsertRequest:
    type: object
    required:
      - attemptTrackerName
      - typeOfTracker
      - numberOfAttempts
      - threshold
      - thresholdType
      - dispositions
    properties:
      locale:
        $ref: '#/definitions/locale'
      attemptTrackerName:
        $ref: '#/definitions/attemptTrackerName'
      attemptTrackerDescription:
        $ref: '#/definitions/attemptTrackerDescription'
      typeOfTracker:
        $ref: '#/definitions/typeOfTracker'
      numberOfAttempts:
        $ref: '#/definitions/numberOfAttempts'
      thresholdType:
        $ref: '#/definitions/thresholdType'
      threshold:
        $ref: '#/definitions/threshold'
      dispositions:
        $ref: '#/definitions/dispositions'
      numberTypes:
        $ref: '#/definitions/numberTypes'
      geocodes:
        $ref: '#/definitions/geocodes'
      purposes:
        $ref: '#/definitions/purposes'
  AttemptTrackersInsertRequestV4:
    type: object
    required:
      - attemptTrackerName
      - typeOfTracker
      - numberOfAttempts
      - threshold
      - thresholdType
      - dispositions
    properties:
      locale:
        $ref: '#/definitions/locale'
      attemptTrackerName:
        $ref: '#/definitions/attemptTrackerName'
      attemptTrackerDescription:
        $ref: '#/definitions/attemptTrackerDescription'
      contactChannels:
        $ref: '#/definitions/contactChannels'
      acrossContactChannels:
        $ref: '#/definitions/acrossContactChannels'
      excludeContactChannels:
        $ref: '#/definitions/excludeContactChannels'
      typeOfTracker:
        $ref: '#/definitions/typeOfTrackerV4'
      numberOfAttempts:
        $ref: '#/definitions/numberOfAttemptsAtV4'
      thresholdType:
        $ref: '#/definitions/thresholdType'
      threshold:
        $ref: '#/definitions/threshold'
      dispositions:
        $ref: '#/definitions/dispositions'
      numberTypes:
        $ref: '#/definitions/numberTypes'
      geocodes:
        $ref: '#/definitions/geocodes'
      purposes:
        $ref: '#/definitions/purposes'
      enabled:
        $ref: '#/definitions/enabled'
  AttemptTrackersUpdateRequest:
    type: object
    required:
      - version
      - attemptTrackerName
      - typeOfTracker
      - numberOfAttempts
      - threshold
      - thresholdType
      - dispositions
    properties:
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      attemptTrackerName:
        $ref: '#/definitions/attemptTrackerName'
      attemptTrackerDescription:
        $ref: '#/definitions/attemptTrackerDescription'
      typeOfTracker:
        $ref: '#/definitions/typeOfTracker'
      numberOfAttempts:
        $ref: '#/definitions/numberOfAttempts'
      threshold:
        $ref: '#/definitions/threshold'
      thresholdType:
        $ref: '#/definitions/thresholdType'
      dispositions:
        $ref: '#/definitions/dispositions'
      numberTypes:
        $ref: '#/definitions/numberTypes'
      geocodes:
        $ref: '#/definitions/geocodes'
      purposes:
        $ref: '#/definitions/purposes'
  AttemptTrackersUpdateRequestV4:
    type: object
    required:
      - version
      - attemptTrackerName
      - typeOfTracker
      - numberOfAttempts
      - threshold
      - thresholdType
      - dispositions
    properties:
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      attemptTrackerName:
        $ref: '#/definitions/attemptTrackerName'
      attemptTrackerDescription:
        $ref: '#/definitions/attemptTrackerDescription'
      contactChannels:
        $ref: '#/definitions/contactChannels'
      acrossContactChannels:
        $ref: '#/definitions/acrossContactChannels'
      excludeContactChannels:
        $ref: '#/definitions/excludeContactChannels'
      typeOfTracker:
        $ref: '#/definitions/typeOfTrackerV4'
      numberOfAttempts:
        $ref: '#/definitions/numberOfAttemptsAtV4'
      threshold:
        $ref: '#/definitions/threshold'
      thresholdType:
        $ref: '#/definitions/thresholdType'
      dispositions:
        $ref: '#/definitions/dispositions'
      numberTypes:
        $ref: '#/definitions/numberTypes'
      geocodes:
        $ref: '#/definitions/geocodes'
      purposes:
        $ref: '#/definitions/purposes'
      enabled:
        $ref: '#/definitions/enabled'
  CollectionMessageTrackerResponseV4:
    type: object
    properties:
      kind:
        $ref: '#/definitions/mtKindCollection'
      totalItems:
        $ref: '#/definitions/totalItems'
      links:
        $ref: '#/definitions/linksMt'
      messageTrackers:
        type: array
        description: Collection of messageTracker
        items:
          $ref: '#/definitions/TerseMessageTrackersResponseV4'
  CollectionMessageTrackerResponse:
    type: object
    properties:
      kind:
        $ref: '#/definitions/mtKindCollection'
      totalItems:
        $ref: '#/definitions/totalItems'
      links:
        $ref: '#/definitions/linksMt'
      messageTrackers:
        type: array
        description: Collection of messageTracker
        items:
          $ref: '#/definitions/TerseMessageTrackersResponse'
  TerseMessageTrackersResponse:
    type: object
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        $ref: '#/definitions/mtKind'
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      messageTrackerName:
        $ref: '#/definitions/messageTrackerName'
      messageTrackerDescription:
        $ref: '#/definitions/messageTrackerDescription'
      typeOfTracker:
        $ref: '#/definitions/typeOfTracker'
      numberOfAttempts:
        $ref: '#/definitions/numberOfAttempts'
      threshold:
        $ref: '#/definitions/threshold'
      thresholdType:
        $ref: '#/definitions/thresholdType'
      dispositions:
        $ref: '#/definitions/dispositions'
      numberTypes:
        $ref: '#/definitions/numberTypes'
      geocodes:
        $ref: '#/definitions/geocodes'
      purposes:
        $ref: '#/definitions/purposes'
      creationTime:
        $ref: '#/definitions/creationTime'
      lastModifiedTime:
        $ref: '#/definitions/lastModifiedTime'
      lastModifiedBy:
        $ref: '#/definitions/lastModifiedBy'
  TerseMessageTrackersResponseV4:
    type: object
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        $ref: '#/definitions/mtKind'
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      messageTrackerName:
        $ref: '#/definitions/messageTrackerName'
      messageTrackerDescription:
        $ref: '#/definitions/messageTrackerDescription'
      typeOfTracker:
        $ref: '#/definitions/typeOfTrackerV4'
      numberOfAttempts:
        $ref: '#/definitions/numberOfAttemptsMtV4'
      threshold:
        $ref: '#/definitions/threshold'
      thresholdType:
        $ref: '#/definitions/thresholdType'
      thresholdActionType:
        $ref: '#/definitions/thresholdActionType'
      dispositions:
        $ref: '#/definitions/dispositions'
      numberTypes:
        $ref: '#/definitions/numberTypes'
      geocodes:
        $ref: '#/definitions/geocodes'
      purposes:
        $ref: '#/definitions/purposes'
      creationTime:
        $ref: '#/definitions/creationTime'
      lastModifiedTime:
        $ref: '#/definitions/lastModifiedTime'
      lastModifiedBy:
        $ref: '#/definitions/lastModifiedBy'
      enabled:
        $ref: '#/definitions/enabled'
  MessageTrackersInsertRequest:
    type: object
    required:
      - messageTrackerName
      - typeOfTracker
      - numberOfAttempts
      - threshold
      - thresholdType
      - dispositions
    properties:
      locale:
        $ref: '#/definitions/locale'
      messageTrackerName:
        $ref: '#/definitions/messageTrackerName'
      messageTrackerDescription:
        $ref: '#/definitions/messageTrackerDescription'
      typeOfTracker:
        $ref: '#/definitions/typeOfTracker'
      numberOfAttempts:
        $ref: '#/definitions/numberOfAttempts'
      thresholdType:
        $ref: '#/definitions/thresholdType'
      threshold:
        $ref: '#/definitions/threshold'
      dispositions:
        $ref: '#/definitions/dispositions'
      numberTypes:
        $ref: '#/definitions/numberTypes'
      geocodes:
        $ref: '#/definitions/geocodes'
      purposes:
        $ref: '#/definitions/purposes'
  MessageTrackersInsertRequestV4:
    type: object
    required:
      - messageTrackerName
      - typeOfTracker
      - numberOfAttempts
      - threshold
      - thresholdType
      - thresholdActionType
      - dispositions
    properties:
      locale:
        $ref: '#/definitions/locale'
      messageTrackerName:
        $ref: '#/definitions/messageTrackerName'
      messageTrackerDescription:
        $ref: '#/definitions/messageTrackerDescription'
      typeOfTracker:
        $ref: '#/definitions/typeOfTrackerV4'
      numberOfAttempts:
        $ref: '#/definitions/numberOfAttemptsMtV4'
      thresholdType:
        $ref: '#/definitions/thresholdType'
      threshold:
        $ref: '#/definitions/threshold'
      thresholdActionType:
        $ref: '#/definitions/thresholdActionType'
      dispositions:
        $ref: '#/definitions/dispositions'
      numberTypes:
        $ref: '#/definitions/numberTypes'
      geocodes:
        $ref: '#/definitions/geocodes'
      purposes:
        $ref: '#/definitions/purposes'
      enabled:
        $ref: '#/definitions/enabled'
  MessageTrackersUpdateRequest:
    type: object
    required:
      - version
      - messageTrackerName
      - typeOfTracker
      - numberOfAttempts
      - threshold
      - thresholdType
      - dispositions
    properties:
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      messageTrackerName:
        $ref: '#/definitions/messageTrackerName'
      messageTrackerDescription:
        $ref: '#/definitions/messageTrackerDescription'
      typeOfTracker:
        $ref: '#/definitions/typeOfTracker'
      numberOfAttempts:
        $ref: '#/definitions/numberOfAttempts'
      thresholdType:
        $ref: '#/definitions/thresholdType'
      threshold:
        $ref: '#/definitions/threshold'
      dispositions:
        $ref: '#/definitions/dispositions'
      numberTypes:
        $ref: '#/definitions/numberTypes'
      geocodes:
        $ref: '#/definitions/geocodes'
      purposes:
        $ref: '#/definitions/purposes'
  MessageTrackersUpdateRequestV4:
    type: object
    required:
      - version
      - messageTrackerName
      - typeOfTracker
      - numberOfAttempts
      - threshold
      - thresholdType
      - thresholdActionType
      - dispositions
    properties:
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      messageTrackerName:
        $ref: '#/definitions/messageTrackerName'
      messageTrackerDescription:
        $ref: '#/definitions/messageTrackerDescription'
      typeOfTracker:
        $ref: '#/definitions/typeOfTrackerV4'
      numberOfAttempts:
        $ref: '#/definitions/numberOfAttemptsMtV4'
      thresholdType:
        $ref: '#/definitions/thresholdType'
      threshold:
        $ref: '#/definitions/threshold'
      thresholdActionType:
        $ref: '#/definitions/thresholdActionType'
      dispositions:
        $ref: '#/definitions/dispositions'
      numberTypes:
        $ref: '#/definitions/numberTypes'
      geocodes:
        $ref: '#/definitions/geocodes'
      purposes:
        $ref: '#/definitions/purposes'
      enabled:
        $ref: '#/definitions/enabled'
  CollectionConvenientContactTimeResponse:
    type: object
    properties:
      kind:
        $ref: '#/definitions/ccKindCollection'
      totalItems:
        $ref: '#/definitions/totalItems'
      links:
        $ref: '#/definitions/linksCct'
      convenientContactTimes:
        type: array
        description: Collection of convenientContactTime
        items:
          $ref: '#/definitions/TerseConvenientContactTimesResponse'
  TerseConvenientContactTimesResponse:
    type: object
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        $ref: '#/definitions/ccKind'
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      customer:
        $ref: '#/definitions/customer'
      phone:
        $ref: '#/definitions/phone'
      reason:
        $ref: '#/definitions/reasonCct'
      endTime:
        $ref: '#/definitions/endTime'
      convenientTimes:
        $ref: '#/definitions/convenientTimes'
      creationTime:
        $ref: '#/definitions/creationTime'
      lastModifiedTime:
        $ref: '#/definitions/lastModifiedTime'
      lastModifiedBy:
        $ref: '#/definitions/lastModifiedBy'
  CollectionConvenientContactTimeResponseV4:
    type: object
    properties:
      kind:
        $ref: '#/definitions/ccKindCollection'
      totalItems:
        $ref: '#/definitions/totalItems'
      links:
        $ref: '#/definitions/linksCct'
      convenientContactTimes:
        type: array
        description: Collection of convenientContactTime
        items:
          $ref: '#/definitions/TerseConvenientContactTimesResponseV4'
  TerseConvenientContactTimesResponseV4:
    type: object
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        $ref: '#/definitions/ccKind'
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      contactKeyType:
        $ref: '#/definitions/contactKeyType'
      contactKey:
        $ref: '#/definitions/contactKey'
      contactValueType:
        $ref: '#/definitions/contactValueType'
      contactValue:
        $ref: '#/definitions/contactValue'
      reason:
        $ref: '#/definitions/reasonCct'
      endTime:
        $ref: '#/definitions/endTime'
      convenientTimes:
        $ref: '#/definitions/convenientTimes'
      creationTime:
        $ref: '#/definitions/creationTime'
      lastModifiedTime:
        $ref: '#/definitions/lastModifiedTime'
      lastModifiedBy:
        $ref: '#/definitions/lastModifiedBy'
  ConvenientContactTimesInsertRequest:
    type: object
    required:
      - customer
      - endTime
      - convenientTimes
    properties:
      locale:
        $ref: '#/definitions/locale'
      customer:
        $ref: '#/definitions/customer'
      phone:
        $ref: '#/definitions/phone'
      reason:
        $ref: '#/definitions/reasonCct'
      endTime:
        $ref: '#/definitions/endTime'
      convenientTimes:
        $ref: '#/definitions/convenientTimes'
  ConvenientContactTimesInsertRequestV4:
    type: object
    required:
      - contactKeyType
      - contactKey
      - contactValueType
      - endTime
      - convenientTimes
    properties:
      locale:
        $ref: '#/definitions/locale'
      contactKeyType:
        $ref: '#/definitions/contactKeyType'
      contactKey:
        $ref: '#/definitions/contactKey'
      contactValueType:
        $ref: '#/definitions/contactValueType'
      contactValue:
        $ref: '#/definitions/contactValue'
      reason:
        $ref: '#/definitions/reasonCct'
      endTime:
        $ref: '#/definitions/endTime'
      convenientTimes:
        $ref: '#/definitions/convenientTimes'
  ConvenientContactTimesUpdateRequest:
    type: object
    required:
      - version
      - customer
      - endTime
      - convenientTimes
    properties:
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      customer:
        $ref: '#/definitions/customer'
      phone:
        $ref: '#/definitions/phone'
      reason:
        $ref: '#/definitions/reasonCct'
      endTime:
        $ref: '#/definitions/endTime'
      convenientTimes:
        $ref: '#/definitions/convenientTimes'
  ConvenientContactTimesUpdateRequestV4:
    type: object
    required:
      - version
      - contactKeyType
      - contactKey
      - contactValueType
      - endTime
      - convenientTimes
    properties:
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      contactKeyType:
        $ref: '#/definitions/contactKeyType'
      contactKey:
        $ref: '#/definitions/contactKey'
      contactValueType:
        $ref: '#/definitions/contactValueType'
      contactValue:
        $ref: '#/definitions/contactValue'
      reason:
        $ref: '#/definitions/reasonCct'
      endTime:
        $ref: '#/definitions/endTime'
      convenientTimes:
        $ref: '#/definitions/convenientTimes'
  CollectionQuotaControlsResponse:
    type: object
    properties:
      kind:
        $ref: '#/definitions/qcKindCollection'
      totalItems:
        $ref: '#/definitions/totalItems'
      links:
        $ref: '#/definitions/linksQc'
      quotaControls:
        type: array
        description: Collection of QuotaControl
        items:
          $ref: '#/definitions/TerseQuotaControlsResponse'
  TerseQuotaControlsResponse:
    type: object
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        $ref: '#/definitions/qcKind'
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      product:
        $ref: '#/definitions/product'
      productDescription:
        $ref: '#/definitions/productDescription'
      totalQuota:
        $ref: '#/definitions/totalQuota'
      productSold:
        $ref: '#/definitions/productSold'
      unitValue:
        $ref: '#/definitions/unitValue'
      creationTime:
        $ref: '#/definitions/creationTime'
      lastModifiedTime:
        $ref: '#/definitions/lastModifiedTime'
      lastModifiedBy:
        $ref: '#/definitions/lastModifiedBy'
  QuotaControlsInsertRequest:
    type: object
    required:
      - product
      - totalQuota
      - productSold
      - unitValue
    properties:
      locale:
        $ref: '#/definitions/locale'
      product:
        $ref: '#/definitions/product'
      productDescription:
        $ref: '#/definitions/productDescription'
      totalQuota:
        $ref: '#/definitions/totalQuota'
      productSold:
        $ref: '#/definitions/productSold'
      unitValue:
        $ref: '#/definitions/unitValue'
  QuotaControlsUpdateRequest:
    type: object
    required:
      - version
      - product
      - totalQuota
      - productSold
      - unitValue
    properties:
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      product:
        $ref: '#/definitions/product'
      productDescription:
        $ref: '#/definitions/productDescription'
      totalQuota:
        $ref: '#/definitions/totalQuota'
      productSold:
        $ref: '#/definitions/productSold'
      unitValue:
        $ref: '#/definitions/unitValue'
  ComplianceStatusesInsertRequestV4:
    type: object
    required:
      - contactChannel
      - contactAddress
    properties:
      requiredChecks:
        $ref: '#/definitions/requiredChecks'
      contactChannel:
        $ref: '#/definitions/contactChannelToCheck'
      contactAddress:
        $ref: '#/definitions/contactAddressToCheck'
      customer:
        $ref: '#/definitions/customerToCheck'
      accountNumber:
        $ref: '#/definitions/accountNumberToCheck'
      ssn:
        $ref: '#/definitions/ssnToCheck'
      contactListName:
        $ref: '#/definitions/contactListNameToCheck'
      numberType:
        $ref: '#/definitions/numberTypeToCheck'
      geocodes:
        $ref: '#/definitions/geocodesToCheck'
      purpose:
        $ref: '#/definitions/purposeToCheck'
      timeZone:
        $ref: '#/definitions/timeZoneToCheck'
      product:
        $ref: '#/definitions/productToCheck'
      key:
        $ref: '#/definitions/postKey'
  TerseComplianceStatusesResponse:
    type: object
    properties:
      kind:
        $ref: '#/definitions/csKind'
      restricted:
        $ref: '#/definitions/restricted'
      restrictionType:
        $ref: '#/definitions/restrictionType'
      restrictionStartTime:
        $ref: '#/definitions/restrictionStartTime'
      restrictionEndTime:
        $ref: '#/definitions/restrictionEndTime'
      messageType:
        $ref: '#/definitions/messageType'
      availableQuota:
        $ref: '#/definitions/availableQuota'
      key:
        $ref: '#/definitions/key'
  TerseComplianceStatusesResponseV4:
    type: object
    properties:
      kind:
        $ref: '#/definitions/csKind'
      restricted:
        $ref: '#/definitions/restricted'
      restrictedRuleId:
        $ref: '#/definitions/restrictedRuleId'
      restrictedRuleName:
        $ref: '#/definitions/restrictedRuleName'
      restrictionType:
        $ref: '#/definitions/restrictionTypeV4'
      restrictionStartTime:
        $ref: '#/definitions/restrictionStartTime'
      restrictionEndTime:
        $ref: '#/definitions/restrictionEndTime'
      messageType:
        $ref: '#/definitions/messageTypeV4'
      availableQuota:
        $ref: '#/definitions/availableQuota'
      key:
        $ref: '#/definitions/key'
  TersePostComplianceStatusesResponseV4:
    type: object
    properties:
      kind:
        $ref: '#/definitions/csKind'
      restricted:
        $ref: '#/definitions/restricted'
      restrictedRuleId:
        $ref: '#/definitions/restrictedRuleId'
      restrictedRuleName:
        $ref: '#/definitions/restrictedRuleName'
      restrictionType:
        $ref: '#/definitions/restrictionTypeV4'
      restrictionStartTime:
        $ref: '#/definitions/restrictionStartTime'
      restrictionEndTime:
        $ref: '#/definitions/restrictionEndTime'
      messageType:
        $ref: '#/definitions/messageTypeV4'
      availableQuota:
        $ref: '#/definitions/availableQuota'
      key:
        $ref: '#/definitions/postKey'
  CollectionContactAttemptsResponse:
    type: object
    properties:
      kind:
        $ref: '#/definitions/caKindCollection'
      totalItems:
        $ref: '#/definitions/totalItems'
      links:
        $ref: '#/definitions/linksCa'
      contactAttempts:
        type: array
        description: Collection of contactAttempt
        items:
          $ref: '#/definitions/TerseContactAttemptsResponse'
  CollectionContactAttemptsResponseV4:
    type: object
    properties:
      kind:
        $ref: '#/definitions/caKindCollection'
      totalItems:
        $ref: '#/definitions/totalItems'
      links:
        $ref: '#/definitions/linksCa'
      contactAttempts:
        type: array
        description: Collection of contactAttempts
        items:
          $ref: '#/definitions/TerseContactAttemptsResponseV4'
  TerseContactAttemptsResponse:
    type: object
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        $ref: '#/definitions/caKind'
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      contactChannel:
        $ref: '#/definitions/contactChannel'
      contactAddress:
        $ref: '#/definitions/contactAddress'
      customer:
        $ref: '#/definitions/customer'
      timeOfContact:
        $ref: '#/definitions/timeOfContact'
      timeZone:
        $ref: '#/definitions/timeZone'
      disposition:
        $ref: '#/definitions/disposition'
      numberType:
        $ref: '#/definitions/numberType'
      purpose:
        $ref: '#/definitions/purpose'
      geocodes:
        $ref: '#/definitions/geocodes'
      creationTime:
        $ref: '#/definitions/creationTime'
  TerseContactAttemptsResponseV4:
    type: object
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        $ref: '#/definitions/caKind'
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      contactChannel:
        $ref: '#/definitions/contactChannel'
      contactAddress:
        $ref: '#/definitions/contactAddress'
      customer:
        $ref: '#/definitions/customer'
      accountNumber:
        $ref: '#/definitions/accountNumber'
      timeOfContact:
        $ref: '#/definitions/timeOfContact'
      timeZone:
        $ref: '#/definitions/timeZone'
      disposition:
        $ref: '#/definitions/disposition'
      numberType:
        $ref: '#/definitions/numberType'
      purpose:
        $ref: '#/definitions/purpose'
      geocodes:
        $ref: '#/definitions/geocodes'
      status:
       $ref: '#/definitions/status'
      reason:
       $ref: '#/definitions/reasonCa'
      creationTime:
        $ref: '#/definitions/creationTime'
      lastModifiedTime:
        $ref: '#/definitions/lastModifiedTime'
      lastModifiedBy:
        $ref: '#/definitions/lastModifiedBy'
  ContactAttemptsInsertRequest:
    type: object
    required:
      - contactChannel
      - timeOfContact
      - disposition
      - key
      - numberType
    properties:
      locale:
        $ref: '#/definitions/locale'
      contactChannel:
        $ref: '#/definitions/contactChannel'
      contactAddress:
        $ref: '#/definitions/contactAddress'
      customer:
        $ref: '#/definitions/customer'
      timeOfContact:
        $ref: '#/definitions/timeOfContact'
      key:
        $ref: '#/definitions/key'
      timeZone:
        $ref: '#/definitions/timeZone'
      disposition:
        $ref: '#/definitions/disposition'
      numberType:
        $ref: '#/definitions/numberType'
      purpose:
        $ref: '#/definitions/purpose'
      geocodes:
        $ref: '#/definitions/geocodes'
      product:
        $ref: '#/definitions/productCa'
      productSold:
        $ref: '#/definitions/productSoldCa'
  ContactAttemptsInsertRequestV4:
    type: object
    required:
      - contactChannel
      - timeOfContact
      - disposition
      - numberType
    properties:
      locale:
        $ref: '#/definitions/locale'
      contactChannel:
        $ref: '#/definitions/contactChannel'
      contactAddress:
        $ref: '#/definitions/contactAddress'
      customer:
        $ref: '#/definitions/customer'
      accountNumber:
        $ref: '#/definitions/accountNumber'
      timeOfContact:
        $ref: '#/definitions/timeOfContact'
      key:
        $ref: '#/definitions/key'
      timeZone:
        $ref: '#/definitions/timeZone'
      disposition:
        $ref: '#/definitions/disposition'
      numberType:
        $ref: '#/definitions/numberType'
      purpose:
        $ref: '#/definitions/purpose'
      geocodes:
        $ref: '#/definitions/geocodes'
      product:
        $ref: '#/definitions/productCa'
      productSold:
        $ref: '#/definitions/productSoldCa'
      operationType:
        $ref: '#/definitions/operationType'
  ContactAttemptsPatchRequest:
    type: object
    required:
      - version
    properties:
      status:
        $ref: '#/definitions/status'
      reason:
        $ref: '#/definitions/reasonCa'
      version:
        $ref: '#/definitions/version'
  CollectionExternalDataResponse:
    type: object
    properties:
      kind:
        $ref: '#/definitions/rKindCollection'
      totalItems:
        $ref: '#/definitions/totalItems'
      externalData:
        type: array
        description: Collection of ExternalData
        items:
          $ref: '#/definitions/TerseExternalDataResponse'
  TerseExternalDataResponse:
    type: object
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        $ref: '#/definitions/rKind'
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      resource:
        $ref: '#/definitions/resource'
      valueType:
        $ref: '#/definitions/valueType'
      value:
        $ref: '#/definitions/value'
      creationTime:
        $ref: '#/definitions/creationTime'
      lastModifiedTime:
        $ref: '#/definitions/lastModifiedTime'
      lastModifiedBy:
        $ref: '#/definitions/lastModifiedBy'
  CollectionDispositionsResponse:
    type: object
    properties:
      kind:
        type: string
        description: >-
          Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
        example: via#dispositionCollection
      totalItems:
        $ref: '#/definitions/totalItems'
      dispositions:
        type: array
        description: Collection of dispositions
        items:
          $ref: '#/definitions/TerseDispositionsResponse'
  TerseDispositionsResponse:
    type: object
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        type: string
        description: >-
          Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
        example: via#disposition
      friendlyName:
        type: array
        description: Unique descriptive name for this Disposition instance
        items:
          $ref: '#/definitions/DispositionsFriendlyNameResponse'
      dispositionCode:
        type: string
        description: Short code for disposition
        example: CB
  DispositionsFriendlyNameResponse:
    type: object
    required:
      - locale
      - value
    properties:
      locale:
        $ref: '#/definitions/locale'
      value:
        type: string
        description: The Localized value of the Disposition Name.
        example: Service Level Callback
  CollectionNumberTypesResponse:
    type: object
    properties:
      kind:
        type: string
        description: >-
          Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
        example: via#numberTypeCollection
      totalItems:
        $ref: '#/definitions/totalItems'
      numberTypes:
        type: array
        description: Collection of number types
        items:
          $ref: '#/definitions/TerseNumberTypesResponse'
  TerseNumberTypesResponse:
    type: object
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        type: string
        description: >-
          Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
        example: via#numberType
      friendlyName:
        type: array
        description: Unique descriptive name for this NumberType instance
        items:
          $ref: '#/definitions/NumberTypesFriendlyNameResponse'
      numberTypeCode:
        type: integer
        description: Number type code
        example: 1
  NumberTypesFriendlyNameResponse:
    type: object
    required:
      - locale
      - value
    properties:
      locale:
        $ref: '#/definitions/locale'
      value:
        type: string
        description: The Localized value of the NumberType Name.
        example: HomePhone
  CollectionGeocodesResponse:
    type: object
    properties:
      kind:
        type: string
        description: >-
          Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
        example: via#geocodeCollection
      totalItems:
        $ref: '#/definitions/totalItems'
      geocodes:
        type: array
        description: Collection of geocode name
        items:
          $ref: '#/definitions/TerseGeocodesResponse'
  TerseGeocodesResponse:
    type: object
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        type: string
        description: >-
          Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
        example: via#geocode
      friendlyName:
        type: array
        description: Unique descriptive name for this Geocode instance
        items:
          $ref: '#/definitions/GeocodesFriendlyNameResponse'
  GeocodesFriendlyNameResponse:
    type: object
    required:
      - locale
      - value
    properties:
      locale:
        $ref: '#/definitions/locale'
      value:
        type: string
        description: The Localized value of the Geocode name.
        example: US
  CollectionPurposesResponse:
    type: object
    properties:
      kind:
        type: string
        description: >-
          Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
        example: via#purposeCollection
      totalItems:
        $ref: '#/definitions/totalItems'
      purposes:
        type: array
        description: Collection of purposes
        items:
          $ref: '#/definitions/TersePurposesResponse'
  TersePurposesResponse:
    type: object
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        type: string
        description: >-
          Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
        example: via#purpose
      friendlyName:
        type: array
        description: Unique descriptive name for this Purpose instance
        items:
          $ref: '#/definitions/PurposesFriendlyNameResponse'
  PurposesFriendlyNameResponse:
    type: object
    required:
      - locale
      - value
    properties:
      locale:
        $ref: '#/definitions/locale'
      value:
        type: string
        description: The Localized value of the Purpose Name.
        example: TeleMarketing Purpose
  CollectionContactListsResponse:
    type: object
    properties:
      kind:
        type: string
        description: >-
          Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
        example: via#contactListCollection
      totalItems:
        $ref: '#/definitions/totalItems'
      contactLists:
        type: array
        description: Collection of contactLists
        items:
          $ref: '#/definitions/TerseContactListsResponse'
  TerseContactListsResponse:
    type: object
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        type: string
        description: >-
          Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
        example: via#contactList
      friendlyName:
        type: array
        description: Unique descriptive name for this Purpose instance
        items:
          $ref: '#/definitions/ContactListsFriendlyNameResponse'
  ContactListsFriendlyNameResponse:
    type: object
    required:
      - locale
      - value
    properties:
      locale:
        $ref: '#/definitions/locale'
      value:
        type: string
        description: The Localized value of the ContactList Name.
        example: CreditCardList
  exclusionsLoadRequest:
    type: object
    required:
      - fileName
    properties:
      fileName:
        $ref: '#/definitions/ExLoadFilename'
      errorResponseType:
        $ref: '#/definitions/ErrorResponseType'
  convenientContactTimesLoadRequest:
    type: object
    required:
      - fileName
    properties:
      fileName:
        $ref: '#/definitions/CCTLoadFilename'
      errorResponseType:
        $ref: '#/definitions/ErrorResponseType'
  contactAttemptsLoadRequest:
    type: object
    required:
      - fileName
    properties:
      fileName:
        $ref: '#/definitions/CETLoadFilename'
      errorResponseType:
        $ref: '#/definitions/ErrorResponseType'
  exclusionsLoadJobResponse:
    type: object
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        type: string
        description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
        example: via#exclusionsLoadJob
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      uri:
        $ref: '#/definitions/uri'
      creationTime:
        $ref: '#/definitions/creationTime'
      lastModifiedTime:
        $ref: '#/definitions/lastModifiedTime'
      lastModifiedBy:
        $ref: '#/definitions/lastModifiedBy'
  convenientContactTimesLoadJobResponse:
    type: object
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        type: string
        description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
        example: via#convenientContactTimesLoadJob
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      uri:
        $ref: '#/definitions/uri'
      creationTime:
        $ref: '#/definitions/creationTime'
      lastModifiedTime:
        $ref: '#/definitions/lastModifiedTime'
      lastModifiedBy:
        $ref: '#/definitions/lastModifiedBy'
  contactAttemptsLoadJobResponse:
    type: object
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        type: string
        description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
        example: via#contactAttemptsLoadJob
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      uri:
        $ref: '#/definitions/uri'
      creationTime:
        $ref: '#/definitions/creationTime'
      lastModifiedTime:
        $ref: '#/definitions/lastModifiedTime'
      lastModifiedBy:
        $ref: '#/definitions/lastModifiedBy'
  attemptTrackerConfigurationResponse:
    type: object
    properties:
      kind:
        $ref: '#/definitions/atConfKind'
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      excludeFromContactAddressRule:
        $ref: '#/definitions/excludeFromContactAddressRuleAT'
      excludedContactAddresses:
        $ref: '#/definitions/excludedContactAddressesAT'
      enableActiveRecordFeature:
        $ref: '#/definitions/enableActiveRecordFeature'
      lifeTimeOfActiveRecord:
        $ref: '#/definitions/lifeTimeOfActiveRecord'
      minutesToWaitAfterActiveRestriction:
        $ref: '#/definitions/minutesToWaitAfterActiveRestriction'
      lastModifiedTime:
        $ref: '#/definitions/lastModifiedTime'
      lastModifiedBy:
        $ref: '#/definitions/lastModifiedBy'
  attemptTrackerConfigurationPatchRequest:
    type: object
    required:
      - version
    properties:
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      excludeFromContactAddressRule:
        $ref: '#/definitions/excludeFromContactAddressRuleAT'
      excludedContactAddresses:
        $ref: '#/definitions/excludedContactAddressesAT'
      enableActiveRecordFeature:
        $ref: '#/definitions/enableActiveRecordFeature'
      lifeTimeOfActiveRecord:
        $ref: '#/definitions/lifeTimeOfActiveRecord'
      minutesToWaitAfterActiveRestriction:
        $ref: '#/definitions/minutesToWaitAfterActiveRestriction'
  messageTrackerConfigurationResponse:
    type: object
    properties:
      kind:
        $ref: '#/definitions/mtConfKind'
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      excludeFromContactAddressRule:
        $ref: '#/definitions/excludeFromContactAddressRuleMT'
      excludedContactAddresses:
        $ref: '#/definitions/excludedContactAddressesMT'
      lastModifiedTime:
        $ref: '#/definitions/lastModifiedTime'
      lastModifiedBy:
        $ref: '#/definitions/lastModifiedBy'
  messageTrackerConfigurationPatchRequest:
    type: object
    required:
      - version
    properties:
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      excludeFromContactAddressRule:
        $ref: '#/definitions/excludeFromContactAddressRuleMT'
      excludedContactAddresses:
        $ref: '#/definitions/excludedContactAddressesMT'
  exclusionConfigurationResponse:
    type: object
    properties:
      kind:
        $ref: '#/definitions/exConfKind'
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      retainDays:
        $ref: '#/definitions/retainDays'
      retainNoEndTime:
        $ref: '#/definitions/retainNoEndTime'
      lastModifiedTime:
        $ref: '#/definitions/lastModifiedTime'
      lastModifiedBy:
        $ref: '#/definitions/lastModifiedBy'
  exclusionConfigurationPatchRequest:
    type: object
    required:
      - version
    properties:
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      retainDays:
        $ref: '#/definitions/retainDays'
      retainNoEndTime:
        $ref: '#/definitions/retainNoEndTime'
  convenientContactTimeConfigurationResponse:
    type: object
    properties:
      kind:
        $ref: '#/definitions/cctConfKind'
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      retainDays:
        $ref: '#/definitions/retainDaysCCT'
      lastModifiedTime:
        $ref: '#/definitions/lastModifiedTime'
      lastModifiedBy:
        $ref: '#/definitions/lastModifiedBy'
  convenientContactTimeConfigurationPatchRequest:
    type: object
    required:
      - version
      - retainDays
    properties:
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      retainDays:
        $ref: '#/definitions/retainDaysCCT'
  jobKind:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    example: via#job
  ItemJobResponse:
    type: object
    required:
      - id
      - jobType
      - jobState
      - stats
    properties:
      id:
        $ref: '#/definitions/id'
      kind:
        $ref: '#/definitions/jobKind'
      version:
        $ref: '#/definitions/version'
      locale:
        $ref: '#/definitions/locale'
      jobType:
        $ref: '#/definitions/JobType'
      fileName:
        $ref: '#/definitions/FileName'
      jobState:
        $ref: '#/definitions/JobState'
      message:
        type: string
        description: Job status message
        example: Completed with error.
      stats:
        type: object
        required:
          - processed
          - added
          - updated
          - deleted
          - failures
          - duplicates
        properties:
          processed:
            type: integer
            description: Number of records processed from the file.
            example: 100
          added:
            type: integer
            description: Number of records added.
            example: 50
          updated:
            type: integer
            description: Number of records updated.
            example: 30
          deleted:
            type: integer
            description: Number of records deleted.
            example: 10
          failures:
            type: integer
            description: Number of records failed due to error or by the invalid format. If the count is greater than zero, then download the error file to get failure details to correct and retry the load.
            example: 5
          duplicates:
            type: integer
            description: Number of duplicate records. Already existing data or the same data in file.
            example: 5
      errorFileName:
        $ref: '#/definitions/ErrorFile'
      creationTime:
        $ref: '#/definitions/creationTime'
      lastModifiedTime:
        $ref: '#/definitions/lastModifiedTime'
      lastModifiedBy:
        $ref: '#/definitions/lastModifiedBy'
  JobType:
    type: string
    enum:
      - ExclusionsLoad
      - ConvenientContactTimesLoad
      - ContactAttemptsLoad
    description: Job Type.
    example: ExclusionsLoad
  FileName:
    type: string
    description: File name of load/import/export job.
    example: Exclusions.act
  JobState:
    type: string
    enum:
      - Pending
      - Running
      - Completed
      - Failed
    description: Job State.
    example: Completed
  ErrorResponse400:
    type: object
    properties:
      error:
        $ref: '#/definitions/ErrorResponseObj400'
  ErrorResponseObj400:
    type: object
    properties:
      code:
        type: integer
        description: Error code
        example: 400
      message:
        type: string
        description: Error message
        example: Bad Request
      errors:
        type: array
        items:
          $ref: '#/definitions/ErrorResponseItem'
  ErrorResponse409:
    type: object
    properties:
      error:
        $ref: '#/definitions/ErrorResponseObj409'
  ErrorResponseObj409:
    type: object
    properties:
      code:
        type: integer
        description: Error code
        example: 409
      message:
        type: string
        description: Error message
        example: Conflict
      errors:
        type: array
        items:
          $ref: '#/definitions/ErrorResponseItem'
  ErrorResponse405:
    type: object
    properties:
      error:
        $ref: '#/definitions/ErrorResponseObj405'
  ErrorResponseObj405:
    type: object
    properties:
      code:
        type: integer
        description: Error code
        example: 405
      message:
        type: string
        description: Error message
        example: Method Not Allowed
      errors:
        type: array
        items:
          $ref: '#/definitions/ErrorResponseItem'
  ErrorResponse408:
    type: object
    properties:
      error:
        $ref: '#/definitions/ErrorResponseObj408'
  ErrorResponseObj408:
    type: object
    properties:
      code:
        type: integer
        description: Error code
        example: 408
      message:
        type: string
        description: Error message
        example: Request Timeout
      errors:
        type: array
        items:
          $ref: '#/definitions/ErrorResponseItem'
  ErrorResponse415:
    type: object
    properties:
      error:
        $ref: '#/definitions/ErrorResponseObj415'
  ErrorResponseObj415:
    type: object
    properties:
      code:
        type: integer
        description: Error code
        example: 415
      message:
        type: string
        description: Error message
        example: Unsupported Media Type
      errors:
        type: array
        items:
          $ref: '#/definitions/ErrorResponseItem'
  ErrorResponse429:
    type: object
    properties:
      error:
        $ref: '#/definitions/ErrorResponseObj429'
  ErrorResponseObj429:
    type: object
    properties:
      code:
        type: integer
        description: Error code
        example: 429
      message:
        type: string
        description: Error message
        example: Throttled
      errors:
        type: array
        items:
          $ref: '#/definitions/ErrorResponseItem'
  ErrorResponse500:
    type: object
    properties:
      error:
        $ref: '#/definitions/ErrorResponseObj500'
  ErrorResponseObj500:
    type: object
    properties:
      code:
        type: integer
        description: Error code
        example: 500
      message:
        type: string
        description: Error message
        example: Internal Server Error
      errors:
        type: array
        items:
          $ref: '#/definitions/ErrorResponseItem'
  ErrorResponse404:
    type: object
    properties:
      error:
        $ref: '#/definitions/ErrorResponseObj404'
  ErrorResponseObj404:
    type: object
    properties:
      code:
        type: integer
        description: Error code
        example: 404
      message:
        type: string
        description: Error message
        example: Not Found
      errors:
        type: array
        items:
          $ref: '#/definitions/ErrorResponseItem'
  ErrorResponseItem:
    type: object
    properties:
      scope:
        type: string
        description: Scope of the error
        example: scope
      reason:
        type: string
        description: Reason for failure
        example: reason
      message:
        type: string
        description: Message associated with failure
        example: message
  linksEx:
    type: object
    properties:
      first:
        type: string
        description: Link to first page
        example: /via/v3/organizations/orgId/compliance/exclusions?startIndex=0&maxResults=5
      last:
        type: string
        description: Link to last page
        example: /via/v3/organizations/orgId/compliance/exclusions?startIndex=30&maxResults=5
      next:
        type: string
        description: Link to next page
        example: /via/v3/organizations/orgId/compliance/exclusions?startIndex=10&maxResults=5
      prev:
        type: string
        description: Link to previous page
        example: /via/v3/organizations/orgId/compliance/exclusions?startIndex=0&maxResults=5
  linksAt:
    type: object
    properties:
      first:
        type: string
        description: Link to first page
        example: /via/v3/organizations/orgId/compliance/attemptTrackers?startIndex=0&maxResults=5
      last:
        type: string
        description: Link to last page
        example: /via/v3/organizations/orgId/compliance/attemptTrackers?startIndex=30&maxResults=5
      next:
        type: string
        description: Link to next page
        example: /via/v3/organizations/orgId/compliance/attemptTrackers?startIndex=10&maxResults=5
      prev:
        type: string
        description: Link to previous page
        example: /via/v3/organizations/orgId/compliance/attemptTrackers?startIndex=0&maxResults=5
  linksMt:
    type: object
    properties:
      first:
        type: string
        description: Link to first page
        example: /via/v3/organizations/orgId/compliance/messageTrackers?startIndex=0&maxResults=5
      last:
        type: string
        description: Link to last page
        example: /via/v3/organizations/orgId/compliance/messageTrackers?startIndex=30&maxResults=5
      next:
        type: string
        description: Link to next page
        example: /via/v3/organizations/orgId/compliance/messageTrackers?startIndex=10&maxResults=5
      prev:
        type: string
        description: Link to previous page
        example: /via/v3/organizations/orgId/compliance/messageTrackers?startIndex=0&maxResults=5
  linksCct:
    type: object
    properties:
      first:
        type: string
        description: Link to first page
        example: /via/v3/organizations/orgId/compliance/convenientContactTimes?startIndex=0&maxResults=5
      last:
        type: string
        description: Link to last page
        example: /via/v3/organizations/orgId/compliance/convenientContactTimes?startIndex=30&maxResults=5
      next:
        type: string
        description: Link to next page
        example: /via/v3/organizations/orgId/compliance/convenientContactTimes?startIndex=10&maxResults=5
      prev:
        type: string
        description: Link to previous page
        example: /via/v3/organizations/orgId/compliance/convenientContactTimes?startIndex=0&maxResults=5
  linksQc:
    type: object
    properties:
      first:
        type: string
        description: Link to first page
        example: /via/v3/organizations/orgId/compliance/quotaControls?startIndex=0&maxResults=5
      last:
        type: string
        description: Link to last page
        example: /via/v3/organizations/orgId/compliance/quotaControls?startIndex=30&maxResults=5
      next:
        type: string
        description: Link to next page
        example: /via/v3/organizations/orgId/compliance/quotaControls?startIndex=10&maxResults=5
      prev:
        type: string
        description: Link to previous page
        example: /via/v3/organizations/orgId/compliance/quotaControls?startIndex=0&maxResults=5
  linksCa:
    type: object
    properties:
      first:
        type: string
        description: Link to first page
        example: /via/v3/organizations/orgId/compliance/contactAttempts?startIndex=0&maxResults=5
      last:
        type: string
        description: Link to last page
        example: /via/v3/organizations/orgId/compliance/contactAttempts?startIndex=30&maxResults=5
      next:
        type: string
        description: Link to next page
        example: /via/v3/organizations/orgId/compliance/contactAttempts?startIndex=10&maxResults=5
      prev:
        type: string
        description: Link to previous page
        example: /via/v3/organizations/orgId/compliance/contactAttempts?startIndex=0&maxResults=5
  id:
    type: string
    description: Alvaria-generated unique identifier for the entity instance
    minLength: 1
    maxLength: 64
    example: 99f31b29-b522-4203-beb4-60f2c714f473
  exKind:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    minLength: 1
    maxLength: 64
    example: via#exclusion
  exKindCollection:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    minLength: 1
    maxLength: 64
    example: via#exclusionCollection
  atKind:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    minLength: 1
    maxLength: 64
    example: via#attemptTracker
  atKindCollection:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    minLength: 1
    maxLength: 64
    example: via#attemptTrackerCollection
  mtKind:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    minLength: 1
    maxLength: 64
    example: via#messageTracker
  mtKindCollection:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    minLength: 1
    maxLength: 64
    example: via#messageTrackerCollection
  ccKind:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    minLength: 1
    maxLength: 64
    example: via#convenientContactTime
  ccKindCollection:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    minLength: 1
    maxLength: 64
    example: via#convenientContactTimeCollection
  qcKind:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    minLength: 1
    maxLength: 64
    example: via#quotaControl
  qcKindCollection:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    minLength: 1
    maxLength: 64
    example: via#quotaControlCollection
  csKind:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    minLength: 1
    maxLength: 64
    example: via#complianceStatus
  caKindCollection:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    minLength: 1
    maxLength: 64
    example: via#contactAttemptCollection
  caKind:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    minLength: 1
    maxLength: 64
    example: via#contactAttempt
  rKind:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    minLength: 1
    maxLength: 64
    example: via#redirect
  rKindCollection:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    minLength: 1
    maxLength: 64
    example: via#redirectCollection
  atConfKind:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    minLength: 1
    maxLength: 64
    example: via#attemptTrackerConfiguration
  mtConfKind:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    minLength: 1
    maxLength: 64
    example: via#messageTrackerConfiguration
  exConfKind:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    minLength: 1
    maxLength: 64
    example: via#exclusionConfiguration
  cctConfKind:
    type: string
    description: Identifier used by Alvaria&trade; Cloud components to serialize the payload of the results
    minLength: 1
    maxLength: 64
    example: via#convenientContactTimeConfiguration
  totalItems:
    type: integer
    description: >-
      Total number of entity instances returned in the results. This property indicates the total number of records in the result set. The client can use this value to determine how many calls will be required to navigate through the entire result set
    example: 35
  attemptTrackerName:
    description: Name of attemptTracker rule.
    type: string
    minLength: 1
    maxLength: 64
    example : OneAttemptPerDay
  messageTrackerName:
    description: Name of messageTracker rule.
    type: string
    minLength: 1
    maxLength: 64
    example : DonotPlayMessage
  attemptTrackerDescription:
    description: Description about the attemptTracker.
    type: string
    minLength: 0
    maxLength: 256
    example : Allow only one attempt per day
  messageTrackerDescription:
    description: Description about the messageTracker.
    type: string
    minLength: 0
    maxLength: 256
    example : Allowed to play message once in a day
  version:
    description: Version of the entity
    type: integer
    example : 12
  creationTime:
    type: string
    description: Date and time the object instance was created.
    format: date-time
    example: 2020-08-01T23:20:50Z
  uri:
    type: string
    description: URI to get the status of the job.
    minLength: 1
    maxLength: 256
    example: /via/v4/organizations/orgId/compliance/jobs/99f31b29-b522-4203-beb4-60f2c714f473
  lastModifiedTime:
    type: string
    description: Date and time of the most recent change to the instance.
    format: date-time
    example: 2020-08-01T23:20:50Z
  lastModifiedBy:
    type: string
    description: User that last changed the instance.
    minLength: 1
    maxLength: 255
    example: jose@alvaria.com
  ErrorFile:
    type: string
    description: Job error file with the details of the failure records. The file can be downloaded from the media storage path 'exports/compliance/audit' using the mediaStorage endpoint.
    example: 99f31b29-b522-4203-beb4-60f2c714f473.json
  reasonEx:
    type: string
    description: Reason for creating or modifying the exclusion instance.
    minLength: 0
    maxLength: 256
    example: Customer is not available
  reasonCct:
    type: string
    description: Reason for creating or modifying the convenientContactTime instance.
    minLength: 0
    maxLength: 256
    example: Customer is available
  reasonCa:
    type: string
    description: Reason for disabling contact Attempt.
    minLength: 0
    maxLength: 256
    example: Contact by mistake
  status:
    type: string
    enum:
    - Enabled
    - Disabled
    description: Status of a contact attempt.
    example: Enabled
  endTime:
    type: string
    description: Specifies when a rule becomes inactive. The rule is deactivated at the specified date and time. Use null if there is no expiry time for the rule
    format: date-time
    example: 2020-08-01T23:20:50Z
  exclusionType:
    type: string
    enum:
    - Account
    - Voice
    - Email
    - SMS
    - SSN
    description: Exclusion Type
    example: Account
  exclusionValue:
    type: string
    description: Value for exclusion. This can be account number or phone number or sms or email or ssn(a custom exclusion number)
    minLength: 1
    maxLength: 255
    example: 91-99994532
  contactListName:
    type: string
    description: >-
      Name of a contact list. If this is empty, the exclusion apply to all lists. The valid contact list names can retrieve using GET /compliance/contactLists endpoint
    minLength: 0
    maxLength: 256
    example: CreditCardList
  startTime:
    type: string
    description: Exclusion start time
    format: date-time
    example: 2020-08-01T23:20:50Z
  typeOfTracker:
    type: string
    enum:
    - Customer
    - Phone
    - CustomerPhone
    description: Rule type
    example: Customer
  typeOfTrackerV4:
    type: string
    enum:
    - Customer
    - ContactAddress
    - CustomerContactAddress
    - Account
    - AccountContactAddress
    description: Rule type
    example: Account
  numberOfAttempts:
    type: integer
    description: Allowed number of attempts.
    minimum: 1
    maximum: 999
    example: 10
  numberOfAttemptsAtV4:
    type: integer
    description: Allowed number of attempts. 0 means attempts will be blocked without considering contactAttempts count.
    minimum: 0
    maximum: 999
    example: 10
  numberOfAttemptsMtV4:
    type: integer
    description: Allowed number of attempts. 0 means prevent playing IVR message without considering contactAttempts count.
    minimum: 0
    maximum: 999
    example: 10
  threshold:
    type: integer
    description: Threshold value based on thresholdType
    minimum: 0
    maximum: 1440
    example: 3
  thresholdType:
    type: string
    enum:
    - Minute
    - Hour
    - Day
    - Week
    - CurrentDay
    - CurrentWeek
    - CurrentMonth
    description: Threshold type of this rule. The day and week related rules will count contact attempts from 12:00AM of the given timezone
    example: Day
  thresholdActionType:
    type: string
    enum:
    - NoPlayMessage
    - PlayStandardMessage
    description: Threshold action type of this rule (For future use.  Use NoPlayMessage until the use of this feature is implemented)
    example: NoPlayMessage
  disposition:
    type: string
    description: Disposition name
    minLength: 1
    maxLength: 64
    example: BZ
  numberType:
    type: integer
    description: NumberType code
    example: 1
  purpose:
    type: string
    description: Purpose name
    minLength: 1
    maxLength: 64
    example: TeleMarketing
  dispositions:
    type: array
    description: Unique disposition list. Full list of values can retrieve from GET /compliance/dispositions endpoint
    items:
      type: string
      minLength: 1
      maxLength: 64
    example: ['BZ','C1']
  numberTypes:
    type: array
    description: Unique numberType list. Full list of values can retrieve from GET /compliance/numberTypes endpoint
    items:
      type: integer
    example: [1,2]
  geocodes:
    type: array
    description: Unique geocode list. Full list of values can retrieve from GET /compliance/geocodes endpoint
    items:
      type: string
      minLength: 1
      maxLength: 64
    example: ['USA','US']
  purposes:
    type: array
    description: Unique purpose list. Full list of values can retrieve from GET /compliance/purposes endpoint
    items:
      type: string
      minLength: 1
      maxLength: 64
    example: ['TeleMarketing','General']
  contactChannels:
    type: array
    description: Exclude or include the list of unique contact channels based on the excludeContactChannels value.
    items:
      $ref: '#/definitions/contactChannel'
    example: ['Voice']
  acrossContactChannels:
    type: boolean
    description: If true the rule will be evaluated across all the channels mentioned in contactChannels. If false the rule will be evaluated within the selected list of channels in contactChannels.
    default: false
    example: false
  excludeContactChannels:
    type: boolean
    description: If true the contact channels specified in contactChannels are excluded from the evaluation. If false the contact channels specified in contactChannels are included from the evaluation. contactChannels should not be empty if set as false.
    default: false
    example: false
  enabled:
    description: Indicates whether the rule is enabled or not. If disabled, the rule will not be considered for compliance checks.
    type: boolean
    default: true
    example: true
  customer:
    type: string
    description: Customer name
    minLength: 0
    maxLength: 255
    example: CUST01
  accountNumber:
    type: string
    description: AccountNumber
    minLength: 0
    maxLength: 255
    example: '1010100'
  operationType:
    type: string
    enum:
      - CancelContact
      - SaveContactNoKeyCheck
      - SaveContactWithKeyCheck
    description: Type of operations to be performed in this request. Default is SaveContactWithKeyCheck. CancelContact - Do not save ContactAttempt and delete the active record for the given key if its valid. SaveContactNoKeyCheck - Save ContactAttempt without an active record key validate and delete. SaveContactWithKeyCheck - Save ContactAttempt and delete the active record for the given key if its valid.
    example: CancelContact
  phone:
    type: string
    description: Phone number
    minLength: 0
    maxLength: 255
    example: 91-655712335
  convenientTime:
    type: object
    required:
      - dayOfWeek
      - startTime
      - endTime
    properties:
      dayOfWeek:
        type: array
        description: Day of week
        items:
          $ref: '#/definitions/dayOfWeekEnum'
        example: ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
      startTime:
        type: string
        description: Convenient contact start time
        format: hh:mm
        example: '10:00'
      endTime:
        type: string
        description: Convenient contact end time
        format: hh:mm
        example: '17:00'
  dayOfWeekEnum:
    type: string
    enum:
      - Monday
      - Tuesday
      - Wednesday
      - Thursday
      - Friday
      - Saturday
      - Sunday
  convenientTimes:
    type: array
    description: convenient Time list
    items:
      $ref: '#/definitions/convenientTime'
  contactKey:
    type: string
    description: A customer or an account number
    minLength: 1
    maxLength: 255
    example: CUST01
  contactKeyType:
    type: string
    enum:
    - Customer
    - Account
    description: Type of contact key
    example: Customer
  contactValue:
    type: string
    description: A phone number or email address.  Value must be empty for contactValueType of 'All'.
    minLength: 0
    maxLength: 255
    example: 91-655712335
  contactValueType:
    type: string
    enum:
    - Voice
    - Email
    - SMS
    - All
    description: Type of contact value
    example: Voice
  product:
    type: string
    description: Product name used for quotaControl
    example: Alvaria Cloud
    minLength: 1
    maxLength: 256
  productDescription:
    type: string
    description: Product description
    minLength: 0
    maxLength: 256
    example: Contact Center Solutions
  totalQuota:
    type: integer
    description: Total allowed quota for sale.
    minimum: 0
    maximum: 99000000
    example: 100
  productSold:
    type: integer
    description: Number of products sold
    minimum: 0
    maximum: 99000000
    example: 50
  unitValue:
    type: integer
    description: Unit price in respective currency
    minimum: 0
    maximum: 2147483647
    example: 200
  availableQuota:
    type: integer
    description: Available quota for the specified product name
    minimum: 0
    maximum: 99000000
    example: 50
  productCa:
    type: string
    description: >-
      Product name used for quotaControl. This won't persist in contactAttempts record, instead total quota in quotaControl rule for this product will get decrement as per productSold
    minLength: 0
    maxLength: 256
    example: Alvaria Cloud
  productSoldCa:
    type: integer
    description: >-
      Product quantity sold. This quantity sold will decrement from total quota in quotaControl rule for the product mentioned in product property. This won't persist in contactAttempts record
    minimum: 0
    maximum: 99000000
    example: 50
  restricted:
    type: boolean
    description: True if record is not allowed to be contacted else false
    example: true
  restrictionType:
    type: string
    enum:
    - ExclusionAccount
    - ExclusionVoice
    - ExclusionEmail
    - ExclusionSMS
    - ExclusionSSN
    - ConvenientContactTimeCustomer
    - ConvenientContactTimePhone
    - AttemptTrackerCustomer
    - AttemptTrackerPhone
    - AttemptTrackerCustomerPhone
    - QuotaExhausted
    description: Type of restriction
    example: AttemptTrackerCustomer
  restrictionTypeV4:
    type: string
    enum:
    - ExclusionAccount
    - ExclusionVoice
    - ExclusionEmail
    - ExclusionSMS
    - ExclusionSSN
    - ConvenientContactTimeCustomer
    - ConvenientContactTimeCustomerVoice
    - ConvenientContactTimeCustomerNoVoice
    - ConvenientContactTimeCustomerSMS
    - ConvenientContactTimeCustomerNoSMS
    - ConvenientContactTimeCustomerEmail
    - ConvenientContactTimeCustomerNoEmail
    - ConvenientContactTimeAccount
    - ConvenientContactTimeAccountVoice
    - ConvenientContactTimeAccountNoVoice
    - ConvenientContactTimeAccountSMS
    - ConvenientContactTimeAccountNoSMS
    - ConvenientContactTimeAccountEmail
    - ConvenientContactTimeAccountNoEmail
    - AttemptTrackerCustomerVoice
    - AttemptTrackerContactAddressVoice
    - AttemptTrackerCustomerContactAddressVoice
    - AttemptTrackerAccountVoice
    - AttemptTrackerAccountContactAddressVoice
    - AttemptTrackerCustomerSMS
    - AttemptTrackerContactAddressSMS
    - AttemptTrackerCustomerContactAddressSMS
    - AttemptTrackerAccountSMS
    - AttemptTrackerAccountContactAddressSMS
    - AttemptTrackerCustomerEmail
    - AttemptTrackerContactAddressEmail
    - AttemptTrackerCustomerContactAddressEmail
    - AttemptTrackerAccountEmail
    - AttemptTrackerAccountContactAddressEmail
    - QuotaExhausted
    - AttemptTrackerBlockContactAddress
    - AttemptTrackerBlockCustomer
    - AttemptTrackerBlockAccount
    description: Type of restriction
    example: AttemptTrackerAccountContactAddressVoice
  restrictionStartTime:
    type: string
    description: Applicable when record is not restricted and any configured exclusion starts or convenientContactTime ends in future
    format: date-time
    example: 2020-08-01T23:20:50Z
  restrictionEndTime:
    type: string
    description: When the restriction of this record will end
    format: date-time
    example: 2020-08-01T23:20:50Z
  restrictedRuleId:
    type: string
    description: Id of rule which causes the restriction. Refer to restrictionType for the type of rule.
    minLength: 0
    maxLength: 64
    example: 99f31b29-b522-4203-beb4-60f2c714f473
  restrictedRuleName:
    type: string
    description: Name of the rule which causes the restriction. This will be populated only for AttemptTracker restrictions.
    minLength: 0
    maxLength: 64
    example: OneAttemptsPerDay
  messageType:
    type: string
    enum:
    - CanPlay
    - CannotPlay
    description: This is applicable with messageTracker configurations. It is used to identify if IVR message can be played for the record
    example: CannotPlay
  messageTypeV4:
    type: string
    enum:
    - CanPlay
    - CannotPlay
    - CanPlayStandard
    description: This is applicable with messageTracker configurations. It is used to identify if IVR message can be played and the type of message.
    example: CannotPlay
  timeOfContact:
    type: string
    description: Time of contact
    format: date-time
    example: 2020-08-01T23:20:50Z
  key:
    type: string
    description: Unique identifier for transaction on current contact. This value will generate in first compliance check without a key, then subsequent compliance checks(if any) for the same contact must have this key. These subsequent compliance checks will return null for key in response. This key returned in first compliance check must specify in POST on /contactAttempts to mark transaction on current contact to complete.
    minLength: 0
    maxLength: 64
    example: 0f2ece75-b214-41a8-b442-4c128d9530e8
  postKey:
    type: string
    description: Unique identifier for transaction on current contact. This value will generate in first compliance check without a key, then subsequent compliance checks(if any) for the same contact must have this key. These subsequent compliance checks will return the same key generated in first check. This key returned in first compliance check must specify in POST on /contactAttempts to mark transaction on current contact to complete.
    minLength: 0
    maxLength: 64
    example: 0f2ece75-b214-41a8-b442-4c128d9530e8
  contactChannel:
    type: string
    enum:
    - Voice
    - SMS
    - Email
    description: Contact channel of this record
    example: Voice
  requiredChecks:
    type: array
    description: Types of rules against compliance check is required. This would not give guarantee on the evaluation order.
    items:
       $ref: '#/definitions/requiredChecksEnum'
    default: ['all']
    example: ['exclusions', 'attemptTrackers', 'messageTrackers']
  requiredChecksEnum:
    type: string
    enum:
      - exclusions
      - attemptTrackers
      - messageTrackers
      - convenientContactTimes
      - quotaControls
      - all
  contactAddressToCheck:
    type: string
    description: Contact Address to be evaluated against exclusion, attemptTracker, messageTracker, convenientContactTime and quotaControl rules. This can be phone Number, SMS Number or Email address based on ContactType.
    minLength: 0
    maxLength: 255
    example: 91-99994532
  contactChannelToCheck:
    type: string
    enum:
    - Voice
    - SMS
    - Email
    description: Contact Channel to be evaluated against exclusion, attemptTracker, messageTracker, convenientContactTime rules.
    example: Voice
  accountNumberToCheck:
    type: string
    description: Account Number to be evaluated against exclusion, attemptTracker, messageTracker and convenientContactTime rules.
    minLength: 0
    maxLength: 255
    example: '101010'
  ssnToCheck:
    type: string
    description: SSN to be evaluated against exclusion rules.
    minLength: 0
    maxLength: 255
    example: '123456'
  contactListNameToCheck:
    type: string
    description: Contact list name to be evaluated against exclusion rules.
    minLength: 0
    maxLength: 256
    example: creditCardList
  customerToCheck:
    type: string
    description: Customer to be evaluated against attemptTracker, messageTracker and convenientContactTime rules.
    minLength: 0
    maxLength: 255
    example: CUST01
  numberTypeToCheck:
    type: integer
    description: NumberType to be evaluated against attemptTracker, messageTracker rules.
    example: 1
  geocodesToCheck:
    description: Geocodes to be evaluated against attemptTracker, messageTracker rules.
    type: array
    items:
        type: string
        minLength: 1
        maxLength: 64
    example: ['USA', 'US']
  purposeToCheck:
    type: string
    description: Purpose to be evaluated against attemptTracker, messageTracker rules.
    minLength: 0
    maxLength: 64
    example: TeleMarketing
  timeZoneToCheck:
    type: string
    description: TimeZone to be evaluated against attemptTracker, messageTracker and convenientContactTime rules. This will accept Olson name for the Time zone(see https://www.iana.org/time-zones for more information). Use GET /via/v3/organizations/{orgId}/campaign/timeZones from Alvaria&trade; Cloud Campaign REST API to retrieve list of Olson Time Zone list.
    minLength: 0
    maxLength: 64
    example: America/Los_Angeles
  productToCheck:
    type: string
    description: Product name to be evaluated against quotaControl rules.
    minLength: 0
    maxLength: 256
    example: Alvaria Cloud
  contactAddress:
    type: string
    description: Contact address based on contactChannel. This can be phone number or sms or email
    minLength: 0
    maxLength: 255
    example : 1-4345346
  timeZone:
    description: The Olson Time Zone Name(see https://www.iana.org/time-zones for more information). Use GET /via/v3/organizations/{orgId}/campaign/timeZones from Alvaria&trade; Cloud Campaign REST API to retrieve list of Olson Time Zone list
    type: string
    minLength: 0
    maxLength: 64
    example: America/Los_Angeles
  locale:
    type: string
    description: Resource's locale name
    minLength: 0
    maxLength: 64
    example: en-US
  resource:
    type: string
    enum:
    - Dispositions
    - NumberTypes
    - Geocodes
    - Purposes
    - ContactLists
    description: ExternalData resource name
    example: Dispositions
  valueType:
    type: string
    enum:
    - Url
    - File
    description: Data type stored in 'value' property. If Url then 'value' hold url else filename
    example: Url
  value:
    type: string
    description: ExternalData value. If valueType is Url then this will hold redirect url else jsonFile name
    minLength: 1
    maxLength: 256
    example: https://orgId.via.aspect-cloud.net/via/v3/organizations/orgId/campaign/dispositions
  enableActiveRecordFeature:
    type: boolean
    description: Set true to enable active record support in attemptTracker rule evaluation.
    example: true
  excludeFromContactAddressRuleAT:
    type: array
    description: Excludes the specified contactAddresses from contactAddress rule(s) in attemptTracker evaluation. Use 'BLANK' to exclude blank contactAddress.
    items:
      type: string
      minLength: 0
      maxLength: 255
    example: ['9855555']
  excludeFromContactAddressRuleMT:
    type: array
    description: Excludes the specified contactAddresses from contactAddress rule(s) in messageTracker evaluation. Use 'BLANK' to exclude blank contactAddress.
    items:
      type: string
      minLength: 0
      maxLength: 255
    example: ['9855555']
  lifeTimeOfActiveRecord:
    type: integer
    description: The maximum lifetime of active record in minutes. A contact is not completed in specified number of minutes then record will remove from the active record list.
    minimum: 1
    maximum: 1440
    example: 120
  minutesToWaitAfterActiveRestriction:
    type: integer
    description: Specified minutes will add to current time to set 'restrictionEndTime' in GET /complianceStatuses if the restriction is due to active records.
    minimum: 0
    maximum: 1440
    example: 10
  excludedContactAddressesAT:
    type: array
    description: Excludes the specified contactAddresses from attemptTracker rule evaluation. Use 'BLANK' to exclude blank contactAddress.
    items:
      type: string
      minLength: 0
      maxLength: 255
    example: ['9855555']
  excludedContactAddressesMT:
    type: array
    description: Excludes the specified contactAddresses from messageTracker rule evaluation. Use 'BLANK' to exclude blank contactAddress.
    items:
      type: string
      minLength: 0
      maxLength: 255
    example: ['9855555']
  retainDays:
    type: integer
    description: Number of days to retain the expired rules. The rules with no endTime will retain based on retainNoEndTime.
    minimum: 0
    maximum: 14
    example: 14
  retainNoEndTime:
    type: boolean
    description: Retain rules with no endTime. If true then rules does not have an endTime will not remove during the daily purge else it will remove.
    example: false
  retainDaysCCT:
    type: integer
    description: Number of days to retain the expired rules.
    minimum: 0
    maximum: 14
    example: 14
  ExLoadFilename:
    type: string
    description: The name of an 'act' file located in the storage path imports/outreach/exclusions
    example: sample.act
    minLength: 4
    maxLength: 128
  CCTLoadFilename:
    type: string
    description: The name of a 'cct' file located in the storage path imports/outreach/exclusions
    example: sample.cct
    minLength: 4
    maxLength: 128
  CETLoadFilename:
    type: string
    description: The name of a 'cet' file located in the storage path imports/outreach/exclusions
    example: sample.cet
    minLength: 4
    maxLength: 128
  ErrorResponseType:
    type: string
    enum:
      - NoErrorFile
      - ErrorFileWithSummary
    description: Error response type. Defaulted to NoErrorFile where an error file won't get generated on an error. ErrorFileWithSummary generates an error file with the failed record index and the reason.
    example: NoErrorFile
parameters:
  authorization:
    name: Authorization
    in: header
    description: >-
        Authentication token with the value: 'Bearer {accessToken}', where {accessToken} was returned from a call to the authorization endpoint
    required: true
    type: string
  x-api-key:
    name: x-api-key
    in: header
    description: Alvaria-provided value used to track API endpoint usage
    required: true
    type: string
  orgId:
    name: orgId
    in: path
    description: Name of a customer organization
    required: true
    type: string
  exclusionId:
    name: exclusionId
    in: path
    description: Alvaria-generated unique identifier for the exclusion instance
    required: true
    type: string
  attemptTrackerId:
    name: attemptTrackerId
    in: path
    description: Alvaria-generated unique identifier for the attemptTracker instance
    required: true
    type: string
  messageTrackerId:
    name: messageTrackerId
    in: path
    description: Alvaria-generated unique identifier for the messageTracker instance
    required: true
    type: string
  contactAttemptId:
    name: contactAttemptId
    in: path
    description: Alvaria-generated unique identifier for the contactAttempt instance
    required: true
    type: string
  convenientContactTimeId:
    name: convenientContactTimeId
    in: path
    description: Alvaria-generated unique identifier for the convenientContactTime instance
    required: true
    type: string
  jobId:
    name: jobId
    in: path
    description: Alvaria-generated unique identifier for the job instance
    required: true
    type: string
  quotaControlId:
    name: quotaControlId
    in: path
    description: Alvaria-generated unique identifier for the quotaControl instance
    required: true
    type: string
  externalDataId:
    name: externalDataId
    in: path
    description: Alvaria-generated unique identifier for the redirect instance
    required: true
    type: string
  maxResults:
    name: maxResults
    in: query
    description: >-
        Maximum results. This is used to specify the maximum number of records to return in the result set. You can use this to set a result set limit that is less than the system/API-specific limit.
    required: false
    type: integer
  startIndex:
    name: startIndex
    in: query
    description: >-
        Index of the starting record.This is used to set the beginning record for the result set when multiple GET Collection requests are required due to the pagination of a large result set.
    required: false
    type: integer
  attemptTrackerName:
    name: attemptTrackerName
    in: query
    description: >-
        Name of the attemptTracker.
    required: false
    type: string
  attemptTrackerDescription:
    name: attemptTrackerDescription
    in: query
    description: >-
        Description of the attemptTracker.
    required: false
    type: string
  messageTrackerName:
    name: messageTrackerName
    in: query
    description: >-
        Name of the messageTracker.
    required: false
    type: string
  messageTrackerDescription:
    name: messageTrackerDescription
    in: query
    description: >-
        Description of the messageTracker.
    required: false
    type: string
  typeOfTracker:
    name: typeOfTracker
    in: query
    description: Rule type
    enum:
    - Customer
    - Phone
    - CustomerPhone
    required: false
    type: string
  typeOfTrackerV4:
    name: typeOfTracker
    in: query
    description: Rule type.
    enum:
    - Customer
    - ContactAddress
    - CustomerContactAddress
    - Account
    - AccountContactAddress
    required: false
    type: string
  numberOfAttempts:
    name: numberOfAttempts
    in: query
    description: Allowed number Of Attempts.
    required: false
    type: integer
    minimum: 1
    maximum: 999
  numberOfAttemptsV4:
    name: numberOfAttempts
    in: query
    description: Allowed number Of Attempts.
    required: false
    type: integer
    minimum: 0
    maximum: 999
  threshold:
    name: threshold
    in: query
    description: Threshold time for this rule.
    required: false
    type: integer
  thresholdType:
    name: thresholdType
    in: query
    description: Threshold type for this rule.
    enum:
    - Minute
    - Hour
    - Day
    - Week
    - CurrentDay
    - CurrentWeek
    - CurrentMonth
    required: false
    type: string
  thresholdActionType:
    name: thresholdActionType
    in: query
    description: Threshold action type for this rule.
    enum:
    - NoPlayMessage
    - PlayStandardMessage
    required: false
    type: string
  disposition:
    name: disposition
    in: query
    description: Disposition to search
    required: false
    type: string
  numberType:
    name: numberType
    in: query
    description: NumberType to search
    required: false
    type: integer
  purpose:
    name: purpose
    in: query
    description: Purpose to search
    required: false
    type: string
  geocode:
    name: geocode
    in: query
    description: Geocode to search
    required: false
    type: string
  numberTypeCheck:
    name: numberType
    in: query
    description: NumberType to check
    required: false
    type: integer
  purposeCheck:
    name: purpose
    in: query
    description: Purpose to check
    required: false
    type: string
  geocodesCheck:
    name: geocodes
    in: query
    description: Geocodes to check. This can be comma separated values
    required: false
    type: string
  dispositions:
    name: dispositions
    in: query
    description: Dispositions to search. This can be comma separated values
    required: false
    type: string
  numberTypes:
    name: numberTypes
    in: query
    description: NumberTypes to search. This can be comma separated values
    required: false
    type: array
    items:
      type: integer
  geocodes:
    name: geocodes
    in: query
    description: Geocodes to search. This can be comma separated values
    required: false
    type: string
  purposes:
    name: purposes
    in: query
    description: Purposes to search. This can be comma separated values
    required: false
    type: string
  contactChannels:
    name: contactChannels
    in: query
    description: Contact channels to search. This can be comma separated values
    required: false
    type: string
    enum:
    - Voice
    - SMS
    - Email
  contactChannel:
    name: contactChannel
    in: query
    type: string
    enum:
    - Voice
    - SMS
    - Email
    description: Contact channel of the record.
    required: true
  accountNumber:
    name: accountNumber
    in: query
    description: AccountNumber to check. This will validate against exclusion, attemptTracker, messageTracker and convenientContactTime rules.
    required: false
    type: string
  email:
    name: email
    in: query
    description: Email to check. This will validate against exclusion rules.
    required: false
    type: string
  smsNumber:
    name: smsNumber
    in: query
    description: smsNumber to check. This will validate against exclusion rules.
    required: false
    type: string
  ssn:
    name: ssn
    in: query
    description: SSN(a custom exclusion number) to check. This will validate against exclusion rules.
    required: false
    type: string
  contactListName:
    name: contactListName
    in: query
    description: ContactListName to check. This will validate against exclusion rules.
    required: false
    type: string
  contactAddress:
    name: contactAddress
    in: query
    description: >-
      ContactAddress to check, value can be phone Number, SMS Number or Email address based on ContactType. This will validate against exclusion/attemptTracker/convenientContactTime/messageTracker rules.
    required: true
    type: string
  customer:
    name: customer
    in: query
    description: >-
      Customer to check. This will validate against attemptTracker, messageTracker and convenientContactTime rules.
    required: false
    type: string
  timeZone:
    name: timeZone
    in: query
    description: >-
      TimeZone to check. This will accept Olson name for the Time zone(see https://www.iana.org/time-zones for more information). Use GET /via/v3/organizations/{orgId}/campaign/timeZones from Alvaria&trade; Cloud Campaign REST API to retrieve list of Olson Time Zone list. This will validate against attemptTracker, messageTracker and convenientContactTime rules
    type: string
    required: false
  key:
    name: key
    in: query
    description: >-
      Unique identifier for transaction of current record. This value will generate if not specified, then following calls for the same record must have this key. No need to specify this parameter for the first compliance check call.
    required: false
    type: string
  requiredChecks:
    name: requiredChecks
    in: query
    type: string
    description: >-
      Required checks for the given record. This can be comma separated string. If this parameter is specified then records will evaluate against specified types of rules only. Otherwise check will perform against all kind of rules. Allowed values are 'exclusions', 'attemptTrackers', 'messageTrackers', 'convenientContactTimes', 'quotaControls', 'all'
    required: false
  fromStartTime:
    name: fromStartTime
    in: query
    description: >-
      Filtering based on start time. This is used to get records having startTime greater than or equal to fromStartTime.
    required: false
    format: date-time
    type: string
  toStartTime:
    name: toStartTime
    in: query
    description: >-
      Filtering based on start time. This is used to get records having startTime less than or equal to toStartTime.
    required: false
    format: date-time
    type: string
  fromEndTime:
    name: fromEndTime
    in: query
    description: >-
      Filtering based on end time. This is used to get records having endTime greater than or equal to fromEndTime.
    required: false
    format: date-time
    type: string
  toEndTime:
    name: toEndTime
    in: query
    description: >-
      Filtering based on end time. This is used to get records having endTime less than or equal to toEndTime.
    required: false
    format: date-time
    type: string
  fromCreationTime:
    name: fromCreationTime
    in: query
    description: >-
      Filtering based on created time. This is used to get records having creationTime greater than or equal to fromCreationTime.
    required: false
    format: date-time
    type: string
  toCreationTime:
    name: toCreationTime
    in: query
    description: >-
      Filtering based on created time. This is used to get records having creationTime less than or equal to toCreationTime.
    required: false
    format: date-time
    type: string
  fromLastModifiedTime:
    name: fromLastModifiedTime
    in: query
    description: >-
      Filtering based on last modified time. This is used to get records having lastModifiedTime greater than or equal to fromLastModifiedTime.
    required: false
    format: date-time
    type: string
  toLastModifiedTime:
    name: toLastModifiedTime
    in: query
    description: >-
      Filtering based on last modified time. This is used to get records having lastModifiedTime less than or equal to toLastModifiedTime.
    required: false
    format: date-time
    type: string
  lastModifiedBy:
    name: lastModifiedBy
    in: query
    description: Last modified user to search
    required: false
    type: string
  fromTimeOfContact:
    name: fromTimeOfContact
    in: query
    description: >-
      Filtering based on time of contact. This is used to get records having TimeOfContact greater than or equal to fromTimeOfContact.
    required: false
    format: date-time
    type: string
  toTimeOfContact:
    name: toTimeOfContact
    in: query
    description: >-
      Filtering based on time of contact. This is used to get records having TimeOfContact less than or equal to toTimeOfContact.
    required: false
    format: date-time
    type: string
  status:
    name: status
    in: query
    description: >-
      Filtering based on status
    required: false
    type: string
    enum:
    - Enabled
    - Disabled
  contactKey:
    name: contactKey
    in: query
    description: >-
      A customer or an account number
    required: false
    type: string
  contactKeyType:
    name: contactKeyType
    in: query
    type: string
    enum:
    - Customer
    - Account
    description: >-
      Type of contact key
    required: false
  contactValue:
    name: contactValue
    in: query
    description: >-
      Phone number or email address.
    required: false
    type: string
  contactValueType:
    name: contactValueType
    in: query
    type: string
    enum:
    - Voice
    - Email
    - SMS
    - All
    description: >-
      Type of contact value
    required: false
  enabled:
    name: enabled
    in: query
    description: >-
      Filters rules based on whether they're enabled or not.
    required: false
    type: boolean
  product:
    name: product
    in: query
    description: >-
      Product name used for quotaControl.
    required: false
    type: string
  productDescription:
    name: productDescription
    in: query
    description: >-
      Product description.
    required: false
    type: string
  totalQuota:
    name: totalQuota
    in: query
    description: >-
      Total allowed quota for sale.
    required: false
    type: integer
  productSold:
    name: productSold
    in: query
    description: >-
      Number of products sold.
    required: false
    type: integer
  unitValue:
    name: unitValue
    in: query
    description: >-
      Unit price.
    required: false
    type: integer
responses:
    found:
      description: OK
      headers:
        Location:
          type: string
          description: Redirect url.
    noContent:
      description: No Content
    unauthorized:
      description: Unauthorized
    badRequest:
      schema:
        $ref: '#/definitions/ErrorResponse400'
      description: Bad Request
    conflict:
      schema:
        $ref: '#/definitions/ErrorResponse409'
      description: Conflict
    methodNotAllowed:
      schema:
        $ref: '#/definitions/ErrorResponse405'
      description: Method Not Allowed
    requestTimeout:
      schema:
        $ref: '#/definitions/ErrorResponse408'
      description: Request Timeout
    unsupportedMediaType:
      schema:
        $ref: '#/definitions/ErrorResponse415'
      description: Unsupported Media Type
    throttled:
      schema:
        $ref: '#/definitions/ErrorResponse429'
      description: Throttled
    internalServerError:
      schema:
        $ref: '#/definitions/ErrorResponse500'
      description: Internal Server Error
    notFoundJob:
      schema:
        $ref: '#/definitions/ErrorResponse404'
      description: No job exists for the provided entity Id
    notFoundEx:
      schema:
        $ref: '#/definitions/ErrorResponse404'
      description: No exclusion exists for the provided entity Id
    notFoundAt:
      schema:
        $ref: '#/definitions/ErrorResponse404'
      description: No attemptTracker exists for the provided entity Id
    notFoundMt:
      schema:
        $ref: '#/definitions/ErrorResponse404'
      description: No messageTracker exists for the provided entity Id
    notFoundCct:
      schema:
        $ref: '#/definitions/ErrorResponse404'
      description: No convenientContactTime exists for the provided entity Id
    notFoundQt:
      schema:
        $ref: '#/definitions/ErrorResponse404'
      description: No quotaControl exists for the provided entity Id