Mediflo
Serwer MCP

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 zakresu

Zwraca 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": {}
}

Zwraca 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

Lista 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.read

Lista 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.read

Zwraca 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.write

Tworzy 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.write

Zmienia 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
}

Zwraca 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"
  ]
}

Zwraca 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)$"
    }
  }
}

Edytuje 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
}

Tworzy 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.read

Zwraca 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.write

Edytuje 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"
  ]
}

Sprawdza 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"
  ]
}

Ustawia 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"
  ]
}

Wyłą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.write

Usuwa 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"
  ]
}

Lista 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.read

Zwraca 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"
  ]
}

Dodaje 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"
  ]
}

Edytuje 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"
  ]
}

Usuwa 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"
  ]
}

Ustala 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"
  ]
}

Publikuje 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"
  ]
}

Lista 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"
  ]
}

Przywraca 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"
  ]
}

Sprawdza 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

Lista 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.write

Dodaje 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"
  ]
}

Zmienia 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.read

Zwraca 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.read

Zwraca 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)$"
    }
  }
}

Zwraca 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.read

Zwraca 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.book

Blokuje 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.book

Rezerwuje 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.read

Sprawdza 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"
  ]
}

Zwraca 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.modify

Przenosi 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.modify

Odwoł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.write

Zakł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.read

Rozpoznaje 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.lookup

Rozpoznaje 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
    }
  }
}

Zwraca 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.write

Wykonuje 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.read

Lista 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.read

Zwraca 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"
  ]
}

Zwraca 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"
  ]
}

Zwraca 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

Zgł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
}

Dodaje 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
}

Lista 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.read

Zwraca 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.manage

Lista 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.manage

Zwraca 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"
  ]
}

Rejestruje 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
}

Wysył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
}

Dziennik 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.manage

Zwraca 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.manage

Ponawia 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"
  ]
}

Zmienia 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.manage

Generuje 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"
  ]
}

Usuwa 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.read

Zwraca 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

Lista 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.read

Lista 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.read

Pokazuje 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"
  ]
}

Tworzy 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"
  ]
}

Zmienia 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"
  ]
}

Zmienia 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"
  ]
}

Ustawia 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.read

Lista 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.read

Pokazuje 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"
  ]
}

Lista 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.write

Tworzy 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.write

Zmienia 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.write

Dodaje 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"
  ]
}

Zmienia 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"
  ]
}

Usuwa 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"
  ]
}

Zastę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"
  ]
}

Ustawia 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.read

Lista 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.read

Odczytuje 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.read

Opisuje 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.read

Lista 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.read

Sprawdza 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.write

Tworzy 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"
          }
        }
      ]
    }
  }
}

Kopiuje 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.write

Edytuje 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"
          }
        }
      ]
    }
  }
}

Ustawia 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"
  ]
}

Kieruje 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"
  ]
}

Odłą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.read

Lista 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.read

Zwraca 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.read

Lista 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.write

Tworzy 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.read

Lista 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.read

Szczegół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.write

Zakł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.write

Zmienia 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-create

Wbudowane 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.read

Elastyczne 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"
  ]
}

Elastyczne 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"
  ]
}

Dostę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.read

Liczba 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"
  ]
}

Ile 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"
  ]
}

Czasy 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"
  ]
}

Porzucone 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.read

Luki 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"
  ]
}

Zespoł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.read

Gdzie 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"
  ]
}

Liczba 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"
  ]
}

Wolumen 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"
  ]
}

KPI 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.read

Zlecenia 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"
  ]
}

Sumy 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.read

Przeglą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.read

Sumy 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
    }
  }
}

Wyniki 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"
        }
      ]
    }
  }
}