{
  "info": {
    "name": "Ringura API v1",
    "description": "Every operation of the Ringura API v1, generated from its OpenAPI document (1.0.0). Set the collection variable token to an API token (cck_...) with the scopes you need, and agentId, queueId, conversationId and webhookUrl for the CRM integration folder. The CRM integration folder follows the guide at https://ringura.com/developers/crm-integration/. Write operations send a new Idempotency-Key each time.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{token}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.ringura.com",
      "type": "string"
    },
    {
      "key": "token",
      "value": "",
      "type": "string"
    },
    {
      "key": "agentId",
      "value": "",
      "type": "string"
    },
    {
      "key": "queueId",
      "value": "",
      "type": "string"
    },
    {
      "key": "conversationId",
      "value": "",
      "type": "string"
    },
    {
      "key": "webhookUrl",
      "value": "https://crm.example.com/hooks/cc",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "CRM integration",
      "description": "The calls a CRM makes, in the order of the guide: https://ringura.com/developers/crm-integration/",
      "item": [
        {
          "name": "1. Find the agent ids to map CRM users to",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/agents",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "agents"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                }
              ]
            },
            "description": "Agents with their presence now.\n\nScope: users:read. Operation id: listAgents."
          }
        },
        {
          "name": "2. Screen-pop: look a contact up by phone",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/contacts?phone=%2B441632960000",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "contacts"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "phone",
                  "value": "%2B441632960000"
                },
                {
                  "key": "email",
                  "value": "",
                  "disabled": true
                }
              ]
            },
            "description": "List contacts, oldest first; filter by phone (E.164) or e-mail for screen-pop.\n\nScope: contacts:read. Operation id: listContacts."
          }
        },
        {
          "name": "3. Click-to-call",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"number\": \"+441632960000\",\n  \"agentId\": \"{{agentId}}\",\n  \"purpose\": \"service\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/calls",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "calls"
              ]
            },
            "description": "Click-to-call from a CRM: the named agent's phone rings first, then the number, presented from one of your verified numbers, through the outbound gate. A refusal (calling hours, DNC, consent, a number called in the last 10 minutes, telephony not active) answers 409 with the reason.\n\nScope: calls:write. Operation id: clickToCall."
          }
        },
        {
          "name": "4. List the event types",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/event-types",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "event-types"
              ]
            },
            "description": "The event catalogue an endpoint can subscribe to.\n\nScope: webhooks:read. Operation id: listEventTypes."
          }
        },
        {
          "name": "5. Subscribe the CRM to events",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"url\": \"{{webhookUrl}}\",\n  \"eventTypes\": [\n    \"routing.assigned\",\n    \"conversation.updated\",\n    \"dialler.disposition\",\n    \"outcome.recorded\"\n  ],\n  \"description\": \"CRM integration\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhook-endpoints",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhook-endpoints"
              ]
            },
            "description": "Subscribe a URL to event types. The signing secret is in this answer only.\n\nScope: webhooks:write. Operation id: createWebhookEndpoint."
          }
        },
        {
          "name": "6. Read the conversation an event names",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/conversations/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "conversations",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{conversationId}}"
                }
              ]
            },
            "description": "One conversation.\n\nScope: conversations:read. Operation id: getConversation."
          }
        },
        {
          "name": "7. Calls and chats of a conversation",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/interactions?conversationId={{conversationId}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "interactions"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "conversationId",
                  "value": "{{conversationId}}"
                },
                {
                  "key": "channel",
                  "value": "",
                  "disabled": true
                }
              ]
            },
            "description": "Calls, chats and threads, oldest first.\n\nScope: interactions:read. Operation id: listInteractions."
          }
        },
        {
          "name": "8. Resolve a conversation with a disposition",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"resolved\",\n  \"disposition\": \"sale\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/conversations/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "conversations",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{conversationId}}"
                }
              ]
            },
            "description": "Change a conversation's subject, priority or tags, or resolve it (which sends the survey and writes back to CRMs).\n\nScope: conversations:write. Operation id: updateConversation."
          }
        },
        {
          "name": "9. Record an outcome from the CRM",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"outcomes\": [\n    {\n      \"externalRef\": \"ext-0001\",\n      \"kind\": \"deposit\",\n      \"currency\": \"EUR\",\n      \"occurredAt\": \"2027-01-04T09:00:00Z\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/outcomes",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "outcomes"
              ]
            },
            "description": "Record deposits and conversions (up to 500). Each is attributed to the agent, campaign, channel and WhatsApp template that last touched the contact inside the attribution window. externalRef makes each idempotent: a repeat is counted once. Items that do not fit are reported in problems and skipped.\n\nScope: outcomes:write. Operation id: recordOutcomes."
          }
        },
        {
          "name": "10. Create a follow-up task",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"kind\": \"crm_followup\",\n  \"title\": \"Call back about the renewal\",\n  \"queueId\": \"{{queueId}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/tasks",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "tasks"
              ]
            },
            "description": "Create a task (a callback, voicemail, web form, CRM follow-up or back-office case) routed to the agents of a queue like a conversation; externalRef makes it idempotent.\n\nScope: tasks:write. Operation id: createTask."
          }
        },
        {
          "name": "11. Dead deliveries",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhook-deliveries?status=dead",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhook-deliveries"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "endpointId",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "dead"
                }
              ]
            },
            "description": "Deliveries, newest first; dead ones are the dead letter.\n\nScope: webhooks:read. Operation id: listWebhookDeliveries."
          }
        },
        {
          "name": "12. Replay a delivery",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhook-deliveries/:id/replay",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhook-deliveries",
                ":id",
                "replay"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "Send a delivered or dead event again, as a new delivery with the same event id.\n\nScope: webhooks:write. Operation id: replayWebhookDelivery."
          }
        }
      ]
    },
    {
      "name": "Contacts",
      "item": [
        {
          "name": "GET /contacts",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/contacts",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "contacts"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "phone",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "email",
                  "value": "",
                  "disabled": true
                }
              ]
            },
            "description": "List contacts, oldest first; filter by phone (E.164) or e-mail for screen-pop.\n\nScope: contacts:read. Operation id: listContacts."
          }
        },
        {
          "name": "POST /contacts",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"identifiers\": [\n    {\n      \"kind\": \"e164\",\n      \"value\": \"example\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/contacts",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "contacts"
              ]
            },
            "description": "Create a contact with at least one phone number or e-mail address.\n\nScope: contacts:write. Operation id: createContact."
          }
        },
        {
          "name": "GET /contacts/{id}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/contacts/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "contacts",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "One contact with its identifiers.\n\nScope: contacts:read. Operation id: getContact."
          }
        },
        {
          "name": "PATCH /contacts/{id}",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"displayName\": \"Example\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/contacts/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "contacts",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "Change a contact's name, language or time zone.\n\nScope: contacts:write. Operation id: updateContact."
          }
        }
      ]
    },
    {
      "name": "Conversations",
      "item": [
        {
          "name": "GET /conversations",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/conversations",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "conversations"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "contactId",
                  "value": "",
                  "disabled": true
                }
              ]
            },
            "description": "List conversations, oldest first.\n\nScope: conversations:read. Operation id: listConversations."
          }
        },
        {
          "name": "GET /conversations/{id}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/conversations/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "conversations",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "One conversation.\n\nScope: conversations:read. Operation id: getConversation."
          }
        },
        {
          "name": "PATCH /conversations/{id}",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"subject\": \"Order question\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/conversations/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "conversations",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "Change a conversation's subject, priority or tags, or resolve it (which sends the survey and writes back to CRMs).\n\nScope: conversations:write. Operation id: updateConversation."
          }
        }
      ]
    },
    {
      "name": "Messages",
      "item": [
        {
          "name": "GET /conversations/{id}/messages",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/conversations/:id/messages",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "conversations",
                ":id",
                "messages"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "A conversation's messages across its threads, oldest first.\n\nScope: messages:read. Operation id: listMessages."
          }
        },
        {
          "name": "POST /conversations/{id}/messages",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"interactionId\": \"0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e\",\n  \"type\": \"text\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/conversations/:id/messages",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "conversations",
                ":id",
                "messages"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "Send a text or an approved WhatsApp template on one of the conversation's threads (web chat, WhatsApp, e-mail or SMS), under every rule the console applies.\n\nScope: messages:write. Operation id: sendMessage."
          }
        }
      ]
    },
    {
      "name": "Interactions",
      "item": [
        {
          "name": "GET /interactions",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/interactions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "interactions"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "conversationId",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "channel",
                  "value": "",
                  "disabled": true
                }
              ]
            },
            "description": "Calls, chats and threads, oldest first.\n\nScope: interactions:read. Operation id: listInteractions."
          }
        },
        {
          "name": "GET /interactions/{id}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/interactions/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "interactions",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "One call, chat or thread.\n\nScope: interactions:read. Operation id: getInteraction."
          }
        }
      ]
    },
    {
      "name": "Campaigns",
      "item": [
        {
          "name": "GET /campaigns",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/campaigns",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "campaigns"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                }
              ]
            },
            "description": "Outbound campaigns, oldest first.\n\nScope: campaigns:read. Operation id: listCampaigns."
          }
        },
        {
          "name": "GET /campaigns/{id}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/campaigns/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "campaigns",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "One campaign.\n\nScope: campaigns:read. Operation id: getCampaign."
          }
        }
      ]
    },
    {
      "name": "People",
      "item": [
        {
          "name": "GET /users",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/users",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "users"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                }
              ]
            },
            "description": "The tenant's console users and their roles.\n\nScope: users:read. Operation id: listUsers."
          }
        },
        {
          "name": "GET /agents",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/agents",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "agents"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                }
              ]
            },
            "description": "Agents with their presence now.\n\nScope: users:read. Operation id: listAgents."
          }
        },
        {
          "name": "GET /queues",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/queues",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "queues"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                }
              ]
            },
            "description": "Queues and the channels they take.\n\nScope: queues:read. Operation id: listQueues."
          }
        }
      ]
    },
    {
      "name": "Wallet",
      "item": [
        {
          "name": "GET /wallet",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/wallet",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "wallet"
              ]
            },
            "description": "The prepaid balance, as strings of minor units.\n\nScope: wallet:read. Operation id: getWallet."
          }
        }
      ]
    },
    {
      "name": "Tickets",
      "item": [
        {
          "name": "GET /tickets",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/tickets",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "tickets"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "tag",
                  "value": "",
                  "disabled": true
                }
              ]
            },
            "description": "Tickets, newest reference number first.\n\nScope: tickets:read. Operation id: listTickets."
          }
        },
        {
          "name": "POST /tickets",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"conversationId\": \"0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/tickets",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "tickets"
              ]
            },
            "description": "Make a conversation a ticket: a reference number, case fields and SLA due times.\n\nScope: tickets:write. Operation id: createTicket."
          }
        },
        {
          "name": "GET /tickets/{id}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/tickets/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "tickets",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "One ticket.\n\nScope: tickets:read. Operation id: getTicket."
          }
        },
        {
          "name": "PATCH /tickets/{id}",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"version\": 0\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/tickets/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "tickets",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "Change a ticket. Send the version you read: a stale version is refused with 409 version_conflict.\n\nScope: tickets:write. Operation id: updateTicket."
          }
        },
        {
          "name": "POST /tickets/{id}/merge",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"into\": \"0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/tickets/:id/merge",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "tickets",
                ":id",
                "merge"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "Merge this ticket into another of the same contact.\n\nScope: tickets:write. Operation id: mergeTicket."
          }
        },
        {
          "name": "POST /tickets/{id}/split",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"interactionIds\": [\n    \"0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/tickets/:id/split",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "tickets",
                ":id",
                "split"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "Move threads off this ticket into a new one.\n\nScope: tickets:write. Operation id: splitTicket."
          }
        }
      ]
    },
    {
      "name": "Webhooks",
      "item": [
        {
          "name": "GET /event-types",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/event-types",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "event-types"
              ]
            },
            "description": "The event catalogue an endpoint can subscribe to.\n\nScope: webhooks:read. Operation id: listEventTypes."
          }
        },
        {
          "name": "GET /webhook-endpoints",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhook-endpoints",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhook-endpoints"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                }
              ]
            },
            "description": "The tenant's webhook endpoints.\n\nScope: webhooks:read. Operation id: listWebhookEndpoints."
          }
        },
        {
          "name": "POST /webhook-endpoints",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"url\": \"{{webhookUrl}}\",\n  \"eventTypes\": [\n    \"routing.assigned\",\n    \"conversation.updated\",\n    \"dialler.disposition\",\n    \"outcome.recorded\"\n  ],\n  \"description\": \"CRM integration\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhook-endpoints",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhook-endpoints"
              ]
            },
            "description": "Subscribe a URL to event types. The signing secret is in this answer only.\n\nScope: webhooks:write. Operation id: createWebhookEndpoint."
          }
        },
        {
          "name": "GET /webhook-endpoints/{id}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhook-endpoints/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhook-endpoints",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "One endpoint.\n\nScope: webhooks:read. Operation id: getWebhookEndpoint."
          }
        },
        {
          "name": "PATCH /webhook-endpoints/{id}",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"url\": \"https://crm.example.com/hooks/cc\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhook-endpoints/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhook-endpoints",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "Change an endpoint's URL, event types or status.\n\nScope: webhooks:write. Operation id: updateWebhookEndpoint."
          }
        },
        {
          "name": "POST /webhook-endpoints/{id}/rotate-secret",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhook-endpoints/:id/rotate-secret",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhook-endpoints",
                ":id",
                "rotate-secret"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "A new signing secret; for 24 hours deliveries are signed under both.\n\nScope: webhooks:write. Operation id: rotateWebhookSecret."
          }
        },
        {
          "name": "GET /webhook-deliveries",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhook-deliveries",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhook-deliveries"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "endpointId",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "",
                  "disabled": true
                }
              ]
            },
            "description": "Deliveries, newest first; dead ones are the dead letter.\n\nScope: webhooks:read. Operation id: listWebhookDeliveries."
          }
        },
        {
          "name": "POST /webhook-deliveries/{id}/replay",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhook-deliveries/:id/replay",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhook-deliveries",
                ":id",
                "replay"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "Send a delivered or dead event again, as a new delivery with the same event id.\n\nScope: webhooks:write. Operation id: replayWebhookDelivery."
          }
        }
      ]
    },
    {
      "name": "Reports",
      "item": [
        {
          "name": "GET /reports/{groupBy}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/reports/:groupBy?from=2027-01-04T09%3A00%3A00Z&to=2027-01-04T09%3A00%3A00Z",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "reports",
                ":groupBy"
              ],
              "query": [
                {
                  "key": "from",
                  "value": "2027-01-04T09%3A00%3A00Z"
                },
                {
                  "key": "to",
                  "value": "2027-01-04T09%3A00%3A00Z"
                }
              ],
              "variable": [
                {
                  "key": "groupBy",
                  "value": "channel"
                }
              ]
            },
            "description": "Historical figures from the metric dictionary by channel, queue, agent or campaign. Ask for text/csv to get CSV.\n\nScope: reports:read. Operation id: getReport."
          }
        }
      ]
    },
    {
      "name": "Surveys",
      "item": [
        {
          "name": "GET /surveys",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/surveys",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "surveys"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "cursor",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "",
                  "disabled": true
                }
              ]
            },
            "description": "CSAT and NPS surveys, newest first.\n\nScope: surveys:read. Operation id: listSurveys."
          }
        },
        {
          "name": "POST /surveys/{id}/responses",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"score\": 0,\n  \"via\": \"ivr\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/surveys/:id/responses",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "surveys",
                ":id",
                "responses"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "Record an answer collected elsewhere: the post-call IVR's digit, or your own form.\n\nScope: surveys:write. Operation id: answerSurvey."
          }
        }
      ]
    },
    {
      "name": "Analytics",
      "item": [
        {
          "name": "GET /exports",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/exports",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "exports"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "dataset",
                  "value": "",
                  "disabled": true
                }
              ]
            },
            "description": "Recent exports, newest first.\n\nScope: analytics:read. Operation id: listExports."
          }
        },
        {
          "name": "POST /exports",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"dataset\": \"conversations\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/exports",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "exports"
              ]
            },
            "description": "Queue an export of a dataset (conversations, work_items, dial_attempts, outcomes, insights) as CSV, JSON lines or Parquet. Start from a time (since), from the watermark of a previous export (cursor), or from the beginning. It is built asynchronously; an export.ready webhook (or polling GET /exports/{id}) says when to download.\n\nScope: analytics:read. Operation id: createExport."
          }
        },
        {
          "name": "GET /exports/{id}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/exports/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "exports",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "One export: its status, size, row count and the watermark to start the next pull from.\n\nScope: analytics:read. Operation id: getExport."
          }
        },
        {
          "name": "GET /exports/{id}/download",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/exports/:id/download",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "exports",
                ":id",
                "download"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "The finished export as text/csv, application/x-ndjson or application/vnd.apache.parquet. X-Export-Watermark carries the watermark for the next pull and X-Export-Has-More says to pull again at once.\n\nScope: analytics:read. Operation id: downloadExport."
          }
        }
      ]
    },
    {
      "name": "Outcomes",
      "item": [
        {
          "name": "POST /outcomes",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"outcomes\": [\n    {\n      \"externalRef\": \"ext-0001\",\n      \"kind\": \"deposit\",\n      \"currency\": \"EUR\",\n      \"occurredAt\": \"2027-01-04T09:00:00Z\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/outcomes",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "outcomes"
              ]
            },
            "description": "Record deposits and conversions (up to 500). Each is attributed to the agent, campaign, channel and WhatsApp template that last touched the contact inside the attribution window. externalRef makes each idempotent: a repeat is counted once. Items that do not fit are reported in problems and skipped.\n\nScope: outcomes:write. Operation id: recordOutcomes."
          }
        },
        {
          "name": "POST /deposits",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"deposits\": [\n    {\n      \"reference\": \"ext-0001\",\n      \"currency\": \"EUR\",\n      \"occurredAt\": \"2027-01-04T09:00:00Z\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/deposits",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "deposits"
              ]
            },
            "description": "Record client deposits from your back office or CRM: one deposit as the body (a webhook) or { deposits: [...] } (up to 500). Each is matched to the contact (contactId, phone, email, or leadExternalId: the id your CRM gave the lead) and attributed to the agents, conversations and campaign that touched the contact inside the deposit window. reference makes each idempotent: a repeat is counted once. firstDeposit marks a first-time deposit; left out, the first deposit on record for the contact is the first. Amounts and references only: no card or bank details are accepted.\n\nScope: outcomes:write. Operation id: recordDeposits."
          }
        }
      ]
    },
    {
      "name": "Calls",
      "item": [
        {
          "name": "POST /calls",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"number\": \"+441632960000\",\n  \"agentId\": \"{{agentId}}\",\n  \"purpose\": \"service\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/calls",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "calls"
              ]
            },
            "description": "Click-to-call from a CRM: the named agent's phone rings first, then the number, presented from one of your verified numbers, through the outbound gate. A refusal (calling hours, DNC, consent, a number called in the last 10 minutes, telephony not active) answers 409 with the reason.\n\nScope: calls:write. Operation id: clickToCall."
          }
        }
      ]
    },
    {
      "name": "Leads",
      "item": [
        {
          "name": "POST /leads",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"sourceId\": \"0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e\",\n  \"phone\": \"+441632960000\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/leads",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "leads"
              ]
            },
            "description": "A new lead for a speed-to-lead source: top of its campaign's hopper and its sequence's first step due now; dialled or messaged at once when the gate allows.\n\nScope: leads:write. Operation id: createLead."
          }
        }
      ]
    },
    {
      "name": "Tasks",
      "item": [
        {
          "name": "POST /tasks",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"kind\": \"crm_followup\",\n  \"title\": \"Call back about the renewal\",\n  \"queueId\": \"{{queueId}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/tasks",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "tasks"
              ]
            },
            "description": "Create a task (a callback, voicemail, web form, CRM follow-up or back-office case) routed to the agents of a queue like a conversation; externalRef makes it idempotent.\n\nScope: tasks:write. Operation id: createTask."
          }
        },
        {
          "name": "GET /tasks/{id}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/tasks/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "tasks",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "One task with its routing state.\n\nScope: tasks:read. Operation id: getTask."
          }
        }
      ]
    },
    {
      "name": "Notifications",
      "item": [
        {
          "name": "POST /notifications",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"purpose\": \"utility\",\n  \"channels\": [\n    \"whatsapp\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/notifications",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "notifications"
              ]
            },
            "description": "Send an order update, reminder or one-time code on WhatsApp (an approved template), SMS or e-mail, in the recipient's preferred order with fallback. The message lands on the contact's timeline; a reply routes to agents.\n\nScope: notifications:write. Operation id: sendNotification."
          }
        },
        {
          "name": "GET /notifications/{id}",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/notifications/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "notifications",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "One notification with every channel tried.\n\nScope: notifications:write. Operation id: getNotification."
          }
        },
        {
          "name": "PUT /contacts/{id}/notification-preferences",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "A new key for each request; send the same key again to retry this one safely."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"channels\": [\n    \"whatsapp\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v1/contacts/:id/notification-preferences",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "contacts",
                ":id",
                "notification-preferences"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f5a0-7c1e-7d3a-9b2e-3f4a5b6c7d8e"
                }
              ]
            },
            "description": "A contact's preferred channel order and the channels it opted out of.\n\nScope: contacts:write. Operation id: setNotificationPreferences."
          }
        }
      ]
    },
    {
      "name": "Quality",
      "item": [
        {
          "name": "GET /qa/evaluations",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/qa/evaluations",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "qa",
                "evaluations"
              ],
              "query": [
                {
                  "key": "agentId",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "",
                  "disabled": true
                }
              ]
            },
            "description": "Human QA evaluations, newest first (drafts included).\n\nScope: qa:read. Operation id: listQaEvaluations."
          }
        }
      ]
    }
  ]
}
