> ## Documentation Index
> Fetch the complete documentation index at: https://docs.operata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List contact summaries (v2)

> Query a time window and get a page of contacts in the v2 data model, with account, contact, agent, WebRTC session, headset, and billing objects.

Returns a page of contact summaries for your Operata Group in the v2 data model. Each contact carries account properties, contact details and events, the agent's machine and network, WebRTC session metrics, headset data, and billing. Filters, paging, and sorting work exactly as in [List contact summaries](https://docs.operata.com/docs/api-contact-summary.md). Only the response format differs.

## Endpoint

```http theme={null}
GET https://api.operata.io/v2/data/calls
```

## Parameters

### Query

All parameters are optional. With none, you get the 100 most recent contacts.

| Name | Type | Description |
| - | - | - |
| `fromTime` | string | Start of the time window, inclusive. An RFC 3339 timestamp such as `2026-10-11T18:30:00Z`, or OpenSearch date math such as `now-1d` or `now/d`. Send with `toTime`. |
| `toTime` | string | End of the time window, inclusive. Same formats as `fromTime`. When both are timestamps, `toTime` must be after `fromTime`. |
| `timezone` | string | Time zone OpenSearch applies to the window, for example `Australia/Sydney` or `+10:00`. Used only with `fromTime` and `toTime`. |
| `size` | integer | Contacts to return. At least 1. Default `100`. |
| `from` | integer | Contacts to skip, for paging. Default `0`. See [Pagination](https://docs.operata.com/docs/api-pagination.md). |
| `contactId` | string | Return only this contact ID. |
| `contactIds` | string | Return any of these contact IDs. Repeat the parameter for each ID. |
| `agent` | string | Agent username to match. |
| `networkType` | string | Network type to match, for example `wlan` or `ethernet`. |
| `agentCity` | string | Agent city to match. |
| `tags` | string | Return contacts with any of these tags. Repeat the parameter for each tag. |
| `mosFrom`, `mosTo` | integer | Range on average mean opinion score (MOS). |
| `jitterFrom`, `jitterTo` | integer | Range on average jitter, in milliseconds. |
| `rttFrom`, `rttTo` | integer | Range on average round-trip time (RTT), in milliseconds. |
| `packetsLostFrom`, `packetsLostTo` | integer | Range on the contact's total packets-lost fraction (`totals.packetsLostFraction`). The API also accepts `packetsLostFractionFrom` and `packetsLostFractionTo`. |
| `durationSecondsFrom`, `durationSecondsTo` | integer | Range on contact duration, in seconds. |
| `sortColumn` | string | Field to sort by: `timestamp`, `agent`, `networkType`, `agentIPAddress`, `mos`, `contactId`, `agentExternalIPAddress`, `agentISP`, `agentCity`, `jitter`, `rtt`, `packetsLostFraction`, or `duration`. Send with `sortDirection`. |
| `sortDirection` | string | `asc` or `desc`. Send with `sortColumn`. |
| `criteria` | string | URL-encoded JSON object with the same fields, for example `{"fromTime":"now-1d","toTime":"now"}`. When present, the API ignores every other query parameter and doesn't validate them. |

### How filters apply

* **Time window.** `fromTime` and `toTime` match the contact summary's `timestamp`, the time Operata recorded the contact.
* **Ranges.** Each range filter takes both ends, as whole numbers. Both ends are inclusive, the upper end must be at least 1, and the lower end can't exceed it. For example, `mosFrom=3&mosTo=4` matches an average MOS from 3.0 to 4.0.
* **Text filters.** `agent`, `networkType`, `agentCity`, `contactId`, `contactIds`, and `tags` use an OpenSearch phrase match on the stored value.
* **Contact IDs.** Only summaries with a contact ID come back.
* **Sort.** Without `sortColumn`, results are newest first by `timestamp`.

The API rejects a request with `400` when a parameter is unknown, sent more than once (other than `contactIds` and `tags`), not a whole number where one is needed, out of range, or missing its pair. The response body names the parameter. Empty values, such as `contactId=`, count as not sent.

## Response

`200 OK` with a JSON array of contacts. The array is empty when nothing matches.

The `RecordCount` response header holds the total number of matching contacts, not just this page. OpenSearch counts up to 10,000, so larger totals report `10000`.

```json theme={null}
[
  {
    "accountProperties": {
      "service": "Amazon Connect",
      "serviceAccountNumber": "123456789012",
      "serviceInstanceId": "205474d3-428f-4473-82e3-4f80580ef5b9",
      "region": "ap-southeast-2",
      "operataGroupId": "0841f5f7-e9c0-4454-8cb3-0eb3230e899b"
    },
    "contact": {
      "id": {
        "current": "e5c6ca6a-a061-42e8-989d-a06d7cb09cbb",
        "previous": "",
        "next": "",
        "initial": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
      },
      "systemEndpoint": "+61255500100",
      "durationSec": 11,
      "type": "VOICE",
      "direction": "Inbound",
      "initiation": "INBOUND",
      "events": {
        "enqueued": "2021-06-28T09:26:30Z",
        "incomingToPlatform": "2021-06-28T09:26:29Z",
        "connectingToAgent": "2021-06-28T09:26:30.807Z",
        "connectedToAgent": "2021-06-28T09:26:31Z",
        "disconnected": "2021-06-28T09:26:40Z"
      },
      "endedBy": "Customer",
      "disconnectReason": "CUSTOMER_DISCONNECT"
    },
    "serviceAgent": {
      "username": "agent_42",
      "serviceId": "1d6a6efa-cd42-469e-8846-af01255a03d8",
      "machine": {
        "cpu": {
          "modelName": "Intel Pentium 3.0",
          "idlePercentage": {
            "avg": 96.4
          },
          "utilisedPercentage": {
            "min": 3.4,
            "max": 3.7,
            "avg": 3.6
          }
        },
        "memory": {
          "availableGb": 32,
          "utilisedPercentage": {
            "min": 93.4,
            "max": 96.5,
            "avg": 94.4
          }
        }
      },
      "network": {
        "internetGatewayIp": "203.0.113.24",
        "mediaIpAddress": "e35e8a3b-2c57-4b28-8a1c-3946bdcd697f.local",
        "type": "wildcard",
        "availableInterfaces": [
          {
            "address": "e35e8a3b-2c57-4b28-8a1c-3946bdcd697f.local",
            "type": ""
          }
        ],
        "isp": "Google LLC",
        "geolocation": {
          "city": "Sydney",
          "region": "New South Wales",
          "country": "Australia"
        },
        "agentIpAddress": "",
        "agentIsp": ""
      },
      "browser": {
        "name": "Chrome",
        "version": "88.0.4298.0"
      },
      "softphone": {
        "softphoneUrl": "https://example.my.connect.aws/ccp-v2",
        "operataCollectorVersion": "v1.0.22",
        "connectStreamsVersion": "1.5.0"
      },
      "interaction": {
        "totalDurationSec": 9,
        "onHoldDurationSec": 0,
        "talkingDurationSec": 9,
        "onMuteDurationSec": 0
      }
    },
    "webRTCSession": {
      "metrics": {
        "inbound": {
          "packetsReceived": 331,
          "packetsLost": 0,
          "packetsLostPercentage": 0,
          "bytesReceived": 31401,
          "audioLevel": {
            "max": 13889,
            "avg": 3168
          },
          "jitterBufferMils": {
            "min": 0,
            "max": 0,
            "avg": 0
          }
        },
        "outbound": {
          "packetsSent": 445,
          "packetsLost": 0,
          "packetsLostPercentage": 0,
          "bytesSent": 15052,
          "audioLevel": {
            "max": 5709,
            "avg": 1064.75
          },
          "jitterBufferMils": {
            "min": 8,
            "max": 40,
            "avg": 24.13
          }
        },
        "rtt": {
          "max": 32,
          "avg": 29
        },
        "jitter": {
          "max": 3,
          "avg": 2
        },
        "mos": {
          "min": 3.48,
          "max": 4.43,
          "avg": 4.31
        }
      },
      "serviceEndpoint": {
        "fqdn": "wss://tufsuyburufn.transport.connect.ap-southeast-2.amazonaws.com/?[redacted]",
        "transportLifeTimeSeconds": 3942,
        "expiry": "2021-06-28T10:32:03.922Z"
      },
      "mediaEndpoint": {
        "fqdn": "turnnlb-93f2de0c97c4316b.elb.ap-southeast-2.amazonaws.com.",
        "destinationPort": "3478",
        "sourcePort": "55662",
        "transport": "udp",
        "privateIp": "10.4.3.192"
      },
      "signallingEndpoint": {
        "fqdn": "wss://rtc.connect-telecom.ap-southeast-2.amazonaws.com/LilyRTC"
      },
      "eventTimer": {
        "gumTimeMillis": 0,
        "initializationTimeMillis": 0,
        "iceCollectionTimeMillis": 0,
        "signallingConnectTimeMillis": 0,
        "handshakingTimeMillis": 0,
        "preTalkingTimeMillis": 0,
        "cleanupTimeMillis": 0
      },
      "eventFailure": {
        "iceCollectionFailure": false,
        "signallingConnectionFailure": false,
        "handshakingFailure": false,
        "gumOtherFailure": false,
        "gumTimeoutFailure": false,
        "createOfferFailure": false,
        "setLocalDescriptionFailure": false,
        "userBusyFailure": false,
        "invalidRemoteSDPFailure": false,
        "noRemoteIceCandidateFailure": false,
        "setRemoteDescriptionFailure": false
      }
    },
    "headset": {
      "modelName": "Jabra Link 380",
      "firmwareVersion": "1234ABCD",
      "serialNumber": "ABCD1234",
      "apiVersion": "3.0.0-beta.4",
      "metrics": {
        "speech": {
          "crossTalkTotal": 0,
          "crossTalkTotalPct": 0,
          "rxSpeechTotal": 0,
          "rxSpeechTotalPct": 0,
          "silenceTotal": 12.07,
          "silenceTotalPct": 100,
          "totalSeconds": 12.07,
          "txSpeechTotal": 0,
          "txSpeechTotalPct": 0
        },
        "exposureDb": {
          "min": 62,
          "max": 71,
          "avg": 66
        },
        "backgroundNoiseDb": {
          "min": 1,
          "max": 20,
          "avg": 2
        },
        "misalignedBoomArmCount": 3,
        "deviceMuteCount": 0,
        "deviceVolumeAdjustCount": 0
      }
    },
    "billing": {
      "durationRoundedMin": 1
    }
  }
]
```

| Field | Type | Description |
| - | - | - |
| `accountProperties` | object | Contact center account: `service`, `serviceAccountNumber`, `serviceInstanceId`, `region`, `operataGroupName`, `operataGroupId`. See [Account properties](https://docs.operata.com/docs/account-properties.md). |
| `contact` | object | Contact ID chain in `id` (`current`, `previous`, `next`, `initial`), plus `callerId`, `systemEndpoint`, `queueName`, `durationSec`, `type`, `direction`, `initiation`, `recordingUrl`, `events`, `endedBy`, and `disconnectReason`. See [Contact](https://docs.operata.com/docs/contact.md) and [Call events](https://docs.operata.com/docs/call-events.md). |
| `serviceAgent` | object | Agent `username`, `friendlyName`, `serviceId`, and the agent's `machine`, `network`, `browser`, `softphone`, and `interaction` durations. See [Agent](https://docs.operata.com/docs/agent.md). |
| `webRTCSession` | object | Inbound and outbound `metrics`, RTT, jitter, and MOS, plus `serviceEndpoint`, `mediaEndpoint`, `signallingEndpoint`, `eventTimer`, `eventFailure`, and `usedDevices`. See [WebRTC session](https://docs.operata.com/docs/webrtc-session.md). |
| `headset` | object | Headset model, firmware, and speech and noise metrics. Omitted when the contact has no headset data. |
| `billing.durationRoundedMin` | integer | Billable duration in minutes. |

`accountProperties`, `contact`, `serviceAgent`, `webRTCSession`, and `billing` are always present. Inside them, most fields without a stored value come back as an empty string, `0`, or `false`. These are omitted instead: every `accountProperties` field; `contact.callerId`, `systemEndpoint`, `queueName`, `durationSec`, `type`, `direction`, `initiation`, `recordingUrl`, `events`, `endedBy`, and `disconnectReason`; `serviceAgent.friendlyName`, `serviceId`, and `machine`; and `webRTCSession.signallingEndpoint`, `eventTimer`, `eventFailure`, and `usedDevices`. `serviceAgent.browser` comes back as `null` when not recorded.

The list never includes `insights`. [Get a contact summary (v2)](https://docs.operata.com/docs/api-v2-call-summary.md) returns it for one contact.

## Example

Fetch the contacts from a 48-hour window, 50 at a time.

```bash curl theme={null}
curl -u "$OPERATA_GROUP_ID:$OPERATA_API_TOKEN" \
  "https://api.operata.io/v2/data/calls?fromTime=2026-10-11T18:30:00Z&toTime=2026-10-13T18:30:00Z&size=50"
```

```javascript Node.js theme={null}
const groupId = process.env.OPERATA_GROUP_ID;
const apiToken = process.env.OPERATA_API_TOKEN;
const auth = Buffer.from(`${groupId}:${apiToken}`).toString("base64");

const url = new URL("https://api.operata.io/v2/data/calls");
url.searchParams.set("fromTime", "2026-10-11T18:30:00Z");
url.searchParams.set("toTime", "2026-10-13T18:30:00Z");
url.searchParams.set("size", "50");

const response = await fetch(url, {
  headers: { Authorization: `Basic ${auth}` },
});
const contacts = await response.json();
const total = Number(response.headers.get("RecordCount"));
```

```python Python theme={null}
import os, requests

response = requests.get(
    "https://api.operata.io/v2/data/calls",
    auth=(os.environ["OPERATA_GROUP_ID"], os.environ["OPERATA_API_TOKEN"]),
    params={
        "fromTime": "2026-10-11T18:30:00Z",
        "toTime": "2026-10-13T18:30:00Z",
        "size": 50,
    },
)
response.raise_for_status()
contacts = response.json()
total = int(response.headers["RecordCount"])
```

## Errors

Error bodies are plain text.

| Status | Body | When | Recover |
| - | - | - | - |
| 400 | Names the parameter, for example `query parameter "mosFrom" must be a non-negative integer` | A query parameter is unknown, malformed, repeated, out of range, or missing its pair. | Fix the parameter the message names. |
| 401 | An HTML `401 Authorization Required` page | Credentials are missing or wrong. | See [Authentication](https://docs.operata.com/docs/api-authentication.md). |
| 422 | `An error occurred while making ES query` | `criteria` isn't valid JSON. | Fix the JSON and URL-encode it. |
| 422 | `An error occurred while retrieving call stats log` | OpenSearch rejected or failed the query, for example when `from` plus `size` passes its result window. | Page with a smaller `from`, or narrow the time window. Retry later if it persists. |

See [Errors](https://docs.operata.com/docs/api-errors.md) for errors every endpoint can return.

## Related

* [Get a contact summary (v2)](https://docs.operata.com/docs/api-v2-call-summary.md): the v2 summary for one contact, including insights.
* [Get detailed contact stats (v2)](https://docs.operata.com/docs/api-v2-contact-stats.md): per-second metrics for one contact.
* [List contact summaries](https://docs.operata.com/docs/api-contact-summary.md): the same query in the v1 format.
* [Versioning](https://docs.operata.com/docs/api-versioning.md): how v1 and v2 differ.


## OpenAPI

````yaml GET /v2/data/calls
openapi: 3.0.3
info:
  title: operata-api
  version: '1'
servers:
  - url: https://api.operata.io/
security:
  - sec0: []
paths:
  /v2/data/calls:
    get:
      summary: Contact Summary (v2)
      description: >-
        Returns v2 contact summaries for the group, filtered by time window and
        metrics.
      operationId: calls-list-v2
      parameters:
        - name: fromTime
          in: query
          description: >-
            Start of the time window, inclusive. RFC 3339 timestamp such as
            `2026-10-11T18:30:00Z`, or OpenSearch date math such as `now-1d`.
            Send with `toTime`.
          schema:
            type: string
        - name: toTime
          in: query
          description: >-
            End of the time window, inclusive. Same formats as `fromTime`. When
            both are timestamps, `toTime` must be after `fromTime`.
          schema:
            type: string
        - name: timezone
          in: query
          description: >-
            Time zone OpenSearch applies to the window, for example
            `Australia/Sydney` or `+10:00`. Used only with `fromTime` and
            `toTime`.
          schema:
            type: string
        - name: size
          in: query
          description: Number of contacts to return. At least 1. Default 100.
          schema:
            type: integer
            minimum: 1
            default: 100
        - name: from
          in: query
          description: Number of contacts to skip, for paging. Default 0.
          schema:
            type: integer
            minimum: 0
            default: 0
        - name: contactId
          in: query
          description: Return only the contact with this contact ID.
          schema:
            type: string
        - name: contactIds
          in: query
          description: >-
            Return contacts matching any of these contact IDs. Repeat the
            parameter for each ID.
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
        - name: agent
          in: query
          description: Agent username to match.
          schema:
            type: string
        - name: networkType
          in: query
          description: Network type to match, for example `wlan` or `ethernet`.
          schema:
            type: string
        - name: agentCity
          in: query
          description: Agent city to match.
          schema:
            type: string
        - name: tags
          in: query
          description: >-
            Return contacts with any of these tags. Repeat the parameter for
            each tag.
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
        - name: mosFrom
          in: query
          description: >-
            Lower bound on average MOS, inclusive. Whole numbers only. Send with
            `mosTo`.
          schema:
            type: integer
            minimum: 0
        - name: mosTo
          in: query
          description: >-
            Upper bound on average MOS, inclusive. At least 1. Send with
            `mosFrom`.
          schema:
            type: integer
            minimum: 1
        - name: jitterFrom
          in: query
          description: >-
            Lower bound on average jitter in milliseconds, inclusive. Send with
            `jitterTo`.
          schema:
            type: integer
            minimum: 0
        - name: jitterTo
          in: query
          description: >-
            Upper bound on average jitter in milliseconds, inclusive. At least
            1. Send with `jitterFrom`.
          schema:
            type: integer
            minimum: 1
        - name: rttFrom
          in: query
          description: >-
            Lower bound on average round-trip time in milliseconds, inclusive.
            Send with `rttTo`.
          schema:
            type: integer
            minimum: 0
        - name: rttTo
          in: query
          description: >-
            Upper bound on average round-trip time in milliseconds, inclusive.
            At least 1. Send with `rttFrom`.
          schema:
            type: integer
            minimum: 1
        - name: packetsLostFrom
          in: query
          description: >-
            Lower bound on the contact's total packets-lost fraction, inclusive.
            Alias of `packetsLostFractionFrom`. Send with `packetsLostTo`.
          schema:
            type: integer
            minimum: 0
        - name: packetsLostTo
          in: query
          description: >-
            Upper bound on the contact's total packets-lost fraction, inclusive.
            At least 1. Alias of `packetsLostFractionTo`. Send with
            `packetsLostFrom`.
          schema:
            type: integer
            minimum: 1
        - name: durationSecondsFrom
          in: query
          description: >-
            Lower bound on contact duration in seconds, inclusive. Send with
            `durationSecondsTo`.
          schema:
            type: integer
            minimum: 0
        - name: durationSecondsTo
          in: query
          description: >-
            Upper bound on contact duration in seconds, inclusive. At least 1.
            Send with `durationSecondsFrom`.
          schema:
            type: integer
            minimum: 1
        - name: sortColumn
          in: query
          description: >-
            Field to sort by. Send with `sortDirection`. Default sort is
            `timestamp`, newest first.
          schema:
            type: string
            enum:
              - timestamp
              - agent
              - networkType
              - agentIPAddress
              - mos
              - contactId
              - agentExternalIPAddress
              - agentISP
              - agentCity
              - jitter
              - rtt
              - packetsLostFraction
              - duration
        - name: sortDirection
          in: query
          description: '`asc` or `desc`. Send with `sortColumn`.'
          schema:
            type: string
            enum:
              - asc
              - desc
        - name: criteria
          in: query
          description: >-
            Alternative to the parameters above: a URL-encoded JSON object with
            the same fields. When present, every other query parameter is
            ignored and not validated.
          schema:
            type: string
      responses:
        '200':
          description: >-
            Matching contacts, newest first unless you set a sort. An empty
            array when nothing matches.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    accountProperties:
                      type: object
                      properties:
                        service:
                          type: string
                        serviceAccountNumber:
                          type: string
                        serviceInstanceId:
                          type: string
                        region:
                          type: string
                        operataGroupId:
                          type: string
                    contact:
                      type: object
                      properties:
                        id:
                          type: object
                          properties:
                            current:
                              type: string
                            previous:
                              type: string
                            next:
                              type: string
                            initial:
                              type: string
                        systemEndpoint:
                          type: string
                        durationSec:
                          type: integer
                        type:
                          type: string
                        direction:
                          type: string
                        initiation:
                          type: string
                        events:
                          type: object
                          properties:
                            enqueued:
                              type: string
                            incomingToPlatform:
                              type: string
                            connectingToAgent:
                              type: string
                            connectedToAgent:
                              type: string
                            disconnected:
                              type: string
                        endedBy:
                          type: string
                        disconnectReason:
                          type: string
                    serviceAgent:
                      type: object
                      properties:
                        username:
                          type: string
                        serviceId:
                          type: string
                        machine:
                          type: object
                          properties:
                            cpu:
                              type: object
                              properties:
                                modelName:
                                  type: string
                                idlePercentage:
                                  type: object
                                  properties:
                                    avg:
                                      type: number
                                utilisedPercentage:
                                  type: object
                                  properties:
                                    min:
                                      type: number
                                    avg:
                                      type: number
                                    max:
                                      type: number
                            memory:
                              type: object
                              properties:
                                availableGb:
                                  type: number
                                utilisedPercentage:
                                  type: object
                                  properties:
                                    min:
                                      type: number
                                    avg:
                                      type: number
                                    max:
                                      type: number
                        network:
                          type: object
                          properties:
                            internetGatewayIp:
                              type: string
                            mediaIpAddress:
                              type: string
                            type:
                              type: string
                            availableInterfaces:
                              type: array
                              items:
                                type: object
                                properties:
                                  address:
                                    type: string
                                  type:
                                    type: string
                            isp:
                              type: string
                            geolocation:
                              type: object
                              properties:
                                city:
                                  type: string
                                region:
                                  type: string
                                country:
                                  type: string
                            agentIpAddress:
                              type: string
                            agentIsp:
                              type: string
                        browser:
                          type: object
                          properties:
                            name:
                              type: string
                            version:
                              type: string
                        softphone:
                          type: object
                          properties:
                            softphoneUrl:
                              type: string
                            operataCollectorVersion:
                              type: string
                            connectStreamsVersion:
                              type: string
                        interaction:
                          type: object
                          properties:
                            totalDurationSec:
                              type: integer
                            onHoldDurationSec:
                              type: integer
                            talkingDurationSec:
                              type: integer
                            onMuteDurationSec:
                              type: integer
                    webRTCSession:
                      type: object
                      properties:
                        metrics:
                          type: object
                          properties:
                            inbound:
                              type: object
                              properties:
                                packetsReceived:
                                  type: integer
                                packetsLost:
                                  type: integer
                                packetsLostPercentage:
                                  type: number
                                bytesReceived:
                                  type: integer
                                audioLevel:
                                  type: object
                                  properties:
                                    max:
                                      type: number
                                    avg:
                                      type: number
                                jitterBufferMils:
                                  type: object
                                  properties:
                                    min:
                                      type: number
                                    avg:
                                      type: number
                                    max:
                                      type: number
                            outbound:
                              type: object
                              properties:
                                packetsSent:
                                  type: integer
                                packetsLost:
                                  type: integer
                                packetsLostPercentage:
                                  type: number
                                bytesSent:
                                  type: integer
                                audioLevel:
                                  type: object
                                  properties:
                                    max:
                                      type: number
                                    avg:
                                      type: number
                                jitterBufferMils:
                                  type: object
                                  properties:
                                    min:
                                      type: number
                                    avg:
                                      type: number
                                    max:
                                      type: number
                            rtt:
                              type: object
                              properties:
                                max:
                                  type: number
                                avg:
                                  type: number
                            jitter:
                              type: object
                              properties:
                                max:
                                  type: number
                                avg:
                                  type: number
                            mos:
                              type: object
                              properties:
                                min:
                                  type: number
                                avg:
                                  type: number
                                max:
                                  type: number
                        serviceEndpoint:
                          type: object
                          properties:
                            fqdn:
                              type: string
                            transportLifeTimeSeconds:
                              type: integer
                            expiry:
                              type: string
                        mediaEndpoint:
                          type: object
                          properties:
                            fqdn:
                              type: string
                            destinationPort:
                              type: string
                            sourcePort:
                              type: string
                            transport:
                              type: string
                            privateIp:
                              type: string
                        signallingEndpoint:
                          type: object
                          properties:
                            fqdn:
                              type: string
                        eventTimer:
                          type: object
                          properties:
                            gumTimeMillis:
                              type: integer
                            initializationTimeMillis:
                              type: integer
                            iceCollectionTimeMillis:
                              type: integer
                            signallingConnectTimeMillis:
                              type: integer
                            handshakingTimeMillis:
                              type: integer
                            preTalkingTimeMillis:
                              type: integer
                            cleanupTimeMillis:
                              type: integer
                        eventFailure:
                          type: object
                          properties:
                            iceCollectionFailure:
                              type: boolean
                            signallingConnectionFailure:
                              type: boolean
                            handshakingFailure:
                              type: boolean
                            gumOtherFailure:
                              type: boolean
                            gumTimeoutFailure:
                              type: boolean
                            createOfferFailure:
                              type: boolean
                            setLocalDescriptionFailure:
                              type: boolean
                            userBusyFailure:
                              type: boolean
                            invalidRemoteSDPFailure:
                              type: boolean
                            noRemoteIceCandidateFailure:
                              type: boolean
                            setRemoteDescriptionFailure:
                              type: boolean
                    headset:
                      type: object
                      properties:
                        modelName:
                          type: string
                        firmwareVersion:
                          type: string
                        serialNumber:
                          type: string
                        apiVersion:
                          type: string
                        metrics:
                          type: object
                          properties:
                            speech:
                              type: object
                              properties:
                                crossTalkTotal:
                                  type: number
                                crossTalkTotalPct:
                                  type: number
                                rxSpeechTotal:
                                  type: number
                                rxSpeechTotalPct:
                                  type: number
                                silenceTotal:
                                  type: number
                                silenceTotalPct:
                                  type: number
                                totalSeconds:
                                  type: number
                                txSpeechTotal:
                                  type: number
                                txSpeechTotalPct:
                                  type: number
                            exposureDb:
                              type: object
                              properties:
                                min:
                                  type: number
                                avg:
                                  type: number
                                max:
                                  type: number
                            backgroundNoiseDb:
                              type: object
                              properties:
                                min:
                                  type: number
                                avg:
                                  type: number
                                max:
                                  type: number
                            misalignedBoomArmCount:
                              type: integer
                            deviceMuteCount:
                              type: integer
                            deviceVolumeAdjustCount:
                              type: integer
                    billing:
                      type: object
                      properties:
                        durationRoundedMin:
                          type: integer
              example:
                - accountProperties:
                    service: Amazon Connect
                    serviceAccountNumber: '123456789012'
                    serviceInstanceId: 205474d3-428f-4473-82e3-4f80580ef5b9
                    region: ap-southeast-2
                    operataGroupId: 0841f5f7-e9c0-4454-8cb3-0eb3230e899b
                  contact:
                    id:
                      current: e5c6ca6a-a061-42e8-989d-a06d7cb09cbb
                      previous: ''
                      next: ''
                      initial: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                    systemEndpoint: '+61255500100'
                    durationSec: 11
                    type: VOICE
                    direction: Inbound
                    initiation: INBOUND
                    events:
                      enqueued: '2021-06-28T09:26:30Z'
                      incomingToPlatform: '2021-06-28T09:26:29Z'
                      connectingToAgent: '2021-06-28T09:26:30.807Z'
                      connectedToAgent: '2021-06-28T09:26:31Z'
                      disconnected: '2021-06-28T09:26:40Z'
                    endedBy: Customer
                    disconnectReason: CUSTOMER_DISCONNECT
                  serviceAgent:
                    username: agent_42
                    serviceId: 1d6a6efa-cd42-469e-8846-af01255a03d8
                    machine:
                      cpu:
                        modelName: Intel Pentium 3.0
                        idlePercentage:
                          avg: 96.4
                        utilisedPercentage:
                          min: 3.4
                          max: 3.7
                          avg: 3.6
                      memory:
                        availableGb: 32
                        utilisedPercentage:
                          min: 93.4
                          max: 96.5
                          avg: 94.4
                    network:
                      internetGatewayIp: 203.0.113.24
                      mediaIpAddress: e35e8a3b-2c57-4b28-8a1c-3946bdcd697f.local
                      type: wildcard
                      availableInterfaces:
                        - address: e35e8a3b-2c57-4b28-8a1c-3946bdcd697f.local
                          type: ''
                      isp: Google LLC
                      geolocation:
                        city: Sydney
                        region: New South Wales
                        country: Australia
                      agentIpAddress: ''
                      agentIsp: ''
                    browser:
                      name: Chrome
                      version: 88.0.4298.0
                    softphone:
                      softphoneUrl: https://example.my.connect.aws/ccp-v2
                      operataCollectorVersion: v1.0.22
                      connectStreamsVersion: 1.5.0
                    interaction:
                      totalDurationSec: 9
                      onHoldDurationSec: 0
                      talkingDurationSec: 9
                      onMuteDurationSec: 0
                  webRTCSession:
                    metrics:
                      inbound:
                        packetsReceived: 331
                        packetsLost: 0
                        packetsLostPercentage: 0
                        bytesReceived: 31401
                        audioLevel:
                          max: 13889
                          avg: 3168
                        jitterBufferMils:
                          min: 0
                          max: 0
                          avg: 0
                      outbound:
                        packetsSent: 445
                        packetsLost: 0
                        packetsLostPercentage: 0
                        bytesSent: 15052
                        audioLevel:
                          max: 5709
                          avg: 1064.75
                        jitterBufferMils:
                          min: 8
                          max: 40
                          avg: 24.13
                      rtt:
                        max: 32
                        avg: 29
                      jitter:
                        max: 3
                        avg: 2
                      mos:
                        min: 3.48
                        max: 4.43
                        avg: 4.31
                    serviceEndpoint:
                      fqdn: >-
                        wss://tufsuyburufn.transport.connect.ap-southeast-2.amazonaws.com/?[redacted]
                      transportLifeTimeSeconds: 3942
                      expiry: '2021-06-28T10:32:03.922Z'
                    mediaEndpoint:
                      fqdn: >-
                        turnnlb-93f2de0c97c4316b.elb.ap-southeast-2.amazonaws.com.
                      destinationPort: '3478'
                      sourcePort: '55662'
                      transport: udp
                      privateIp: 10.4.3.192
                    signallingEndpoint:
                      fqdn: >-
                        wss://rtc.connect-telecom.ap-southeast-2.amazonaws.com/LilyRTC
                    eventTimer:
                      gumTimeMillis: 0
                      initializationTimeMillis: 0
                      iceCollectionTimeMillis: 0
                      signallingConnectTimeMillis: 0
                      handshakingTimeMillis: 0
                      preTalkingTimeMillis: 0
                      cleanupTimeMillis: 0
                    eventFailure:
                      iceCollectionFailure: false
                      signallingConnectionFailure: false
                      handshakingFailure: false
                      gumOtherFailure: false
                      gumTimeoutFailure: false
                      createOfferFailure: false
                      setLocalDescriptionFailure: false
                      userBusyFailure: false
                      invalidRemoteSDPFailure: false
                      noRemoteIceCandidateFailure: false
                      setRemoteDescriptionFailure: false
                  headset:
                    modelName: Jabra Link 380
                    firmwareVersion: 1234ABCD
                    serialNumber: ABCD1234
                    apiVersion: 3.0.0-beta.4
                    metrics:
                      speech:
                        crossTalkTotal: 0
                        crossTalkTotalPct: 0
                        rxSpeechTotal: 0
                        rxSpeechTotalPct: 0
                        silenceTotal: 12.07
                        silenceTotalPct: 100
                        totalSeconds: 12.07
                        txSpeechTotal: 0
                        txSpeechTotalPct: 0
                      exposureDb:
                        min: 62
                        max: 71
                        avg: 66
                      backgroundNoiseDb:
                        min: 1
                        max: 20
                        avg: 2
                      misalignedBoomArmCount: 3
                      deviceMuteCount: 0
                      deviceVolumeAdjustCount: 0
                  billing:
                    durationRoundedMin: 1
          headers:
            RecordCount:
              description: >-
                Total number of matching contacts. OpenSearch counts up to
                10,000, so larger totals report 10000.
              schema:
                type: string
        '400':
          description: >-
            A query parameter is unknown, malformed, repeated, or out of range.
            The body names the parameter.
          content:
            text/plain:
              schema:
                type: string
        '401':
          description: >-
            Missing or invalid credentials. The gateway returns an HTML `401
            Authorization Required` page.
          content:
            text/html:
              schema:
                type: string
        '422':
          description: '`criteria` isn''t valid JSON, or OpenSearch rejected the query.'
          content:
            text/plain:
              schema:
                type: string
components:
  securitySchemes:
    sec0:
      type: http
      scheme: basic

````

## Related topics

- [Get a contact summary (v2)](https://docs.operata.com/docs/api-v2-call-summary.md)
- [Quickstart](https://docs.operata.com/docs/quickstart.md)
- [Getting started with the Operata API](https://docs.operata.com/docs/api-getting-started.md)
