Narzędzia
Pełny katalog narzędzi serwera MCP Mediflo z wymaganym zakresem i schematem wejścia.
Poniżej wszystkie narzędzia, które wystawia serwer MCP Mediflo. Twój klient zobaczy tylko te, na które pozwalają zakresy użytego klucza — reszta nie pojawi się w tools/list i nie da się jej wywołać.
Grupy porządkują listę według zakresu, ale wewnątrz każdej grupy kolejność jest ta, w której zwraca narzędzia tools/list: kolejność stawiania bota. Orientacja (get_server_info), wartości domyślne, utworzenie bota, konfiguracja, workflow, procedury, publikacja, weryfikacja gotowości — czytanie od góry do dołu prowadzi przez cały proces.
Brakuje narzędzia?
Wywołaj get_server_info. Zwraca zakresy Twojego klucza i dokładną listę narzędzi, którą ten klucz widzi — to najszybszy sposób odróżnić brak zakresu od pomyłki w nazwie. Więcej: rozwiązywanie problemów.
Argumenty i limity odwzorowują endpoint REST, który dane narzędzie opakowuje — łącznie z maksimum limit równym 100. Wyniki wracają jako dokument JSON w bloku tekstowym, z tym samym obiektem paginacji page, limit, total, totalPages. Narzędzia modyfikujące dokładają krótką tablicę nextSteps z nazwą wywołania, które logicznie następuje dalej.
Ten sam katalog w wersji maszynowej: /api/mcp-tools.json. Pełna referencja odpowiadających endpointów REST: REST API.
Dostępne dla każdego klucza2 narzędzia
get_server_info
bez zakresuZwraca informacje o serwerze: wersję API, negocjowane wersje protokołu i listę narzędzi dostępnych dla użytego klucza.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}get_webhook_event_catalog
bez zakresuZwraca katalog zdarzeń webhookowych z przykładowymi payloadami, opisem podpisu i zasadami dostarczania — wszystkim, czego potrzeba, aby napisać odbiornik.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}Boty: konfiguracja, workflow i publikacja26 narzędzi
get_recommended_defaults
bots.readZwraca ustawienia rekomendowane przez Mediflo dla bota głosowego — modele, sposób prowadzenia rozmowy, analizę i wyszukiwanie w bazie wiedzy. Nowe boty startują już z tymi ustawieniami.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}list_extraction_models
bots.readLista modeli dostępnych do analizy po rozmowie, z oznaczonym modelem rekomendowanym.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}list_bots
bots.readLista botów organizacji (telefon i czat) wraz z lokalizacją, numerem telefonu i informacją, czy bot ma opublikowaną wersję.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"page": {
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"limit": {
"default": 50,
"type": "integer",
"minimum": 1,
"maximum": 100
}
}
}get_bot
bots.readZwraca dane jednego bota i wskazuje, na której opublikowanej wersji obecnie działa.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"botId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"botId"
]
}create_bot
bots.writeTworzy bota (telefon lub czat) od razu skonfigurowanego zgodnie z rekomendacjami Mediflo.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"locationId": {
"anyOf": [
{
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
},
{
"type": "string",
"const": ""
}
]
},
{
"type": "null"
}
]
},
"phoneNumberId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"maxConcurrentCalls": {
"default": 5,
"type": "number",
"minimum": 1,
"maximum": 100
},
"isActive": {
"default": true,
"type": "boolean"
},
"priority": {
"default": 50,
"type": "number",
"minimum": 0,
"maximum": 100
},
"description": {
"type": "string"
},
"operatingHoursStart": {
"type": "string"
},
"operatingHoursEnd": {
"type": "string"
},
"operatingDays": {
"type": "array",
"items": {
"type": "number"
}
},
"country": {
"default": "PL",
"type": "string",
"minLength": 2,
"maxLength": 2
},
"channels": {
"minItems": 1,
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"enum": [
"WEB_CHAT",
"VOICE_INBOUND",
"VOICE_OUTBOUND"
]
}
}
},
"required": [
"name"
],
"additionalProperties": false
}update_bot
bots.writeZmienia nazwę bota, to czy jest włączony, oraz jego kanały. Działa od razu.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"locationId": {
"anyOf": [
{
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
},
{
"type": "string",
"const": ""
}
]
},
{
"type": "null"
}
]
},
"phoneNumberId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"maxConcurrentCalls": {
"type": "number",
"minimum": 1,
"maximum": 100
},
"isActive": {
"type": "boolean"
},
"priority": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"description": {
"type": "string"
},
"operatingHoursStart": {
"type": "string"
},
"operatingHoursEnd": {
"type": "string"
},
"operatingDays": {
"type": "array",
"items": {
"type": "number"
}
},
"country": {
"type": "string",
"minLength": 2,
"maxLength": 2
},
"channels": {
"minItems": 1,
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"enum": [
"WEB_CHAT",
"VOICE_INBOUND",
"VOICE_OUTBOUND"
]
}
},
"botId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"botId"
],
"additionalProperties": false
}get_bot_config
bots.readZwraca roboczą konfigurację bota: prompt, powitanie, ustawienia czatu, zabezpieczenia, narzędzia i analizę po rozmowie.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"botId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"botId"
]
}get_prompting_guidance
bots.readZwraca zasady pisania promptu bota — reguły dla głosu i dla czatu na stronie, a dla pracowników Mediflo także wymagania modelu, na którym bot działa.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"model": {
"type": "string",
"minLength": 1
},
"botId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}update_bot_config
bots.writeEdytuje roboczą konfigurację bota. Zmiana zacznie działać dopiero po opublikowaniu konfiguracji.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"agentPromptText": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"remarksPromptText": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"remarksOutputSchemaJson": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
{
"type": "null"
}
]
},
"toolsConfig": {
"anyOf": [
{
"type": "object",
"properties": {
"end_call": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"const": true
},
"description": {
"type": "string",
"maxLength": 4000
},
"disableInterruptions": {
"type": "boolean"
},
"responseTimeoutSecs": {
"type": "integer",
"minimum": 1,
"maximum": 120
}
},
"required": [
"enabled"
]
},
"detected_answering_machine": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"description": {
"type": "string",
"maxLength": 4000
},
"disableInterruptions": {
"type": "boolean"
},
"responseTimeoutSecs": {
"type": "integer",
"minimum": 1,
"maximum": 120
}
},
"required": [
"enabled"
]
},
"transfer_to_consultant": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"const": true
},
"ringTimeoutSecs": {
"default": 30,
"type": "integer",
"minimum": 10,
"maximum": 120
},
"onNoAnswer": {
"default": "resume",
"type": "string",
"enum": [
"offer_message",
"resume"
]
},
"destination": {
"oneOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "consultant_queue"
},
"queueId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"kind",
"queueId"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "phone"
},
"mode": {
"type": "string",
"enum": [
"warm",
"cold_bridge",
"cold_handoff"
]
},
"number": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "static"
},
"value": {
"type": "string",
"pattern": "^\\+[1-9]\\d{6,14}$"
}
},
"required": [
"type",
"value"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "session_variable"
},
"name": {
"type": "string",
"pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
}
},
"required": [
"type",
"name"
],
"additionalProperties": false
}
]
},
"gate": {
"default": "dtmf",
"type": "string",
"enum": [
"dtmf",
"amd",
"dtmf_amd",
"none"
]
},
"voicemailRescue": {
"default": true,
"type": "boolean"
},
"briefing": {
"type": "object",
"properties": {
"preAccept": {
"default": [
"clinic_only",
"topic"
],
"type": "array",
"items": {
"type": "string",
"enum": [
"clinic_only",
"caller_number",
"topic"
]
}
},
"postAccept": {
"default": "topic",
"type": "string",
"enum": [
"none",
"topic",
"summary"
]
}
}
}
},
"required": [
"kind",
"mode",
"number"
],
"additionalProperties": false
}
]
},
"description": {
"type": "string",
"maxLength": 4000
},
"disableInterruptions": {
"type": "boolean"
},
"responseTimeoutSecs": {
"type": "integer",
"minimum": 1,
"maximum": 120
}
},
"required": [
"enabled",
"destination"
]
},
"mcp_servers": {
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"enabled": {
"type": "boolean"
},
"url": {
"type": "string",
"maxLength": 2000,
"format": "uri"
},
"transport": {
"default": "auto",
"type": "string",
"enum": [
"auto",
"streamable_http",
"sse"
]
},
"allowed_tools": {
"default": null,
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
{
"type": "null"
}
]
},
"async_mode": {
"default": "none",
"description": "Which of this MCP server's tools run asynchronously — the bot keeps talking to the caller while the tool call runs, voices an interim acknowledgment for slow calls, and delivers the result when ready. 'none' (default): every call blocks the conversation. 'all': every exposed tool runs async. 'selected': only the tools listed in async_tools. Unknown values fail closed to 'none'.",
"type": "string",
"enum": [
"none",
"all",
"selected"
]
},
"async_tools": {
"default": null,
"description": "Tool names that run asynchronously when async_mode is 'selected'; null otherwise. Only tools also exposed by the server (and allowed by allowed_tools) take effect. 'selected' with an empty or null list means nothing runs async (fail closed).",
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
{
"type": "null"
}
]
},
"discovered_tools": {
"default": [],
"maxItems": 500,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"description": {
"type": "string",
"maxLength": 2000
},
"input_schema": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"name"
]
}
},
"client_session_timeout_seconds": {
"type": "number",
"minimum": 1,
"maximum": 300
},
"parameter_bindings": {
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1
},
"additionalProperties": {
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1
},
"additionalProperties": {
"oneOf": [
{
"type": "object",
"properties": {
"source": {
"type": "string",
"const": "session_variable"
},
"name": {
"type": "string",
"pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
}
},
"required": [
"source",
"name"
]
},
{
"type": "object",
"properties": {
"source": {
"type": "string",
"const": "constant"
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"required": [
"source",
"value"
]
}
]
}
}
},
"response_variables": {
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1
},
"additionalProperties": {
"maxItems": 16,
"type": "array",
"items": {
"type": "object",
"properties": {
"from": {
"type": "string",
"minLength": 1
},
"to": {
"type": "string",
"pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
}
},
"required": [
"from",
"to"
]
}
}
},
"tool_gates": {
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"additionalProperties": {
"maxItems": 4,
"type": "array",
"items": {
"type": "object",
"properties": {
"requires": {
"type": "object",
"properties": {
"variable": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The session fact to test: identity_verified, a declared workflow/procedure variable, or a seeded session key."
},
"operator": {
"type": "string",
"enum": [
"eq",
"neq",
"gt",
"gte",
"lt",
"lte",
"is_true",
"is_false",
"is_set",
"is_empty"
],
"description": "Comparison to apply. The unary operators (is_true/is_false/is_set/is_empty) take no value."
},
"value": {
"description": "Value to compare against. Required for the binary operators, forbidden for the unary ones.",
"type": "string",
"maxLength": 200
},
"label": {
"description": "Human wording of the fact for the default spoken denial (\"najpierw musimy ustalić: {label}\"). Without it the runner de-snake-cases the variable key, which reads badly aloud. Ignored when `message` is set.",
"type": "string",
"minLength": 1,
"maxLength": 80
}
},
"required": [
"variable",
"operator"
],
"additionalProperties": false
},
"message": {
"description": "Polish steer returned to the model when the gate denies the call. Say what must happen FIRST. Stored as a single line. Omit for the standard wording.",
"type": "string",
"maxLength": 300
}
},
"required": [
"requires"
],
"additionalProperties": false
}
},
"description": "Preconditions per tool name: {\"book_visit\": [{requires: {...}, label?, message?}]}. At most 4 gates on one tool — every denial costs a conversational turn, so gates are for PHI access and irreversible actions, not for shaping the conversation. `requires.label` is the human name of the fact, spoken in the default Polish denial (\"najpierw musimy ustalić: {label}\"); without it the runner de-snake-cases the variable key, which reads badly aloud. `message` replaces the whole denial line and makes `label` unused. Prefer BOOLEAN facts with is_true/is_false: the runner evaluates is_true with truthy-string semantics (mirroring the workflow walker), so a gate on a free-text variable passes on any non-empty answer."
},
"managed": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "mediflo_scheduling"
},
"capabilities": {
"type": "object",
"properties": {
"browse": {
"type": "boolean"
},
"book": {
"type": "boolean"
},
"modify": {
"type": "boolean"
},
"contact": {
"default": false,
"type": "boolean"
},
"cases": {
"type": "boolean"
}
},
"required": [
"browse",
"book",
"modify"
]
},
"credential_ref": {
"type": "string",
"const": "scheduling-toolset"
}
},
"required": [
"kind",
"capabilities",
"credential_ref"
],
"additionalProperties": false
},
"secrets": {
"default": [],
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"key": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_-]{0,63}$"
},
"value": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 4096
},
{
"type": "object",
"properties": {
"encrypted": {
"type": "string",
"minLength": 1
},
"iv": {
"type": "string",
"minLength": 1
},
"tag": {
"type": "string",
"minLength": 1
}
},
"required": [
"encrypted",
"iv",
"tag"
]
}
]
}
},
"required": [
"id",
"key"
]
}
}
},
"required": [
"id",
"name",
"enabled",
"url"
]
}
},
"http_tools": {
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"name": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$"
},
"enabled": {
"default": true,
"type": "boolean"
},
"description": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"url": {
"type": "string",
"format": "uri",
"pattern": "^https:\\/\\/.*"
},
"method": {
"default": "POST",
"type": "string",
"enum": [
"GET",
"POST",
"PUT",
"PATCH",
"DELETE"
]
},
"queryParams": {
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"key",
"value"
]
}
},
"bodySchema": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"argsOnly": {
"default": true,
"type": "boolean"
},
"timeoutMs": {
"default": 8000,
"type": "integer",
"minimum": 1000,
"maximum": 20000
},
"retries": {
"default": 0,
"type": "integer",
"minimum": 0,
"maximum": 2
},
"parameter_bindings": {
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1
},
"additionalProperties": {
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1
},
"additionalProperties": {
"oneOf": [
{
"type": "object",
"properties": {
"source": {
"type": "string",
"const": "session_variable"
},
"name": {
"type": "string",
"pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
}
},
"required": [
"source",
"name"
]
},
{
"type": "object",
"properties": {
"source": {
"type": "string",
"const": "constant"
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"required": [
"source",
"value"
]
}
]
}
}
},
"response_variables": {
"maxItems": 16,
"type": "array",
"items": {
"type": "object",
"properties": {
"from": {
"type": "string",
"minLength": 1
},
"to": {
"type": "string",
"pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
}
},
"required": [
"from",
"to"
]
}
},
"gates": {
"description": "Preconditions on this tool (at most 4). A denied call returns a corrective message to the model instead of running — it never raises. NOT YET ENFORCED: gates take effect only once the bot-side http_tools executor ships (the runner evaluates gates at the MCP call wrapper today), so a gate declared here is stored and validated but the tool is still callable — publish warns about it. `requires.label` names the fact in the default Polish denial; `message` replaces the whole line. Prefer boolean facts: is_true uses truthy-string semantics, so a gate on free text passes on any non-empty answer.",
"maxItems": 4,
"type": "array",
"items": {
"type": "object",
"properties": {
"requires": {
"type": "object",
"properties": {
"variable": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The session fact to test: identity_verified, a declared workflow/procedure variable, or a seeded session key."
},
"operator": {
"type": "string",
"enum": [
"eq",
"neq",
"gt",
"gte",
"lt",
"lte",
"is_true",
"is_false",
"is_set",
"is_empty"
],
"description": "Comparison to apply. The unary operators (is_true/is_false/is_set/is_empty) take no value."
},
"value": {
"description": "Value to compare against. Required for the binary operators, forbidden for the unary ones.",
"type": "string",
"maxLength": 200
},
"label": {
"description": "Human wording of the fact for the default spoken denial (\"najpierw musimy ustalić: {label}\"). Without it the runner de-snake-cases the variable key, which reads badly aloud. Ignored when `message` is set.",
"type": "string",
"minLength": 1,
"maxLength": 80
}
},
"required": [
"variable",
"operator"
],
"additionalProperties": false
},
"message": {
"description": "Polish steer returned to the model when the gate denies the call. Say what must happen FIRST. Stored as a single line. Omit for the standard wording.",
"type": "string",
"maxLength": 300
}
},
"required": [
"requires"
],
"additionalProperties": false
}
},
"headers": {
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"key": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_-]{0,63}$"
},
"value": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 4096
},
{
"type": "object",
"properties": {
"encrypted": {
"type": "string",
"minLength": 1
},
"iv": {
"type": "string",
"minLength": 1
},
"tag": {
"type": "string",
"minLength": 1
}
},
"required": [
"encrypted",
"iv",
"tag"
]
}
]
}
},
"required": [
"id",
"key"
]
}
}
},
"required": [
"id",
"name",
"description",
"url"
]
}
}
},
"required": [
"end_call",
"detected_answering_machine"
]
},
{
"type": "null"
}
]
},
"guardrailsConfig": {
"anyOf": [
{
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"focus": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"executionMode": {
"default": "streaming",
"type": "string",
"enum": [
"streaming",
"blocking"
]
},
"action": {
"default": "end_call",
"type": "string",
"enum": [
"end_call",
"retry"
]
},
"fallbackMessage": {
"type": "string",
"maxLength": 1000
}
},
"required": [
"enabled"
]
},
"manipulation": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"executionMode": {
"default": "streaming",
"type": "string",
"enum": [
"streaming",
"blocking"
]
},
"action": {
"default": "end_call",
"type": "string",
"enum": [
"end_call",
"retry"
]
},
"fallbackMessage": {
"type": "string",
"maxLength": 1000
}
},
"required": [
"enabled"
]
},
"content": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"executionMode": {
"default": "streaming",
"type": "string",
"enum": [
"streaming",
"blocking"
]
},
"action": {
"default": "end_call",
"type": "string",
"enum": [
"end_call",
"retry"
]
},
"fallbackMessage": {
"type": "string",
"maxLength": 1000
},
"categories": {
"type": "object",
"properties": {
"sexual": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"severity": {
"default": "medium",
"type": "string",
"enum": [
"low",
"medium",
"high"
]
}
},
"required": [
"enabled"
]
},
"violence": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"severity": {
"default": "medium",
"type": "string",
"enum": [
"low",
"medium",
"high"
]
}
},
"required": [
"enabled"
]
},
"harassment": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"severity": {
"default": "medium",
"type": "string",
"enum": [
"low",
"medium",
"high"
]
}
},
"required": [
"enabled"
]
},
"self_harm": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"severity": {
"default": "medium",
"type": "string",
"enum": [
"low",
"medium",
"high"
]
}
},
"required": [
"enabled"
]
},
"profanity": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"severity": {
"default": "medium",
"type": "string",
"enum": [
"low",
"medium",
"high"
]
}
},
"required": [
"enabled"
]
},
"politics_religion": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"severity": {
"default": "medium",
"type": "string",
"enum": [
"low",
"medium",
"high"
]
}
},
"required": [
"enabled"
]
}
},
"required": [
"sexual",
"violence",
"harassment",
"self_harm",
"profanity",
"politics_religion"
]
}
},
"required": [
"enabled",
"categories"
]
},
"custom": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"prompt": {
"type": "string",
"minLength": 1,
"maxLength": 4000
},
"enabled": {
"type": "boolean"
},
"executionMode": {
"default": "streaming",
"type": "string",
"enum": [
"streaming",
"blocking"
]
},
"action": {
"default": "end_call",
"type": "string",
"enum": [
"end_call",
"retry"
]
},
"fallbackMessage": {
"type": "string",
"maxLength": 1000
}
},
"required": [
"id",
"name",
"prompt",
"enabled"
]
}
}
},
"required": [
"enabled",
"focus",
"manipulation",
"content",
"custom"
]
},
{
"type": "null"
}
]
},
"greetingConfig": {
"anyOf": [
{
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "static"
},
"text": {
"type": "string",
"minLength": 1
},
"allowInterruptions": {
"default": false,
"type": "boolean"
},
"byDirection": {
"type": "object",
"properties": {
"inbound": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "static"
},
"text": {
"type": "string",
"minLength": 1
},
"allowInterruptions": {
"default": false,
"type": "boolean"
}
},
"required": [
"type",
"text"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "llm"
},
"prompt": {
"type": "string",
"minLength": 1
},
"allowInterruptions": {
"default": false,
"type": "boolean"
}
},
"required": [
"type",
"prompt"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "off"
}
},
"required": [
"type"
],
"additionalProperties": false
}
]
},
"outbound": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "static"
},
"text": {
"type": "string",
"minLength": 1
},
"allowInterruptions": {
"default": false,
"type": "boolean"
}
},
"required": [
"type",
"text"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "llm"
},
"prompt": {
"type": "string",
"minLength": 1
},
"allowInterruptions": {
"default": false,
"type": "boolean"
}
},
"required": [
"type",
"prompt"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "off"
}
},
"required": [
"type"
],
"additionalProperties": false
}
]
}
},
"additionalProperties": false
}
},
"required": [
"type",
"text"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "llm"
},
"prompt": {
"type": "string",
"minLength": 1
},
"allowInterruptions": {
"default": false,
"type": "boolean"
},
"byDirection": {
"type": "object",
"properties": {
"inbound": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "static"
},
"text": {
"type": "string",
"minLength": 1
},
"allowInterruptions": {
"default": false,
"type": "boolean"
}
},
"required": [
"type",
"text"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "llm"
},
"prompt": {
"type": "string",
"minLength": 1
},
"allowInterruptions": {
"default": false,
"type": "boolean"
}
},
"required": [
"type",
"prompt"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "off"
}
},
"required": [
"type"
],
"additionalProperties": false
}
]
},
"outbound": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "static"
},
"text": {
"type": "string",
"minLength": 1
},
"allowInterruptions": {
"default": false,
"type": "boolean"
}
},
"required": [
"type",
"text"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "llm"
},
"prompt": {
"type": "string",
"minLength": 1
},
"allowInterruptions": {
"default": false,
"type": "boolean"
}
},
"required": [
"type",
"prompt"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "off"
}
},
"required": [
"type"
],
"additionalProperties": false
}
]
}
},
"additionalProperties": false
}
},
"required": [
"type",
"prompt"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "none"
},
"byDirection": {
"type": "object",
"properties": {
"inbound": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "static"
},
"text": {
"type": "string",
"minLength": 1
},
"allowInterruptions": {
"default": false,
"type": "boolean"
}
},
"required": [
"type",
"text"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "llm"
},
"prompt": {
"type": "string",
"minLength": 1
},
"allowInterruptions": {
"default": false,
"type": "boolean"
}
},
"required": [
"type",
"prompt"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "off"
}
},
"required": [
"type"
],
"additionalProperties": false
}
]
},
"outbound": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "static"
},
"text": {
"type": "string",
"minLength": 1
},
"allowInterruptions": {
"default": false,
"type": "boolean"
}
},
"required": [
"type",
"text"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "llm"
},
"prompt": {
"type": "string",
"minLength": 1
},
"allowInterruptions": {
"default": false,
"type": "boolean"
}
},
"required": [
"type",
"prompt"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "off"
}
},
"required": [
"type"
],
"additionalProperties": false
}
]
}
},
"additionalProperties": false
}
},
"required": [
"type"
]
}
]
},
{
"type": "null"
}
]
},
"channelSettings": {
"anyOf": [
{
"type": "object",
"properties": {
"webChat": {
"type": "object",
"properties": {
"greeting": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "static"
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"type",
"text"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "llm"
},
"prompt": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"type",
"prompt"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "none"
}
},
"required": [
"type"
]
}
]
},
"handoffMessage": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"guardrailFallbackMessage": {
"type": "string",
"minLength": 1,
"maxLength": 500
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"sessionInitConfig": {
"anyOf": [
{
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"const": true
},
"url": {
"type": "string",
"format": "uri",
"pattern": "^https:\\/\\/.*"
},
"timeout_ms": {
"default": 8000,
"type": "integer",
"minimum": 1000,
"maximum": 15000
},
"secrets": {
"default": [],
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"key": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_-]{0,63}$"
},
"value": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 4096
},
{
"type": "object",
"properties": {
"encrypted": {
"type": "string",
"minLength": 1
},
"iv": {
"type": "string",
"minLength": 1
},
"tag": {
"type": "string",
"minLength": 1
}
},
"required": [
"encrypted",
"iv",
"tag"
]
}
]
}
},
"required": [
"id",
"key"
]
}
}
},
"required": [
"enabled",
"url"
]
},
{
"type": "null"
}
]
},
"turnTakingMode": {
"type": "string",
"enum": [
"eager",
"regular",
"lazy"
]
},
"promptVariableMetadata": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
},
"additionalProperties": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 100
},
"description": {
"type": "string",
"maxLength": 500
},
"defaultValue": {
"type": "string",
"maxLength": 1000
},
"type": {
"type": "string",
"enum": [
"string",
"boolean",
"number",
"date",
"time",
"datetime",
"email",
"url",
"phone",
"currency"
]
}
}
}
},
{
"type": "null"
}
]
},
"entryProcedureId": {
"description": "Id of the DETERMINISTIC procedure that runs as this bot’s whole call flow. null means the bot has no entry procedure and follows its prompt (or its active legacy workflow) instead. A bot cannot have BOTH an entry procedure and an active workflow — publish refuses that combination (PROCEDURES_WORKFLOW_CONFLICT).",
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"expectedUpdatedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
"forceOverwrite": {
"type": "boolean"
},
"botId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"botId"
],
"additionalProperties": false
}create_workflow_from_template
bots.writeTworzy przepływ rozmowy dla bota na podstawie gotowego szablonu (potwierdzanie wizyt, rejestracja albo pusty).
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"botId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"description": {
"type": "string",
"maxLength": 2000
},
"template": {
"type": "string",
"enum": [
"visit-confirmation",
"registration",
"inbound-intake",
"blank"
]
}
},
"required": [
"botId",
"name",
"template"
]
}get_workflow
bots.readZwraca jeden przepływ rozmowy wraz ze wszystkimi krokami.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"workflowId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"workflowId"
]
}update_workflow
bots.writeEdytuje przepływ rozmowy. Nieprawidłowe przepływy są odrzucane.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"workflowId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"description": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
]
},
"definition": {},
"expectedVersion": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"workflowId"
]
}validate_workflow
bots.readSprawdza przepływ rozmowy pod kątem błędów, niczego nie zapisując.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"definition": {}
},
"required": [
"definition"
]
}activate_workflow
bots.writeUstawia przepływ rozmowy jako obowiązujący dla bota, wyłączając pozostałe.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"workflowId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"workflowId"
]
}deactivate_workflow
bots.writeWyłącza przepływ rozmowy — bot działa wtedy wyłącznie na podstawie promptu; przepływ można później włączyć ponownie.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"workflowId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"workflowId"
]
}delete_workflow
bots.writeUsuwa przepływ rozmowy — aktywny przepływ jest wyłączany i usuwany w jednym kroku.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"workflowId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"workflowId"
]
}list_procedures
bots.readLista umiejętności i procedur bota w kolejności priorytetu, z rodzajem, statusem i stanem walidacji.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"botId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"botId"
]
}get_procedure
bots.readZwraca jedną umiejętność lub procedurę w całości — wyzwalacz, treść albo kroki oraz bramki narzędzi.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"procedureId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"procedureId"
]
}create_procedure
bots.writeDodaje umiejętność (swobodne wskazówki, które bot wczytuje na żądanie) albo procedurę deterministyczną (kroki kompilowane do przepływu rozmowy). Zapisywana jako robocza; zaczyna działać po publikacji.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"botId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"type": {
"type": "string",
"enum": [
"FREE_FORM",
"DETERMINISTIC"
]
},
"trigger": {
"anyOf": [
{
"type": "string",
"maxLength": 240
},
{
"type": "null"
}
]
},
"content": {},
"enabled": {
"type": "boolean"
}
},
"required": [
"botId",
"name",
"type",
"content"
]
}update_procedure
bots.writeEdytuje roboczą umiejętność lub procedurę. Wersja robocza może być niekompletna — walidacja odbywa się przy publikacji.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"procedureId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"trigger": {
"anyOf": [
{
"type": "string",
"maxLength": 240
},
{
"type": "null"
}
]
},
"content": {},
"position": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"enabled": {
"type": "boolean"
}
},
"required": [
"procedureId"
]
}delete_procedure
bots.writeUsuwa umiejętność lub procedurę z wersji roboczej. Opublikowana wersja zachowuje ją do następnej publikacji.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"procedureId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"procedureId"
]
}reorder_procedures
bots.writeUstala kolejność priorytetów umiejętności i procedur bota. Lista musi zawierać wszystkie z nich.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"botId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"procedureIds": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"required": [
"botId",
"procedureIds"
]
}publish_bot_config
bots.writePublikuje roboczą konfigurację jako nową wersję. Do tego momentu bot — również w podglądzie — działa na poprzedniej wersji.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"botId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"label": {
"type": "string",
"maxLength": 255
}
},
"required": [
"botId"
]
}list_config_versions
bots.readLista opublikowanych wersji konfiguracji bota z oznaczeniem wersji obecnie używanej.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"botId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"page": {
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"limit": {
"default": 50,
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [
"botId"
]
}rollback_bot_config
bots.writePrzywraca wcześniejszą opublikowaną wersję konfiguracji. Zmiana działa od razu.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"botId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"snapshotId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"botId",
"snapshotId"
]
}get_bot_readiness
bots.readSprawdza gotowość bota na jego kanałach: widget czatu dla strony oraz numer telefonu tylko wtedy, gdy bot wykonuje połączenia.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"botId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"botId"
]
}Baza wiedzy3 narzędzia
list_knowledge_sources
knowledge.readLista artykułów w bazie wiedzy bota wraz ze statusem indeksowania.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"botId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"page": {
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"limit": {
"default": 50,
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [
"botId"
]
}add_knowledge_source
knowledge.writeDodaje artykuł tekstowy do bazy wiedzy bota.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "text"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"bodyText": {
"type": "string",
"minLength": 1,
"maxLength": 500000
},
"articleType": {
"default": "text",
"type": "string",
"enum": [
"text",
"faq",
"info",
"pricing",
"doctors"
]
},
"structuredContent": {},
"questionVariants": {
"maxItems": 12,
"type": "array",
"items": {
"type": "string",
"minLength": 3,
"maxLength": 300
}
},
"tags": {
"maxItems": 16,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 48
}
},
"usageMode": {
"default": "auto",
"type": "string",
"enum": [
"auto",
"prompt"
]
},
"publishState": {
"default": "published",
"type": "string",
"enum": [
"draft",
"published"
]
},
"category": {
"anyOf": [
{
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 80
},
{
"type": "null"
}
]
},
{
"type": "null"
}
]
},
"expiresAt": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
{
"type": "null"
}
]
},
"botId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"type",
"title",
"botId"
]
}update_knowledge_settings
knowledge.writeZmienia ustawienia wyszukiwania w bazie wiedzy bota, w tym to, czy baza jest w ogóle używana.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"retrievalMode": {
"type": "string",
"enum": [
"auto",
"every_turn",
"off"
]
},
"requireKnowledge": {
"type": "boolean"
},
"maxCharacters": {
"type": "integer",
"minimum": 200,
"maximum": 20000
},
"maxChunks": {
"type": "integer",
"minimum": 1,
"maximum": 20
},
"maxVectorDistance": {
"type": "number",
"minimum": 0,
"maximum": 2
},
"searchDepth": {
"type": "integer",
"minimum": 1,
"maximum": 500
},
"timeoutMs": {
"type": "integer",
"minimum": 1,
"maximum": 5000
},
"requiredTimeoutMs": {
"type": "integer",
"minimum": 1,
"maximum": 5000
},
"botId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"enabled",
"retrievalMode",
"requireKnowledge",
"maxCharacters",
"maxChunks",
"maxVectorDistance",
"searchDepth",
"timeoutMs",
"requiredTimeoutMs",
"botId"
]
}scheduling11 narzędzi
list_appointment_types
scheduling.readZwraca typy wizyt dostępnych do rezerwacji online: czas trwania, cenę (tylko dla wizyt prywatnych), opis i specjalistów.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"specialistId": {
"description": "Only types this specialist performs.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"locationId": {
"description": "Only types offered at this site.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}list_specialists
scheduling.readZwraca specjalistów przyjmujących rezerwacje online wraz z tytułem, specjalizacją i placówkami.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"locationId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"appointmentTypeId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}get_booking_requirements
scheduling.readZwraca wymagane i opcjonalne dane pacjenta, zasady wyprzedzenia i odwołań, adresy placówek oraz informację, czy rezerwacje są w ogóle możliwe.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}get_available_slots
scheduling.readZwraca wolne terminy dla wybranego typu wizyty wraz z tokenem terminu i gotową polską etykietą do przeczytania.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"appointmentTypeId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"specialistId": {
"description": "Omit to search every specialist who performs the type.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"locationId": {
"description": "Only for a location the caller chose. Omit it otherwise: an assistant that serves one location searches it by itself.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First day to search, YYYY-MM-DD, inclusive."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last day to search, YYYY-MM-DD, inclusive."
},
"timeOfDay": {
"default": "any",
"description": "Filter by part of the day when the caller asked for one. morning is before 12:00, afternoon 12:00–17:00, evening from 17:00.",
"type": "string",
"enum": [
"morning",
"afternoon",
"evening",
"any"
]
},
"limit": {
"default": 10,
"description": "How many slots to return. Present at most three per turn.",
"type": "integer",
"minimum": 1,
"maximum": 25
}
},
"required": [
"appointmentTypeId",
"from",
"to"
]
}hold_slot
scheduling.bookBlokuje wybrany termin na kilka minut, żeby nikt go nie zajął w trakcie rozmowy.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"slotToken": {
"type": "string",
"minLength": 1,
"maxLength": 4096
}
},
"required": [
"slotToken"
]
}book_appointment
scheduling.bookRezerwuje wizytę: zapisuje pacjenta, wpisuje termin do kalendarza lekarza i uruchamia potwierdzenie.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"slotToken": {
"type": "string",
"minLength": 1,
"maxLength": 4096
},
"holdId": {
"type": "string",
"minLength": 1,
"maxLength": 8192
},
"contactPhone": {
"description": "The caller's own number. Supplied by the platform — do NOT fill it in yourself. When the channel has no verified number the tool answers IDENTITY_UNAVAILABLE; that is expected on web chat, not an error to retry.",
"type": "string"
},
"alternativePhone": {
"description": "Only when the caller explicitly asks to be reached on a DIFFERENT number.",
"type": "string",
"pattern": "^\\+[1-9]\\d{6,14}$"
},
"patientRef": {
"description": "From find_patient, for a patient the clinic already knows.",
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"patient": {
"type": "object",
"properties": {
"firstName": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"lastName": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"dateOfBirth": {
"description": "YYYY-MM-DD. Ask only when get_booking_requirements lists it.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"pesel": {
"description": "Ask only when get_booking_requirements lists it. Stored encrypted and never read back.",
"type": "string",
"pattern": "^\\d{11}$"
},
"phone": {
"description": "The contact number the caller DICTATES, in E.164 (+48…). Used only when the platform has no verified number for this channel — on a normal phone call the platform already knows it and yours is ignored, so you never need to ask just to fill this in. Read the digits back and get a clear \"tak\" before booking: a wrong number sends this visit's confirmation to a stranger.",
"type": "string",
"pattern": "^\\+[1-9]\\d{6,14}$"
}
},
"required": [
"lastName"
]
},
"note": {
"description": "What the caller says the visit is about, in their words. Stored as the visit note (max 200 characters).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"idempotencyKey": {
"description": "Optional retry key. Reusing it MUST repeat the identical request; a different body under the same key is refused with IDEMPOTENCY_MISMATCH.",
"type": "string",
"minLength": 1,
"maxLength": 200
}
}
}get_booking_status
scheduling.readSprawdza wynik rezerwacji, której skutek nie był jeszcze znany, na podstawie identyfikatora operacji.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"operationId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"operationId"
]
}list_patient_appointments
scheduling.readZwraca nadchodzące wizyty przypisane do numeru dzwoniącego, każdą z tokenem akcji i zamaskowanym imieniem pacjenta.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"contactPhone": {
"description": "The caller's own number. Supplied by the platform — do NOT fill it in yourself. When the channel has no verified number the tool answers IDENTITY_UNAVAILABLE; that is expected on web chat, not an error to retry.",
"type": "string"
}
}
}reschedule_appointment
scheduling.modifyPrzenosi wizytę na nowy termin na podstawie tokenu akcji.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"actionToken": {
"description": "From list_patient_appointments or find_patient. The only way a bot may name an appointment.",
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"appointmentId": {
"description": "Staff and partner keys (scheduling.manage) only.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"expectedVersion": {
"description": "Required with appointmentId: the version you last read. A mismatch answers STALE_VERSION instead of overwriting somebody else’s change.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"slotToken": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"contactPhone": {
"description": "The caller's own number. Supplied by the platform — do NOT fill it in yourself. When the channel has no verified number the tool answers IDENTITY_UNAVAILABLE; that is expected on web chat, not an error to retry.",
"type": "string"
}
},
"required": [
"slotToken"
]
}cancel_appointment
scheduling.modifyOdwołuje wizytę na podstawie tokenu akcji, zwalnia termin i powiadamia pacjenta. Operacji nie da się cofnąć.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"actionToken": {
"description": "From list_patient_appointments or find_patient. The only way a bot may name an appointment.",
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"appointmentId": {
"description": "Staff and partner keys (scheduling.manage) only.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"expectedVersion": {
"description": "Required with appointmentId: the version you last read. A mismatch answers STALE_VERSION instead of overwriting somebody else’s change.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"contactPhone": {
"description": "The caller's own number. Supplied by the platform — do NOT fill it in yourself. When the channel has no verified number the tool answers IDENTITY_UNAVAILABLE; that is expected on web chat, not an error to retry.",
"type": "string"
},
"reason": {
"description": "The caller's cancellation explanation, in their words. Omit if they did not say. Separate from the visit note (max 200 characters); this field takes up to 500.",
"type": "string",
"minLength": 1,
"maxLength": 500
}
}
}request_staff_callback
scheduling.read | contact-requests.writeZakłada prośbę o kontakt, gdy sprawą musi zająć się człowiek z rejestracji.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"reason": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "What the caller wants, in their own words, so staff can act without listening to the call."
},
"appointmentId": {
"description": "The visit this is about, when there is one.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"contactPhone": {
"description": "The caller's own number. Supplied by the platform — do NOT fill it in yourself. When the channel has no verified number the tool answers IDENTITY_UNAVAILABLE; that is expected on web chat, not an error to retry.",
"type": "string"
},
"callbackPhone": {
"description": "The number the caller gives you to be called back on, E.164 (+48…). Supply it ONLY when the platform has no verified number for this channel — otherwise the clinic calls back on the number they rang from. Read the digits back and get a clear \"tak\" first.",
"type": "string",
"pattern": "^\\+[1-9]\\d{6,14}$"
},
"callerName": {
"description": "The caller’s name as they said it. Omit when not given.",
"type": "string",
"minLength": 1,
"maxLength": 80
},
"urgent": {
"description": "true only when the caller’s matter cannot wait for a normal callback.",
"type": "boolean"
}
},
"required": [
"reason"
]
}patients1 narzędzie
find_patient
patients.readRozpoznaje dzwoniącego po numerze telefonu i zwraca zamaskowane imię, referencję pacjenta oraz jego nadchodzące wizyty.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"contactPhone": {
"description": "The caller's own number. Supplied by the platform — do NOT fill it in yourself. When the channel has no verified number the tool answers IDENTITY_UNAVAILABLE; that is expected on web chat, not an error to retry.",
"type": "string"
},
"lastName": {
"description": "Pass it when the caller gave a surname, to pick the right person on a shared phone.",
"type": "string",
"minLength": 1,
"maxLength": 80
}
}
}contacts2 narzędzia
find_contact
contacts.lookupRozpoznaje dzwoniącego po numerze telefonu i zwraca zamaskowane imię, referencję klienta oraz jego nadchodzące rezerwacje.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"contactPhone": {
"description": "The caller's own number. Supplied by the platform — do NOT fill it in yourself. When the channel has no verified number the tool answers IDENTITY_UNAVAILABLE; that is expected on web chat, not an error to retry.",
"type": "string"
},
"lastName": {
"description": "Pass it when the caller gave a surname, to pick the right person on a shared phone.",
"type": "string",
"minLength": 1,
"maxLength": 80
}
}
}list_contact_appointments
contacts.lookupZwraca nadchodzące rezerwacje przypisane do numeru dzwoniącego, każdą z tokenem akcji i zamaskowanym imieniem klienta.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"contactPhone": {
"description": "The caller's own number. Supplied by the platform — do NOT fill it in yourself. When the channel has no verified number the tool answers IDENTITY_UNAVAILABLE; that is expected on web chat, not an error to retry.",
"type": "string"
}
}
}Sesje botów5 narzędzi
create_bot_session
bot-calls.writeWykonuje prawdziwe połączenie telefoniczne na podany numer wybranym botem, natychmiast. Wymaga unikalnego klucza idempotencji, więc ponowione żądanie nigdy nie wykona drugiego połączenia; dozwolone tylko między 08:00 a 20:00 w strefie czasowej tenanta.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"botId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"phoneNumber": {
"type": "string",
"pattern": "^\\+[1-9]\\d{6,14}$",
"description": "The number to dial, E.164."
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Caller-chosen key that makes the request safe to retry: the same key never places a second call. Use your own message/notification id."
},
"context": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,63}$",
"description": "Why the bot is calling, as a stable slug — e.g. `visit_reminder` or `visit_rescheduled` (clinics), `booking_reminder`, `order_status`; use the slugs the bot’s workflow expects. Rendered as `{{reason}}`; the bot prompt or workflow branches on it."
},
"message": {
"description": "The information to convey, in the language of the person called. Rendered as `{{message}}`.",
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"appointment": {
"description": "Flattened to `{{appointment_date}}`, `{{appointment_time}}`, …",
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"time": {
"type": "string",
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
},
"staffName": {
"description": "Who the appointment is with (a staff member, specialist or consultant). Rendered as `{{appointment_doctor_name}}`.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"doctorName": {
"description": "Medical name of `staffName` (the doctor the visit is with); same field, same `{{appointment_doctor_name}}`. Send one or the other — both are accepted only when equal.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"serviceName": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"locationName": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"address": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"externalId": {
"type": "string",
"minLength": 1,
"maxLength": 128
}
},
"additionalProperties": false
},
"variables": {
"description": "Extra template variables, rendered verbatim as `{{name}}`. At most 40 keys.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[a-z][a-z0-9_]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"reason"
],
"additionalProperties": false
}
},
"required": [
"botId",
"phoneNumber",
"idempotencyKey",
"context"
],
"additionalProperties": false
}list_bot_sessions
bot-calls.readLista rozmów bota, od najnowszych, z filtrami po bocie, statusie i dacie — wraz z informacją, czy rozmowa ma transkrypcję, nagranie i dane diagnostyczne.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"botId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"status": {
"type": "string",
"enum": [
"IN_PROGRESS",
"COMPLETED",
"FAILED",
"NO_ANSWER",
"VOICEMAIL",
"DISCONNECTED"
]
},
"since": {
"description": "ISO 8601. Inclusive lower bound on the session start.",
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"until": {
"description": "ISO 8601. Inclusive upper bound on the session start.",
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"page": {
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"limit": {
"default": 50,
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"additionalProperties": false
}get_bot_session
bot-calls.readZwraca jedną rozmowę bota: jak się zakończyła, ile trwała i co bot z niej wywnioskował.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"dispatchId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The `dispatchId` from list_bot_sessions."
}
},
"required": [
"dispatchId"
]
}get_bot_session_telemetry
bot-calls.readZwraca dane diagnostyczne jednej rozmowy bota — powód zakończenia, błędy, czasy odpowiedzi i fałszywe przerwania. Nie zawiera treści rozmowy.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"dispatchId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The `dispatchId` from list_bot_sessions."
}
},
"required": [
"dispatchId"
]
}get_bot_session_transcript
bot-calls.readZwraca treść jednej rozmowy bota — co powiedział dzwoniący, a co bot, wypowiedź po wypowiedzi.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"dispatchId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The `dispatchId` from list_bot_sessions."
}
},
"required": [
"dispatchId"
]
}Zgłoszenia do Mediflo4 narzędzia
create_support_ticket
tickets.writeZgłasza problem do Mediflo wraz z rozmowami, których dotyczy, żeby wsparcie mogło od razu je sprawdzić.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "Becomes the ticket subject."
},
"description": {
"type": "string",
"minLength": 1,
"maxLength": 10000
},
"priority": {
"default": "MEDIUM",
"type": "string",
"enum": [
"LOW",
"MEDIUM",
"HIGH",
"URGENT"
]
},
"reportedByUserId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"botSessionIds": {
"description": "Bot sessions that ARE the problem. Max 20. Each id is validated against your tenant; an unknown id is a 422.",
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"contextUrl": {
"type": "string",
"maxLength": 2000
},
"contextMetadata": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"title",
"description"
],
"additionalProperties": false
}attach_sessions_to_ticket
tickets.writeDodaje kolejne rozmowy do zgłoszenia przekazanego już do Mediflo, gdy problem się powtarza.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"botSessionIds": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"ticketId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The ticket `id` returned by create_support_ticket."
}
},
"required": [
"botSessionIds",
"ticketId"
],
"additionalProperties": false
}list_support_tickets
tickets.readLista zgłoszeń przekazanych do Mediflo wraz ze statusem i rozmowami dołączonymi do każdego z nich.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"OPEN",
"ACKNOWLEDGED",
"IN_PROGRESS",
"RESOLVED",
"CLOSED"
]
},
"page": {
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"limit": {
"default": 50,
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"additionalProperties": false
}get_support_ticket
tickets.readZwraca jedno zgłoszenie przekazane do Mediflo: jego status i to, czy jest po stronie wsparcia, czy czeka na odpowiedź organizacji.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"ticketId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The ticket `id` returned by create_support_ticket."
}
},
"required": [
"ticketId"
]
}Webhooki10 narzędzi
list_webhook_endpoints
webhooks.manageLista adresów webhookowych organizacji wraz z ich kondycją: liczbą kolejnych błędów i datą ostatniego udanego dostarczenia.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"page": {
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"limit": {
"default": 25,
"type": "integer",
"minimum": 1,
"maximum": 100
}
}
}get_webhook_endpoint
webhooks.manageZwraca jeden adres webhookowy: subskrypcje zdarzeń, konfigurację payloadu i stan dostarczania.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"endpointId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The endpoint `id` returned by create_webhook_endpoint."
}
},
"required": [
"endpointId"
]
}create_webhook_endpoint
webhooks.manageRejestruje nowy adres webhookowy i zwraca klucz podpisujący — jedyny raz, kiedy jest on pokazywany.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 1,
"maxLength": 2048
},
"description": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
},
"subscribedEvents": {
"minItems": 1,
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"const": "*"
},
{
"type": "string",
"enum": [
"ping",
"bot_call.completed",
"call.completed",
"call.updated",
"call.transcript.ready",
"call.analysis.completed",
"task.created",
"task.updated",
"task.deleted",
"task.suggestion.resolved",
"case.created",
"case.updated",
"case.deleted",
"webhook_endpoint.auto_disabled"
]
}
]
}
},
"payloadConfig": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"call",
"bot_call"
]
},
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"type": "null"
}
]
}
},
"required": [
"url",
"subscribedEvents"
],
"additionalProperties": false
}send_webhook_test_event
webhooks.manageWysyła prawdziwe, podpisane zdarzenie testowe na wskazany adres, aby sprawdzić działanie odbiornika.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"eventType": {
"type": "string",
"enum": [
"ping",
"bot_call.completed",
"call.completed",
"call.updated",
"call.transcript.ready",
"call.analysis.completed",
"task.created",
"task.updated",
"task.deleted",
"task.suggestion.resolved",
"case.created",
"case.updated",
"case.deleted",
"webhook_endpoint.auto_disabled"
]
},
"endpointId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The endpoint `id` returned by create_webhook_endpoint."
}
},
"required": [
"endpointId"
],
"additionalProperties": false
}list_webhook_deliveries
webhooks.manageDziennik dostarczeń: co wysłaliśmy, kiedy i z jakim skutkiem, z filtrami po adresie, statusie i typie zdarzenia.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"page": {
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"limit": {
"default": 25,
"type": "integer",
"minimum": 1,
"maximum": 100
},
"endpointId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"status": {
"type": "string",
"enum": [
"PENDING",
"RETRYING",
"SUCCEEDED",
"EXHAUSTED",
"SKIPPED"
]
},
"eventType": {
"type": "string",
"enum": [
"ping",
"bot_call.completed",
"call.completed",
"call.updated",
"call.transcript.ready",
"call.analysis.completed",
"task.created",
"task.updated",
"task.deleted",
"task.suggestion.resolved",
"case.created",
"case.updated",
"case.deleted",
"webhook_endpoint.auto_disabled"
]
}
}
}get_webhook_delivery
webhooks.manageZwraca jedno dostarczenie: status, liczbę prób, kod odpowiedzi serwera odbiorcy i naszą diagnostykę błędu.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"deliveryId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The delivery `id` — send_webhook_test_event returns one as `deliveryId`."
}
},
"required": [
"deliveryId"
]
}redeliver_webhook
webhooks.managePonawia wcześniejsze dostarczenie — po naprawie odbiornika, bez czekania na nowe zdarzenie.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"deliveryId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The delivery `id` — send_webhook_test_event returns one as `deliveryId`."
}
},
"required": [
"deliveryId"
]
}update_webhook_endpoint
webhooks.manageZmienia adres, subskrypcje lub status punktu webhookowego; ustawienie statusu ENABLED przywraca punkt wyłączony automatycznie.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 1,
"maxLength": 2048
},
"description": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
},
"subscribedEvents": {
"minItems": 1,
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"const": "*"
},
{
"type": "string",
"enum": [
"ping",
"bot_call.completed",
"call.completed",
"call.updated",
"call.transcript.ready",
"call.analysis.completed",
"task.created",
"task.updated",
"task.deleted",
"task.suggestion.resolved",
"case.created",
"case.updated",
"case.deleted",
"webhook_endpoint.auto_disabled"
]
}
]
}
},
"payloadConfig": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"call",
"bot_call"
]
},
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"enum": [
"ENABLED",
"DISABLED"
]
},
"endpointId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The endpoint `id` returned by create_webhook_endpoint."
}
},
"required": [
"endpointId"
],
"additionalProperties": false
}rotate_webhook_secret
webhooks.manageGeneruje nowy klucz podpisujący; poprzedni działa jeszcze przez 24 godziny, więc odbiornik można wdrożyć bez przerwy w dostarczaniu.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"endpointId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The endpoint `id` returned by create_webhook_endpoint."
}
},
"required": [
"endpointId"
]
}delete_webhook_endpoint
webhooks.manageUsuwa adres webhookowy (usunięcie miękkie) — dostarczanie ustaje, a dziennik dostarczeń pozostaje do wglądu.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"endpointId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The endpoint `id` returned by create_webhook_endpoint."
}
},
"required": [
"endpointId"
]
}Treść dostarczonych webhooków1 narzędzie
get_webhook_delivered_payload
webhook-payloads.readZwraca treść, którą przeniosło jedno dostarczenie, odtworzoną jako projekcja przypisana temu punktowi końcowemu — nigdy jako pełny zbiór wewnętrzny. Wymaga osobnego uprawnienia webhook-payloads.read, ponieważ treść może zawierać dane osobowe, w tym dane wrażliwe.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"deliveryId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The delivery `id` — send_webhook_test_event returns one as `deliveryId`."
}
},
"required": [
"deliveryId"
]
}trunks7 narzędzi
list_trunk_providers
trunks.readLista operatorów SIP, z którymi można połączyć trunk, oraz informacje dla operatora (dokąd przekierować numery).
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}list_trunks
trunks.readLista trunków SIP organizacji wraz z kierunkami i numerami telefonów. Hasła nigdy nie są pokazywane.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}get_trunk
trunks.readPokazuje jeden trunk SIP z diagnostyką: rejestracją u operatora, synchronizacją z bramką, listą gotowości i liczbą ostatnich połączeń.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"trunkId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The trunk id from list_trunks."
}
},
"required": [
"trunkId"
]
}create_carrier_trunk
trunks.writeTworzy trunk SIP wraz z numerami telefonów, z tymi samymi kontrolami co formularz w Portalu. Tylko dla administratorów.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"trunkProviderKey": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"phoneNumbers": {
"minItems": 1,
"type": "array",
"items": {
"type": "object",
"properties": {
"e164": {
"type": "string",
"minLength": 1,
"description": "The number in E.164, e.g. +48123456789."
},
"ownership": {
"type": "string",
"enum": [
"BOTH",
"INBOUND",
"OUTBOUND"
],
"description": "INBOUND (calls arrive on it), OUTBOUND (caller ID for calls out) or BOTH."
},
"inbound": {
"description": "Inbound side: activeIvrFlowId = the IVR flow family id the number routes into (null = none; the family must have an active version), or createDefaultIvrFlow: true; isActive.",
"type": "object",
"properties": {
"isActive": {
"type": "boolean"
},
"activeIvrFlowId": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"createDefaultIvrFlow": {
"type": "boolean"
}
},
"additionalProperties": false
},
"outbound": {
"description": "Outbound side: isDefaultOutbound (at most one — the organization's default caller ID); isActive.",
"type": "object",
"properties": {
"isActive": {
"type": "boolean"
},
"isDefaultOutbound": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"required": [
"e164",
"ownership"
],
"additionalProperties": false
}
},
"inbound": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"description": "Required: whether this trunk receives calls from the carrier."
},
"carrierSourceIps": {
"description": "carrierSourceIps: the carrier's SIP signalling IPs — each entry a single public IPv4/IPv6 address, or a public range no wider than /24 (IPv4) or /64 (IPv6) written as its network address (x.y.z.0/24, never x.y.z.7/24). Private, loopback, link-local, CGNAT, multicast and reserved addresses are refused: these sources are trusted by Mediflo's SIP edge and exempted from its flood protection.",
"type": "array",
"items": {
"type": "string"
}
},
"mediaEncryption": {
"type": "string"
},
"includeHeaders": {
"type": "string"
},
"noiseReduction": {
"description": "Noise reduction on the caller's audio for inbound calls.",
"type": "boolean"
},
"maxConcurrentCalls": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"enabled"
],
"additionalProperties": false
},
"outbound": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"description": "Required: whether this trunk places calls via the carrier."
},
"address": {
"description": "The carrier's SIP proxy (host[:port]). Required unless the provider preset supplies one.",
"type": "string"
},
"transport": {
"description": "UDP, TCP, TLS or AUTO. Omitted: the provider preset's transport (list_trunk_providers defaultTransport), else TCP.",
"type": "string"
},
"authUsername": {
"type": "string"
},
"authPassword": {
"description": "authPassword is WRITE-ONLY: it is stored for the carrier and no tool ever returns it (reads show only hasAuthPassword), and it is kept out of logs and the audit trail. If the user prefers that the password not pass through this conversation, omit it and give them `portalUrl` from the answer, where they type it into the Portal themselves.",
"type": "string"
},
"authRealm": {
"type": "string"
},
"requiresRegistration": {
"description": "True when Mediflo must REGISTER to the carrier with authUsername/authPassword.",
"type": "boolean"
},
"mediaEncryption": {
"type": "string"
},
"includeHeaders": {
"type": "string"
},
"maxConcurrentCalls": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"maxCallsPerSecond": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"cpsEnabled": {
"type": "boolean"
}
},
"required": [
"enabled"
],
"additionalProperties": false
}
},
"required": [
"name",
"phoneNumbers",
"inbound",
"outbound"
]
}update_carrier_trunk
trunks.writeZmienia nazwę, opis, operatora lub stan włączenia trunku. Tylko dla administratorów.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"trunkProviderKey": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"isActive": {
"type": "boolean"
},
"trunkId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The trunk id from list_trunks."
}
},
"required": [
"trunkId"
]
}update_carrier_trunk_direction
trunks.writeZmienia jeden kierunek trunku — adres, dane logowania, adresy IP operatora, transport — z ochroną przed nadpisaniem cudzej zmiany. Tylko dla administratorów.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"isActive": {
"type": "boolean"
},
"trunkProviderKey": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"address": {
"type": "string"
},
"transport": {
"type": "string"
},
"carrierSourceIps": {
"description": "carrierSourceIps: the carrier's SIP signalling IPs — each entry a single public IPv4/IPv6 address, or a public range no wider than /24 (IPv4) or /64 (IPv6) written as its network address (x.y.z.0/24, never x.y.z.7/24). Private, loopback, link-local, CGNAT, multicast and reserved addresses are refused: these sources are trusted by Mediflo's SIP edge and exempted from its flood protection.",
"type": "array",
"items": {
"type": "string"
}
},
"mediaEncryption": {
"type": "string"
},
"includeHeaders": {
"type": "string"
},
"authUsername": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"authPassword": {
"description": "authPassword is WRITE-ONLY: it is stored for the carrier and no tool ever returns it (reads show only hasAuthPassword), and it is kept out of logs and the audit trail. If the user prefers that the password not pass through this conversation, omit it and give them `portalUrl` from the answer, where they type it into the Portal themselves. Omitting it keeps the stored password.",
"type": "string"
},
"authRealm": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"requiresRegistration": {
"type": "boolean"
},
"maxConcurrentCalls": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"maxCallsPerSecond": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"cpsEnabled": {
"type": "boolean"
},
"phoneNumbers": {
"description": "REPLACES this direction's whole number list when sent; omit it to keep the numbers. Requires expectedRevision.",
"type": "array",
"items": {
"type": "object",
"properties": {
"e164": {
"type": "string",
"minLength": 1
},
"isActive": {
"type": "boolean"
},
"activeIvrFlowId": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"createDefaultIvrFlow": {
"type": "boolean"
},
"isDefaultOutbound": {
"type": "boolean"
}
},
"required": [
"e164"
],
"additionalProperties": false
}
},
"noiseReduction": {
"description": "Noise reduction on the caller's audio for inbound calls.",
"type": "boolean"
},
"trunkId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The trunk id from list_trunks."
},
"direction": {
"type": "string",
"enum": [
"inbound",
"outbound"
]
},
"expectedUpdatedAt": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
{
"type": "null"
}
],
"description": "The direction's `updatedAt` from get_trunk / list_trunks. null ONLY to create a direction the trunk does not have yet."
},
"expectedRevision": {
"description": "REQUIRED when phoneNumbers is sent: the trunk's `revision` from get_trunk / list_trunks.",
"type": "string",
"minLength": 1
}
},
"required": [
"trunkId",
"direction",
"expectedUpdatedAt"
]
}set_trunk_phone_numbers
trunks.writeUstawia pełną listę numerów trunku wraz z kierunkiem i przepływem IVR każdego numeru. Tylko dla administratorów.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"e164": {
"type": "string",
"minLength": 1,
"description": "The number in E.164, e.g. +48123456789."
},
"ownership": {
"type": "string",
"enum": [
"BOTH",
"INBOUND",
"OUTBOUND"
],
"description": "INBOUND (calls arrive on it), OUTBOUND (caller ID for calls out) or BOTH."
},
"inbound": {
"description": "Inbound side: activeIvrFlowId = the IVR flow family id the number routes into (null = none; the family must have an active version), or createDefaultIvrFlow: true; isActive.",
"type": "object",
"properties": {
"isActive": {
"type": "boolean"
},
"activeIvrFlowId": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"createDefaultIvrFlow": {
"type": "boolean"
}
},
"additionalProperties": false
},
"outbound": {
"description": "Outbound side: isDefaultOutbound (at most one — the organization's default caller ID); isActive.",
"type": "object",
"properties": {
"isActive": {
"type": "boolean"
},
"isDefaultOutbound": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"required": [
"e164",
"ownership"
],
"additionalProperties": false
},
"description": "The trunk's COMPLETE number list — every number not listed is removed."
},
"trunkId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The trunk id from list_trunks."
},
"expectedRevision": {
"type": "string",
"minLength": 1,
"description": "The trunk's `revision` from get_trunk / list_trunks."
}
},
"required": [
"rows",
"trunkId",
"expectedRevision"
]
}queues10 narzędzi
list_queues
queues.readLista kolejek połączeń organizacji z ich typem, limitami czasu, liczbą członków i przepływami IVR, które do nich kierują.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}get_queue
queues.readPokazuje jedną kolejkę z jej członkami, ich priorytetem i godzinami dostępności. Prywatne numery telefonów są maskowane (widać tylko 3 ostatnie cyfry).
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"queueId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Queue id, from list_queues."
}
},
"required": [
"queueId"
]
}list_queue_member_candidates
queues.readLista użytkowników i telefonów stacjonarnych, które można dodać do kolejki. Prywatne numery telefonów są maskowane.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"queueId": {
"description": "Leave out the members already in this queue.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}create_queue
queues.writeTworzy kolejkę połączeń — wewnętrzną albo zewnętrzną (dzwoni na prywatne telefony pracowników). Tylko dla administratorów.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"queueType": {
"type": "string",
"enum": [
"INTERNAL",
"EXTERNAL"
]
},
"description": {
"description": "Free-text description; null clears it.",
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
]
},
"isDefault": {
"description": "Make this the tenant default queue. Setting true unsets the previous default.",
"type": "boolean"
},
"isActive": {
"type": "boolean"
},
"maxWaitTime": {
"description": "Maximum time a caller waits in the queue, in seconds.",
"type": "integer",
"minimum": 1,
"maximum": 86400
},
"holdMusicAssetId": {
"description": "Audio asset played while waiting; null clears it.",
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"ringTimeoutSeconds": {
"description": "How long each member's phone rings before the next one is tried (5-120 s).",
"type": "integer",
"minimum": 5,
"maximum": 120
},
"dtmfTimeoutSeconds": {
"description": "EXTERNAL queues: how long an answering member has to press a key to accept the call (5-60 s).",
"type": "integer",
"minimum": 5,
"maximum": 60
}
},
"required": [
"name"
]
}update_queue
queues.writeZmienia ustawienia kolejki (nazwę, limity czasu, muzykę oczekiwania, domyślność, aktywność). Tylko dla administratorów.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"queueId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Queue id, from list_queues."
},
"expectedUpdatedAt": {
"type": "string",
"minLength": 1,
"description": "`updatedAt` of the queue as you last read it."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"description": {
"description": "Free-text description; null clears it.",
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
]
},
"isDefault": {
"description": "Make this the tenant default queue. Setting true unsets the previous default.",
"type": "boolean"
},
"isActive": {
"type": "boolean"
},
"maxWaitTime": {
"description": "Maximum time a caller waits in the queue, in seconds.",
"type": "integer",
"minimum": 1,
"maximum": 86400
},
"holdMusicAssetId": {
"description": "Audio asset played while waiting; null clears it.",
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"ringTimeoutSeconds": {
"description": "How long each member's phone rings before the next one is tried (5-120 s).",
"type": "integer",
"minimum": 5,
"maximum": 120
},
"dtmfTimeoutSeconds": {
"description": "EXTERNAL queues: how long an answering member has to press a key to accept the call (5-60 s).",
"type": "integer",
"minimum": 5,
"maximum": 60
}
},
"required": [
"queueId",
"expectedUpdatedAt"
]
}add_queue_member
queues.writeDodaje użytkownika albo telefon stacjonarny do kolejki. Tylko dla administratorów.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"queueId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Queue id, from list_queues."
},
"userId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"pbxExtensionId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"priority": {
"type": "integer",
"minimum": 1,
"maximum": 10
},
"isActive": {
"type": "boolean"
}
},
"required": [
"queueId"
]
}update_queue_member
queues.writeZmienia priorytet członka kolejki albo wstrzymuje go. Tylko dla administratorów.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"membershipId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Membership id (`membershipId`), from get_queue."
},
"priority": {
"type": "integer",
"minimum": 1,
"maximum": 10
},
"isActive": {
"type": "boolean"
}
},
"required": [
"membershipId"
]
}remove_queue_member
queues.writeUsuwa członka z kolejki razem z jego godzinami dostępności. Tylko dla administratorów.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"membershipId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Membership id (`membershipId`), from get_queue."
}
},
"required": [
"membershipId"
]
}set_queue_member_schedules
queues.writeZastępuje godziny, w których członek kolejki może odbierać połączenia. Tylko dla administratorów.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"membershipId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Membership id (`membershipId`), from get_queue."
},
"windows": {
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"dayOfWeek": {
"type": "integer",
"minimum": 0,
"maximum": 6
},
"startTime": {
"type": "string",
"description": "HH:MM, 24 h"
},
"endTime": {
"type": "string",
"description": "HH:MM, 24 h, after startTime"
},
"timezone": {
"type": "string",
"enum": [
"Europe/Warsaw",
"Europe/London",
"Europe/Berlin",
"Europe/Paris",
"Europe/Prague",
"Europe/Bratislava",
"Europe/Kyiv",
"Europe/Moscow",
"UTC"
]
}
},
"required": [
"dayOfWeek",
"startTime",
"endTime",
"timezone"
]
}
}
},
"required": [
"membershipId",
"windows"
]
}set_user_external_phone_number
queues.writeUstawia lub usuwa prywatny numer telefonu pracownika, na który dzwonią kolejki zewnętrzne. Tylko dla administratorów.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"userId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "User id, from list_queue_member_candidates or get_queue."
},
"externalPhoneNumber": {
"anyOf": [
{
"type": "string",
"pattern": "^\\+[1-9]\\d{6,14}$"
},
{
"type": "null"
}
],
"description": "E.164 number, or null to clear it."
}
},
"required": [
"userId",
"externalPhoneNumber"
]
}ivr-flows11 narzędzi
list_ivr_flows
ivr-flows.readLista przepływów IVR organizacji: aktywna wersja każdego z nich, wersje robocze i numery telefonów, które obsługuje.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}get_ivr_flow
ivr-flows.readOdczytuje jedną wersję przepływu IVR wraz z definicją, listą wersji, numerami telefonów oraz używanymi nagraniami, kolejkami i botami.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"flowId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"flowId"
]
}get_ivr_flow_schema
ivr-flows.readOpisuje elementy IVR i reguły, które musi spełniać przepływ, aby asystent mógł go przygotować.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}list_ivr_audio_assets
ivr-flows.readLista nagrań, które może odtwarzać przepływ IVR (tylko nazwa, typ i długość).
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"page": {
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"limit": {
"default": 100,
"type": "integer",
"minimum": 1,
"maximum": 200
}
}
}validate_ivr_flow
ivr-flows.readSprawdza przepływ IVR pod kątem błędów, niczego nie zapisując.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"flowDefinition": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
}
},
"required": [
"flowDefinition"
],
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
}
]
}
}
}create_ivr_flow
ivr-flows.writeTworzy nowy przepływ IVR jako wersję roboczą. Dzwoniący nic nie usłyszą, dopóki nie zostanie aktywowany i przypisany do numeru.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"description": {
"type": "string",
"maxLength": 2000
},
"flowDefinition": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
}
},
"required": [
"name",
"flowDefinition"
],
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
}
]
}
}
}create_ivr_flow_version
ivr-flows.writeKopiuje wersję przepływu IVR do nowej wersji roboczej — tak zmienia się działający przepływ.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"sourceFlowId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"versionNote": {
"type": "string",
"maxLength": 1000
}
},
"required": [
"sourceFlowId"
]
}save_ivr_flow_draft
ivr-flows.writeEdytuje roboczą wersję przepływu IVR. Aktywnej wersji nie można edytować bezpośrednio.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"flowId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"expectedUpdatedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"description": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
]
},
"versionNote": {
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
},
"flowDefinition": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
}
},
"required": [
"flowId",
"expectedUpdatedAt"
],
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
}
]
}
}
}activate_ivr_flow_version
ivr-flows.writeUstawia wersję roboczą jako aktywną wersję IVR. Zmienia to, co słyszą dzwoniący, od następnego połączenia; można to cofnąć.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"flowId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"expectedActiveVersionId": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
}
},
"required": [
"flowId",
"expectedActiveVersionId"
]
}assign_ivr_flow_to_phone_number
ivr-flows.writeKieruje przychodzący numer telefonu do przepływu IVR. Działa od następnego połączenia.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"flowId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"phoneNumberId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"confirmMove": {
"type": "boolean"
},
"expectedPreviousFlowId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"flowId",
"phoneNumberId"
]
}detach_ivr_flow_from_phone_number
ivr-flows.writeOdłącza przepływ IVR od numeru telefonu, zostawiając numer bez przepływu.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"flowId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"phoneNumberId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"flowId",
"phoneNumberId"
]
}Rozmowy2 narzędzia
list_calls
calls.readLista rozmów telefonicznych organizacji, od najnowszych, z filtrami po numerze i zakresie dat.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"phoneNumber": {
"description": "E.164 number, e.g. +48123456789. Matches either call leg.",
"type": "string",
"pattern": "^\\+[1-9]\\d{1,14}$"
},
"dateFrom": {
"description": "ISO-8601 timestamp; inclusive lower bound on startedAt.",
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
"dateTo": {
"description": "ISO-8601 timestamp; inclusive upper bound on startedAt.",
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
"page": {
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"limit": {
"default": 50,
"type": "integer",
"minimum": 1,
"maximum": 100
}
}
}get_call
calls.readZwraca jedną rozmowę telefoniczną wraz z przybliżoną rekonstrukcją komunikatów IVR z osi czasu, aktualnej definicji przypiętej wersji przepływu i zasobów audio: treścią lub nazwą, źródłem tej treści, czasem trwania nagrania i chwilą wejścia w węzeł. Wejście w węzeł nie oznacza, że rozmówca usłyszał nagranie, a późniejsza edycja tej wersji przepływu może zmienić wynik.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"callId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Telephony call id returned by list_calls."
}
},
"required": [
"callId"
]
}Zadania2 narzędzia
list_tasks
tasks.readLista zadań organizacji z filtrami po statusie, priorytecie, osobie i treści.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"SUGGESTED",
"TODO",
"IN_PROGRESS",
"ON_HOLD",
"COMPLETED",
"CANCELLED"
]
},
"priority": {
"type": "string",
"enum": [
"LOW",
"MEDIUM",
"HIGH",
"URGENT"
]
},
"assignedToUserId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"search": {
"type": "string"
},
"page": {
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"limit": {
"default": 50,
"type": "integer",
"minimum": 1,
"maximum": 100
},
"orderBy": {
"default": "createdAt",
"type": "string",
"enum": [
"createdAt",
"updatedAt",
"dueDate",
"priority",
"title"
]
},
"orderDir": {
"default": "desc",
"type": "string",
"enum": [
"asc",
"desc"
]
}
}
}create_task
tasks.writeTworzy nowe zadanie w organizacji.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"description": {
"type": "string"
},
"priority": {
"default": "MEDIUM",
"type": "string",
"enum": [
"LOW",
"MEDIUM",
"HIGH",
"URGENT"
]
},
"dueDate": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
},
"assignedToUserId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"tagIds": {
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"companyId": {
"description": "Link the task to a company (B2B tenants only). Rejected for tenants without companies, and for an unknown or deleted company.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"title"
]
}Sprawy5 narzędzi
list_cases
cases.readLista spraw klientów z filtrami po statusie, kategorii, osobie, kontakcie, firmie i treści.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"status": {
"type": "array",
"items": {
"type": "string",
"enum": [
"NEW",
"IN_PROGRESS",
"WAITING_CUSTOMER",
"WAITING_THIRD_PARTY",
"RESOLVED",
"CLOSED",
"CANCELLED"
]
}
},
"open": {
"description": "true: only open cases (NEW, IN_PROGRESS, WAITING_*).",
"type": "boolean"
},
"category": {
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"maxLength": 64,
"pattern": "^[a-z][a-z0-9_]*$"
}
},
"assignedTo": {
"description": "A user id, or \"unassigned\".",
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "string",
"const": "unassigned"
}
]
},
"contactId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"companyId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"search": {
"description": "Words of the title, or a case number such as 1042.",
"type": "string",
"maxLength": 200
},
"resourceType": {
"description": "With resourceId: only cases linked to that record.",
"type": "string",
"enum": [
"TELEPHONY_CALL",
"BOT_SESSION",
"EMAIL_CONVERSATION",
"CHAT_CONVERSATION",
"MESSAGING_CONVERSATION",
"CONTACT_REQUEST"
]
},
"resourceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"sort": {
"default": "number",
"type": "string",
"enum": [
"number",
"updatedAt"
]
},
"page": {
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 10000
},
"limit": {
"default": 20,
"type": "integer",
"minimum": 1,
"maximum": 100
}
}
}get_case
cases.readSzczegóły jednej sprawy razem z powiązanymi połączeniami i rozmowami.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"caseId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"caseId"
]
}create_case
cases.writeZakłada nową sprawę i zwraca jej numer.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"categoryKey": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "A case category key: water_leak, heating, electricity, elevator, damage, common_areas, noise_neighbours, other, bug, how_to_training, configuration_request, feature_request, outage, question, complaint, service_request. Use \"other\" when none fits."
},
"description": {
"anyOf": [
{
"type": "string",
"maxLength": 20000
},
{
"type": "null"
}
]
},
"priority": {
"type": "string",
"enum": [
"LOW",
"MEDIUM",
"HIGH",
"URGENT"
]
},
"topicId": {
"description": "A call topic id of this tenant (the product or service area).",
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"contactId": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"companyId": {
"description": "Link the case to a company (only for tenants that keep companies).",
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"reporterName": {
"anyOf": [
{
"type": "string",
"maxLength": 255
},
{
"type": "null"
}
]
},
"reporterPhone": {
"anyOf": [
{
"type": "string",
"maxLength": 50
},
{
"type": "null"
}
]
},
"assignedToUserId": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"locationText": {
"description": "Where the issue is, e.g. an address or a room.",
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
},
"externalSystem": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"externalRef": {
"description": "The case's id in your own system.",
"anyOf": [
{
"type": "string",
"maxLength": 255
},
{
"type": "null"
}
]
},
"externalUrl": {
"description": "An http(s) link to it.",
"anyOf": [
{
"type": "string",
"maxLength": 2048
},
{
"type": "null"
}
]
},
"dueAt": {
"description": "ISO 8601 date-time with an offset, e.g. 2026-10-20T12:00:00Z.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"customFields": {
"description": "Extra fields of the tenant's case form (the full set; an omitted field is cleared).",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"tagIds": {
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"links": {
"description": "Records the case is about, linked in the same step.",
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"resourceType": {
"type": "string",
"enum": [
"TELEPHONY_CALL",
"BOT_SESSION",
"EMAIL_CONVERSATION",
"CHAT_CONVERSATION",
"MESSAGING_CONVERSATION",
"CONTACT_REQUEST"
]
},
"resourceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"resourceType",
"resourceId"
]
}
}
},
"required": [
"title",
"categoryKey"
]
}update_case
cases.writeZmienia status, przypisanie lub inne pola sprawy.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"caseId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"categoryKey": {
"description": "A case category key: water_leak, heating, electricity, elevator, damage, common_areas, noise_neighbours, other, bug, how_to_training, configuration_request, feature_request, outage, question, complaint, service_request. Use \"other\" when none fits.",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"status": {
"type": "string",
"enum": [
"NEW",
"IN_PROGRESS",
"WAITING_CUSTOMER",
"WAITING_THIRD_PARTY",
"RESOLVED",
"CLOSED",
"CANCELLED"
]
},
"description": {
"anyOf": [
{
"type": "string",
"maxLength": 20000
},
{
"type": "null"
}
]
},
"priority": {
"type": "string",
"enum": [
"LOW",
"MEDIUM",
"HIGH",
"URGENT"
]
},
"topicId": {
"description": "A call topic id of this tenant (the product or service area).",
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"contactId": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"companyId": {
"description": "Link the case to a company (only for tenants that keep companies).",
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"reporterName": {
"anyOf": [
{
"type": "string",
"maxLength": 255
},
{
"type": "null"
}
]
},
"reporterPhone": {
"anyOf": [
{
"type": "string",
"maxLength": 50
},
{
"type": "null"
}
]
},
"assignedToUserId": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"locationText": {
"description": "Where the issue is, e.g. an address or a room.",
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
},
"externalSystem": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"externalRef": {
"description": "The case's id in your own system.",
"anyOf": [
{
"type": "string",
"maxLength": 255
},
{
"type": "null"
}
]
},
"externalUrl": {
"description": "An http(s) link to it.",
"anyOf": [
{
"type": "string",
"maxLength": 2048
},
{
"type": "null"
}
]
},
"dueAt": {
"description": "ISO 8601 date-time with an offset, e.g. 2026-10-20T12:00:00Z.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"customFields": {
"description": "Extra fields of the tenant's case form (the full set; an omitted field is cleared).",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"tagIds": {
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"required": [
"caseId"
]
}create_caller_case
cases.bot-createWbudowane narzędzie bota (tylko klucz zarządzany bota): zakłada sprawę dla dzwoniącego, łączy ją z rozmową i z kontaktem dzwoniącego i zwraca numer sprawy do przeczytania na głos. Ponowione wywołanie zwraca tę samą sprawę.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "A short summary of the matter in one line, in the language of the conversation."
},
"description": {
"description": "The details the team needs to act without listening to the call: what happened, since when, what the caller already tried.",
"type": "string",
"maxLength": 4000
},
"categoryKey": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "A category key from the list in your instructions. Use \"other\" when none fits."
},
"urgent": {
"description": "true only when the matter cannot wait: a safety risk, damage spreading, a service completely down.",
"type": "boolean"
},
"location": {
"description": "Where the problem is, as the caller said it (an address, a flat, a room). Omit when not given.",
"type": "string",
"maxLength": 500
},
"externalRef": {
"description": "The caller’s own reference or ticket number, when they give one. Omit otherwise.",
"type": "string",
"maxLength": 255
},
"contactPhone": {
"description": "The caller's own number. Supplied by the platform — do NOT fill it in yourself.",
"type": "string"
}
},
"required": [
"title",
"categoryKey"
]
}analytics18 narzędzi
aggregate_calls
analytics.readElastyczne agregacje połączeń: dowolne zestawienie liczby połączeń, odbieralności, czasu rozmów i oczekiwania w podziale na miesiąc, tydzień, dzień, godzinę, dzień tygodnia, kolejkę, linię, konsultanta, temat lub tag — do trzech lat w jednym zapytaniu.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First calendar day of the range, inclusive (YYYY-MM-DD)."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last calendar day of the range, inclusive (YYYY-MM-DD)."
},
"timezone": {
"description": "IANA timezone used to bucket days and hours. Defaults to the tenant timezone (usually Europe/Warsaw).",
"type": "string",
"minLength": 1
},
"groupBy": {
"description": "Up to 3 distinct dimensions to break the numbers down by, outermost first. Omit (or pass []) for a single totals row. Time buckets, in the bucketing timezone: `month` (\"YYYY-MM\"), `week` (the ISO week's Monday, \"YYYY-MM-DD\"), `day` (\"YYYY-MM-DD\"), `hour_of_day` (0-23), `day_of_week` (0 = Sunday … 6 = Saturday). Call attributes: `direction` (INBOUND/OUTBOUND), `outcome` (see below), `status` (the raw call status), `disconnect_reason` (who or what ended the call; endings on the platform side are grouped as SYSTEM_ENDED), `origin` (STANDARD, or BOT_TRANSFER for the internal leg a bot creates when it hands a caller to a human). Entities: `queue`, `phone_number` (the phone line the call arrived on), `operator` (the agent who handled it), `topic` (what the call was about), `tag`. Name them in snake_case here; the row keys are camelCase (`hour_of_day` → `hourOfDay`).",
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"enum": [
"month",
"week",
"day",
"hour_of_day",
"day_of_week",
"direction",
"outcome",
"status",
"disconnect_reason",
"origin",
"queue",
"phone_number",
"operator",
"topic",
"tag"
]
}
},
"metrics": {
"minItems": 1,
"maxItems": 12,
"type": "array",
"items": {
"type": "string",
"enum": [
"calls",
"inbound_calls",
"outbound_calls",
"answered_calls",
"missed_calls",
"answer_rate",
"queue_abandoned_calls",
"ivr_abandoned_calls",
"outbound_connected_calls",
"total_talk_seconds",
"avg_talk_seconds",
"median_talk_seconds",
"max_talk_seconds",
"avg_wait_seconds",
"median_wait_seconds",
"p90_wait_seconds",
"max_wait_seconds",
"active_operators",
"unique_callers"
]
},
"description": "Between 1 and 12 distinct metrics. Counts: `calls` (every call in the group), `inbound_calls`, `outbound_calls`, `answered_calls` (INBOUND, completed, with an answer timestamp), `missed_calls` (INBOUND and ended NO_ANSWER / CANCELLED / BUSY / FAILED, or completed with no answer timestamp), `queue_abandoned_calls` (missed after reaching a queue), `ivr_abandoned_calls` (missed inside the IVR, before any queue), `outbound_connected_calls`. Rate: `answer_rate` = answered ÷ (answered + missed) in percent, inbound only, null when the group has no inbound traffic. Talk time in SECONDS over ANSWERED calls only: `total_talk_seconds`, `avg_talk_seconds`, `median_talk_seconds`, `max_talk_seconds`. Queue wait in SECONDS over calls that both entered and left a queue: `avg_wait_seconds`, `median_wait_seconds`, `p90_wait_seconds`, `max_wait_seconds`. Distinct counts, which CANNOT be summed across rows (read them from `totals` instead): `active_operators` (distinct agents who answered a call) and `unique_callers` (distinct inbound caller numbers — a COUNT, never a number). Name them in snake_case here; each comes back under its camelCase key (`answer_rate` → `answerRate`)."
},
"orderBy": {
"description": "How to sort the rows before `limit` is applied. Default: if any time dimension was requested, those ascending in the order given; otherwise the first metric descending. Nulls always sort last.",
"type": "object",
"properties": {
"by": {
"type": "string",
"enum": [
"month",
"week",
"day",
"hour_of_day",
"day_of_week",
"direction",
"outcome",
"status",
"disconnect_reason",
"origin",
"queue",
"phone_number",
"operator",
"topic",
"tag",
"calls",
"inbound_calls",
"outbound_calls",
"answered_calls",
"missed_calls",
"answer_rate",
"queue_abandoned_calls",
"ivr_abandoned_calls",
"outbound_connected_calls",
"total_talk_seconds",
"avg_talk_seconds",
"median_talk_seconds",
"max_talk_seconds",
"avg_wait_seconds",
"median_wait_seconds",
"p90_wait_seconds",
"max_wait_seconds",
"active_operators",
"unique_callers"
],
"description": "Must be one of the dimensions or metrics THIS call requested; anything else is refused."
},
"direction": {
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"required": [
"by",
"direction"
]
},
"limit": {
"description": "Maximum number of groups to return. Default 500, maximum 2000.",
"type": "integer",
"minimum": 1,
"maximum": 2000
},
"direction": {
"description": "Restrict to inbound or outbound calls.",
"type": "string",
"enum": [
"INBOUND",
"OUTBOUND"
]
},
"outcome": {
"description": "Restrict to one outcome bucket (ANSWERED / MISSED / OTHER).",
"type": "string",
"enum": [
"ANSWERED",
"MISSED",
"OTHER"
]
},
"operatorIds": {
"description": "Restrict to calls handled by these agents (user ids). Omit for every agent.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"queueIds": {
"description": "Restrict to calls that went through these queues.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"phoneNumberIds": {
"description": "Restrict to calls that arrived on these inbound phone numbers (lines).",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"tagIds": {
"description": "Restrict to calls carrying ANY of these tags.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"topicIds": {
"description": "Restrict to calls filed under these call topics.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"required": [
"from",
"to",
"metrics"
]
}aggregate_bot_sessions
analytics.readElastyczne agregacje rozmów botów: liczba sesji, skuteczność połączeń i minuty w podziale na miesiąc, tydzień, dzień, godzinę, dzień tygodnia, bota, wynik lub powód zakończenia — do trzech lat w jednym zapytaniu.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First calendar day of the range, inclusive (YYYY-MM-DD)."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last calendar day of the range, inclusive (YYYY-MM-DD)."
},
"timezone": {
"description": "IANA timezone used to bucket days and hours. Defaults to the tenant timezone (usually Europe/Warsaw).",
"type": "string",
"minLength": 1
},
"groupBy": {
"description": "Up to 3 distinct dimensions to group by, outermost first. Omit (or pass an empty array) for a single all-up row over the whole range.",
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"enum": [
"month",
"week",
"day",
"hour_of_day",
"day_of_week",
"bot",
"result",
"end_reason"
]
}
},
"metrics": {
"minItems": 1,
"maxItems": 8,
"type": "array",
"items": {
"type": "string",
"enum": [
"sessions",
"connected_sessions",
"connect_rate",
"total_seconds",
"total_minutes",
"avg_duration_seconds",
"median_duration_seconds",
"max_duration_seconds"
]
},
"description": "One or more distinct metrics to compute for every group and for `totals`. See the tool description for what each one means."
},
"botIds": {
"description": "Restrict to these bot ids (from list_bots). Omit for every bot in the organisation — an empty list is refused, because it would match nothing and read as a quiet month.",
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"results": {
"description": "Restrict to sessions whose bucketed result is one of these tokens. Values must be UPPER_SNAKE (e.g. CONFIRMED); `NONE` selects sessions with no result and `OTHER` the ones whose value was not a token. Omit for every session.",
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]{0,39}$"
}
},
"connectedOnly": {
"description": "When true, count only sessions whose call actually connected (call duration > 0). Affects `totals` as well as `rows`.",
"type": "boolean"
},
"orderBy": {
"description": "How to sort `rows`. Default: chronologically ascending when a time dimension is grouped by, otherwise the FIRST metric descending. Ties are broken by the grouped dimensions so pages are stable.",
"type": "object",
"properties": {
"by": {
"type": "string",
"enum": [
"month",
"week",
"day",
"hour_of_day",
"day_of_week",
"bot",
"result",
"end_reason",
"sessions",
"connected_sessions",
"connect_rate",
"total_seconds",
"total_minutes",
"avg_duration_seconds",
"median_duration_seconds",
"max_duration_seconds"
],
"description": "Must be one of the dimensions or metrics you requested in this same call; anything else is refused."
},
"direction": {
"type": "string",
"enum": [
"asc",
"desc"
],
"description": "Sort direction (required, like the sibling tools)."
}
},
"required": [
"by",
"direction"
]
},
"limit": {
"default": 500,
"description": "Maximum number of rows to return (1–2000, default 500). `totalGroups` and `truncated` tell you whether it bit.",
"type": "integer",
"minimum": 1,
"maximum": 2000
}
},
"required": [
"from",
"to",
"metrics"
]
}aggregate_agent_status
analytics.readDostępność konsultantów w czasie: ilu konsultantów było w danym statusie i jak długo — w podziale na godzinę, dzień, tydzień, miesiąc, status lub konsultanta (na podstawie historii statusów, nie połączeń).
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First calendar day of the range, inclusive (YYYY-MM-DD)."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last calendar day of the range, inclusive (YYYY-MM-DD)."
},
"timezone": {
"description": "IANA timezone used to bucket days and hours. Defaults to the tenant timezone (usually Europe/Warsaw).",
"type": "string",
"minLength": 1
},
"groupBy": {
"description": "Up to 3 distinct dimensions to break the time down by, outermost first. Omit (or pass []) for a single totals row. Ask in snake_case; the ROW KEY is camelCase. Time buckets, in the bucketing timezone: `month` → key `month` (\"YYYY-MM\"), `week` → `week` (the ISO week's Monday, \"YYYY-MM-DD\"), `day` → `day` (\"YYYY-MM-DD\"), `hour_of_day` → key `hourOfDay` (0-23), `day_of_week` → key `dayOfWeek` (0 = Sunday … 6 = Saturday). Other: `status` (emits `statusName`, `statusDisplayName` and `canAcceptCall`) and `operator` (emits `operatorRef`, plus `name` only with the users.read scope — never a user id or e-mail).",
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"enum": [
"month",
"week",
"day",
"hour_of_day",
"day_of_week",
"status",
"operator"
]
}
},
"metrics": {
"minItems": 1,
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"enum": [
"status_seconds",
"agent_hours",
"agents"
]
},
"description": "Between 1 and 3 distinct metrics. Ask in snake_case; the ROW KEY is camelCase. `status_seconds` → key `statusSeconds`: total seconds agents spent in the status inside the group, summed over agents. `agent_hours` → key `agentHours`: the same figure in hours (2 decimals) — for a group that pins down ONE clock hour (e.g. `day` + `hour_of_day`) this is the AVERAGE NUMBER OF AGENTS concurrently in the status during that hour, so 2.5 means two and a half agents on average. `agents` → key `agents`: how many DISTINCT agents were in the status for at least `minSecondsPerAgent` seconds inside the group — a headcount, so it must never be summed across rows (read `totals` for the window-wide headcount)."
},
"orderBy": {
"description": "How to sort the rows before `limit` is applied. Default: if any time dimension was requested, those ascending in the order given; otherwise the first metric descending. Nulls always sort last.",
"type": "object",
"properties": {
"by": {
"type": "string",
"enum": [
"month",
"week",
"day",
"hour_of_day",
"day_of_week",
"status",
"operator",
"status_seconds",
"agent_hours",
"agents"
],
"description": "Must be one of the dimensions or metrics THIS call requested; anything else is refused."
},
"direction": {
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"required": [
"by",
"direction"
]
},
"limit": {
"description": "Maximum number of groups to return. Default 500, maximum 2000.",
"type": "integer",
"minimum": 1,
"maximum": 2000
},
"statusNames": {
"description": "Restrict to these exact status names (the `statusName` values, not the display names). Statuses are tenant configuration and differ per organization — call this tool once with `groupBy: [\"status\"]` to list the tenant's own names before filtering by them.",
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"canAcceptCall": {
"description": "Restrict to statuses that made the agent reachable for calls (true) or unreachable (false). Use this when you want \"available\" without knowing the tenant's status names.",
"type": "boolean"
},
"operatorIds": {
"description": "Restrict to these agents (user ids). Omit for every agent.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"minSecondsPerAgent": {
"description": "How many seconds an agent must have spent in the status inside a group before the `agents` metric counts them. Defaults to 60, so a status that merely flickered across an hour boundary does not read as an agent on shift. Affects `agents` only, never `status_seconds` / `agent_hours`.",
"type": "integer",
"minimum": 0,
"maximum": 3600
}
},
"required": [
"from",
"to",
"metrics"
]
}get_call_statistics
analytics.readLiczba połączeń dziennie oraz odsetek odebranych/nieodebranych i wyniki oddzwonień w zakresie dat (Analityka → Przegląd).
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First calendar day of the range, inclusive (YYYY-MM-DD)."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last calendar day of the range, inclusive (YYYY-MM-DD)."
},
"timezone": {
"description": "IANA timezone used to bucket days and hours. Defaults to the tenant timezone (usually Europe/Warsaw).",
"type": "string",
"minLength": 1
},
"operatorIds": {
"description": "Restrict to calls handled by these agents (user ids). Omit for every agent.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"queueIds": {
"description": "Restrict to calls that went through these queues.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"phoneNumberIds": {
"description": "Restrict to calls that arrived on these inbound phone numbers (lines).",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"tagIds": {
"description": "Restrict to calls carrying ANY of these tags. Requires the analytics-tags feature for the tenant to be meaningful.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"required": [
"from",
"to"
]
}get_call_time_distribution
analytics.readIle połączeń przyszło w każdej komórce dzień tygodnia × godzina (Analityka → mapa cieplna).
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First calendar day of the range, inclusive (YYYY-MM-DD)."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last calendar day of the range, inclusive (YYYY-MM-DD)."
},
"timezone": {
"description": "IANA timezone used to bucket days and hours. Defaults to the tenant timezone (usually Europe/Warsaw).",
"type": "string",
"minLength": 1
},
"operatorIds": {
"description": "Restrict to calls handled by these agents (user ids). Omit for every agent.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"queueIds": {
"description": "Restrict to calls that went through these queues.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"phoneNumberIds": {
"description": "Restrict to calls that arrived on these inbound phone numbers (lines).",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"tagIds": {
"description": "Restrict to calls carrying ANY of these tags. Requires the analytics-tags feature for the tenant to be meaningful.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"required": [
"from",
"to"
]
}get_wait_time_statistics
analytics.readCzasy oczekiwania w kolejkach — per kolejka i per godzina: średnia, mediana, p95 (Analityka → czasy w kolejce).
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First calendar day of the range, inclusive (YYYY-MM-DD)."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last calendar day of the range, inclusive (YYYY-MM-DD)."
},
"timezone": {
"description": "IANA timezone used to bucket days and hours. Defaults to the tenant timezone (usually Europe/Warsaw).",
"type": "string",
"minLength": 1
},
"operatorIds": {
"description": "Restrict to calls handled by these agents (user ids). Omit for every agent.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"queueIds": {
"description": "Restrict to calls that went through these queues.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"phoneNumberIds": {
"description": "Restrict to calls that arrived on these inbound phone numbers (lines).",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"tagIds": {
"description": "Restrict to calls carrying ANY of these tags. Requires the analytics-tags feature for the tenant to be meaningful.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"required": [
"from",
"to"
]
}get_abandonment_statistics
analytics.readPorzucone połączenia wg dnia tygodnia × godziny, z podziałem na kolejkę i IVR (Analityka → Obsada).
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First calendar day of the range, inclusive (YYYY-MM-DD)."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last calendar day of the range, inclusive (YYYY-MM-DD)."
},
"timezone": {
"description": "IANA timezone used to bucket days and hours. Defaults to the tenant timezone (usually Europe/Warsaw).",
"type": "string",
"minLength": 1
},
"operatorIds": {
"description": "Restrict to calls handled by these agents (user ids). Omit for every agent.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"queueIds": {
"description": "Restrict to calls that went through these queues.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"phoneNumberIds": {
"description": "Restrict to calls that arrived on these inbound phone numbers (lines).",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"required": [
"from",
"to"
]
}get_staffing_analysis
analytics.readLuki w obsadzie wg Erlanga C: wymagana vs. faktyczna liczba agentów i poziom obsługi per godzina (Analityka → Obsada).
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First calendar day of the range, inclusive (YYYY-MM-DD)."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last calendar day of the range, inclusive (YYYY-MM-DD)."
},
"timezone": {
"description": "IANA timezone used to bucket days and hours. Defaults to the tenant timezone (usually Europe/Warsaw).",
"type": "string",
"minLength": 1
},
"operatorIds": {
"description": "Restrict to calls handled by these agents (user ids). Omit for every agent.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"queueIds": {
"description": "Restrict to calls that went through these queues.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"phoneNumberIds": {
"description": "Restrict to calls that arrived on these inbound phone numbers (lines).",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"dayOfWeek": {
"description": "Restrict to one weekday, Monday = 0 … Sunday = 6. Omit to average over every day in the range.",
"type": "integer",
"minimum": 0,
"maximum": 6
},
"slaThresholdSeconds": {
"description": "Answer-within target in seconds (e.g. 20). Omit to derive it from the median abandon wait in the range.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"slaTargetPercent": {
"description": "Share of calls that must be answered within the threshold, in percent. Defaults to 80.",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [
"from",
"to"
]
}get_operator_statistics
analytics.readZespołowe sumy obsługi połączeń i czasu w statusach; wiersze per operator są zanonimizowane, chyba że klucz może czytać użytkowników.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First calendar day of the range, inclusive (YYYY-MM-DD)."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last calendar day of the range, inclusive (YYYY-MM-DD)."
},
"timezone": {
"description": "IANA timezone used to bucket days and hours. Defaults to the tenant timezone (usually Europe/Warsaw).",
"type": "string",
"minLength": 1
},
"operatorIds": {
"description": "Restrict to calls handled by these agents (user ids). Omit for every agent.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"queueIds": {
"description": "Restrict to calls that went through these queues.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"phoneNumberIds": {
"description": "Restrict to calls that arrived on these inbound phone numbers (lines).",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"required": [
"from",
"to"
]
}get_ivr_statistics
analytics.readGdzie dzwoniący porzucają IVR — per węzeł i per wersja przepływu (Analityka → IVR).
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First calendar day of the range, inclusive (YYYY-MM-DD)."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last calendar day of the range, inclusive (YYYY-MM-DD)."
},
"timezone": {
"description": "IANA timezone used to bucket days and hours. Defaults to the tenant timezone (usually Europe/Warsaw).",
"type": "string",
"minLength": 1
},
"operatorIds": {
"description": "Restrict to calls handled by these agents (user ids). Omit for every agent.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"queueIds": {
"description": "Restrict to calls that went through these queues.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"phoneNumberIds": {
"description": "Restrict to calls that arrived on these inbound phone numbers (lines).",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"tagIds": {
"description": "Restrict to calls carrying ANY of these tags. Requires the analytics-tags feature for the tenant to be meaningful.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"flowVersionIds": {
"description": "Restrict to these IVR flow versions. Ignored unless the tenant has the IVR experiments feature and exactly one phoneNumberIds entry is given.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"required": [
"from",
"to"
]
}get_call_topic_statistics
analytics.readLiczba połączeń wg tematu i wg tagu (Analityka → tematy i tagi).
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First calendar day of the range, inclusive (YYYY-MM-DD)."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last calendar day of the range, inclusive (YYYY-MM-DD)."
},
"timezone": {
"description": "IANA timezone used to bucket days and hours. Defaults to the tenant timezone (usually Europe/Warsaw).",
"type": "string",
"minLength": 1
},
"operatorIds": {
"description": "Restrict to calls handled by these agents (user ids). Omit for every agent.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"queueIds": {
"description": "Restrict to calls that went through these queues.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"phoneNumberIds": {
"description": "Restrict to calls that arrived on these inbound phone numbers (lines).",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"tagIds": {
"description": "Restrict to calls carrying ANY of these tags. Requires the analytics-tags feature for the tenant to be meaningful.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"required": [
"from",
"to"
]
}get_contact_request_statistics
analytics.readWolumen próśb o kontakt, podział wg statusu/źródła/priorytetu oraz czasy reakcji i realizacji (Analityka → prośby o kontakt).
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First calendar day of the range, inclusive (YYYY-MM-DD)."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last calendar day of the range, inclusive (YYYY-MM-DD)."
},
"timezone": {
"description": "IANA timezone used to bucket days and hours. Defaults to the tenant timezone (usually Europe/Warsaw).",
"type": "string",
"minLength": 1
}
},
"required": [
"from",
"to"
]
}get_visit_confirmation_statistics
analytics.readKPI bota potwierdzającego wizyty: połączenia dziennie, lejek wyników, wyniki per lokalizacja, próby i odbieralność (Terminarz → statystyki potwierdzeń).
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First calendar day of the range, inclusive (YYYY-MM-DD)."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last calendar day of the range, inclusive (YYYY-MM-DD)."
},
"timezone": {
"description": "IGNORED by this tool — the visit-confirmation dashboard buckets in Europe/Warsaw regardless. Accepted only so the argument shape matches the other analytics tools.",
"type": "string",
"minLength": 1
},
"locationIds": {
"description": "Restrict to these location ids. Omit for every location, including appointments with no location assigned.",
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"required": [
"from",
"to"
]
}get_bot_statistics
analytics.readZlecenia i minuty botów dziennie i per bot, z podziałem na wyniki (pulpit Botów).
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First calendar day of the range, inclusive (YYYY-MM-DD)."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last calendar day of the range, inclusive (YYYY-MM-DD)."
},
"timezone": {
"description": "IANA timezone used to bucket days and hours. Defaults to the tenant timezone (usually Europe/Warsaw).",
"type": "string",
"minLength": 1
},
"botIds": {
"description": "Restrict to these bot ids (from list_bots). Omit for every bot in the organisation.",
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
},
"required": [
"from",
"to"
]
}get_bot_knowledge_statistics
analytics.readSumy wyszukiwań w bazie wiedzy, trafność, opóźnienia i aktywność dzienna jednego bota — bez treści pytań.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"botId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Bot whose knowledge retrievals to summarise (from list_bots)."
},
"days": {
"default": 30,
"description": "Length of the rolling window ending now, in days. One of 7, 30 or 90.",
"anyOf": [
{
"type": "number",
"const": 7
},
{
"type": "number",
"const": 30
},
{
"type": "number",
"const": 90
}
]
}
},
"required": [
"botId"
]
}get_chat_statistics
analytics.readPrzegląd czatu WWW: rozmowy, odsetek rozwiązanych i porzuconych, czasy odpowiedzi, CSAT, tematy i bieżąca kolejka.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First calendar day of the range, inclusive (YYYY-MM-DD)."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last calendar day of the range, inclusive (YYYY-MM-DD)."
},
"timezone": {
"description": "IANA timezone used to bucket days and hours. Defaults to the tenant timezone (usually Europe/Warsaw).",
"type": "string",
"minLength": 1
}
},
"required": [
"from",
"to"
]
}get_task_statistics
analytics.readSumy zadań, podział wg statusu i priorytetu oraz odsetek ukończonych za ostatnie N dni (Zadania → widok przełożonego).
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"rangeDays": {
"default": 7,
"description": "Length of the completion window ending now, in days (1–180). 1 = the tenant-local calendar day; larger values are a rolling N×24 h window.",
"type": "integer",
"minimum": 1,
"maximum": 180
}
}
}get_quality_control_summary
analytics.readWyniki kontroli jakości: oceny zespołu i pracowników, udział rozmów bez błędu krytycznego i spełnionych standardów oraz reguły, które najczęściej nie wychodzą (Kontrola jakości → Wyniki). Same zestawienia.
Schemat wejścia
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"period": {
"default": "30d",
"description": "Reporting window, the same presets as the Wyniki page. \"30d\" (the default) is the last 30 Europe/Warsaw calendar days including today; \"7d\" and \"90d\" likewise. \"custom\" requires `from` and `to`.",
"type": "string",
"enum": [
"7d",
"30d",
"90d",
"custom"
]
},
"from": {
"description": "First calendar day of a custom period, inclusive (YYYY-MM-DD, Europe/Warsaw). Required when period is \"custom\"; ignored otherwise.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to": {
"description": "Last calendar day of a custom period, inclusive (YYYY-MM-DD, Europe/Warsaw). Required when period is \"custom\"; ignored otherwise. At most 366 days.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"conversationTypeId": {
"description": "Restrict to one conversation type — the Wyniki type filter. This is the analysis protocol id. Omit for every type. Coverage is null when this is set, because which calls belong to a type is only known once they are analysed.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"userId": {
"description": "Scope the summary, trend and rules to this one employee. An internal user id — the same id `operatorIds` takes on the other analytics tools — or \"me\" for the signed-in user on an OAuth connection. An API key has no caller, so \"me\" is refused there. Omit for the whole team. The `employees` list is always the whole team. The response identifies the employee by `operatorRef`, never by this id.",
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "string",
"const": "me"
}
]
}
}
}