# VoIP events

#### Enable integration
To use the api and activate access to the settings in the user interface, you need to activate the integration by sending the "Enable integration" request. After a successful connection, access to the section with routing settings will be opened in the chain user interface.
#### Disable integration
To disable the integration, you can use the "Disable integration" method. After the integration is disabled, access to the user interface settings section is closed, the requests "Call notification" and "Call information saving" are not processed.
#### Call notification
To display notifications about an incoming call, the "Call notification" method is used, the call type ("incoming", "outgoing", "internal") is specified in the parameters, but currently notifications are displayed only for the "incoming" value. Notifications are displayed for users defined based on routing settings. When specifying the "user" and "diversion" parameters at the same time, "user" is the priority when searching for routes.
#### Saving call information
The information about the call is automatically saved to the chain history and to the history of chain locations in accordance with the call routing settings.

Endpoint: POST /voip/integration
Version: 1.0.0
Security: BearerPartner

## Description:

  - `Enable integration` ()
    To use the api and activate access to the settings in the user interface, you need to activate the integration by sending the "Enable integration" request. After a successful connection, access to the section with routing settings will be opened in the chain user interface.

  - `Disable integration` ()
    To disable the integration, you can use the "Disable integration" method. After the integration is disabled, access to the user interface settings section is closed, the requests "Call notification" and "Call information saving" are not processed.

  - `Call notification` ()
    To display notifications about an incoming call, the "Call notification" method is used, the call type ("incoming", "outgoing", "internal") is specified in the parameters, but currently notifications are displayed only for the "incoming" value. Notifications are displayed for users defined based on routing settings. When specifying the "user" and "diversion" parameters at the same time, "user" is the priority when searching for routes.

  - `Saving call information` ()
    The information about the call is automatically saved to the chain history and to the history of chain locations in accordance with the call routing settings.

## Security:

  - `BearerPartner` (unknown)
    http bearer Bearer {PartnerToken}

## Header parameters:

  - `Accept` (string, required)
    e.g. application/vnd.api.v2+json

  - `Content-Type` (string, required)
    application/json

  - `Authorization` (string, required)
    Bearer partner_token

## Request body:

  - `application/json` (unknown)
    Request bodies

## Request fields (application/json):

  - `command` (string, required)
    Operation type: 'setup'

  - `type` (string, required)
    Operation type, in this case 'enable'

  - `crm_token` (string, required)
    CRM-token from the VoIP Integration in the client's chain section

  - `type` (string, required)
    Operation type, in this case 'disable'

  - `command` (string, required)
    Operation type: 'history'

  - `type` (string, required)
    Operation type ("incoming", "outgoing", "internal")

  - `phone` (string, required)
    Caller number

  - `user` (string)
    SIP subscriber ID

  - `diversion` (string, required)
    The number through which the call came

  - `duration` (number)
    Call duration (in seconds)

  - `link` (string)
    Call recording link

  - `call_id` (string)
    Call ID in voip system

  - `status` (string)
    Call status 'success'|'missed'

  - `date` (string)
    Date and time of the call (ISO8601)

  - `command` (string, required)
    Operation type: 'event'

  - `type` (string, required)
    Operation type, in this case "incoming"

  - `user` (string)
    SIP number

## Response 202:

  - `202` (unknown)
    Accepted

## Response 202 fields (application/json):

  - `success` (boolean)
    Success status (true)

  - `data` (string)
    Contains null

  - `meta` (object)
    Metadata (contain an "Accepted" message)

  - `meta.message` (string)

## Response 401:

  - `401` (unknown)
    Unauthorized

## Response 401 fields (application/json):

  - `success` (boolean)
    Response status.
    Example: false

  - `data` (object | null)
    Response data.
    Example: null

  - `meta` (object)
    Additional response data.

  - `meta.message` (string)
    Error message.
    Example: Authentication needed.

## Response 403:

  - `403` (unknown)
    Forbidden

## Response 403 fields (application/json):

  - `success` (boolean)
    Response status.
    Example: false

  - `data` (object | null)
    Response data.
    Example: null

  - `meta` (object)
    Additional response data.

  - `meta.message` (string)
    Error message.
    Example: Access denied.

## Response 404:

  - `404` (unknown)
    Not Found

## Response 404 fields (application/json):

  - `success` (boolean)
    Response status.
    Example: false

  - `data` (object | null)
    Response data.
    Example: null

  - `meta` (object | array)
    Additional response data (empty object or empty array)
    Example: {}

