{
  "openapi": "3.0.3",
  "info": {
    "title": "Kaleo API",
    "version": "2026-10-08",
    "description": "Kaleo AI poskytuje webové API pro ovládání vašich streamovacích relací, získávání analytiky diváků a monitorování zařízení Kaleo Connect. Naše API můžete použít k integraci do vlastních AVL ovládacích prvků a pracovních postupů podle potřeby.\n\nPro začátek postupujte podle níže uvedených pokynů, jak získat API klíč, najít ID vaší církve a autentizovat své požadavky.\n\n## Získání API klíče\n\n1. Přejděte na stránku [API](https://app.withkaleo.com/to/integrations/api) (v sekci Integrace) ve vašem dashboardu.\n2. Zadejte název a vyberte **Vytvořit API klíč**.\n3. Zkopírujte klíč a bezpečně jej uložte. Celý klíč je zobrazen pouze jednou.\n\nKaždý klíč funguje pro jednu církev. Jeho tvůrce musí zůstat členem církve.\n\n## Najděte ID vaší církve\n\nZkopírujte **ID církve** ze stránky [API](https://app.withkaleo.com/to/integrations/api) (v sekci Integrace) ve vašem dashboardu. Použijte jej jako `churchId` ve svých API požadavcích.\n\n## Autentizace\n\nPosílejte svůj klíč přesně tak, jak jste jej zkopírovali ze stránky [API](https://app.withkaleo.com/to/integrations/api) s každým požadavkem:\n\n```text\nAuthorization: Bearer YOUR_API_KEY\n```\n\nV API playground zadejte pouze zkopírovaný klíč. Bearer je přidán automaticky."
  },
  "servers": [
    {
      "url": "https://babel.withkaleo.com",
      "description": "Produkční API"
    }
  ],
  "tags": [
    {
      "name": "Languages",
      "description": "Podporované jazyky řečníků a překladů.",
      "x-displayName": "Jazyky"
    },
    {
      "name": "Devices",
      "description": "Zařízení Kaleo Connect, která lze monitorovat a ovládat na dálku přes API.",
      "x-displayName": "Zařízení"
    },
    {
      "name": "Streaming",
      "description": "**Poznámka: Koncový bod Start streaming lze použít pouze ke spuštění streamování ze zařízení Kaleo Connect.** Tento koncový bod nelze použít ke spuštění streamování z webového prohlížeče. Všechny ostatní streamovací koncové body ovládají jak prohlížeč, tak zařízení Kaleo Connect.",
      "x-displayName": "Streamování"
    },
    {
      "name": "Sessions",
      "description": "Historie relací a analytika diváků.",
      "x-displayName": "Relace"
    }
  ],
  "security": [
    {
      "ApiKeyBearer": []
    }
  ],
  "paths": {
    "/v1/church/{churchId}/devices": {
      "get": {
        "operationId": "listDevices",
        "summary": "Seznam zařízení",
        "tags": [
          "Devices"
        ],
        "description": "Seznam zařízení Kaleo Connect a jejich připravenost funkcí.",
        "parameters": [
          {
            "name": "churchId",
            "in": "path",
            "required": true,
            "description": "ID vaší církve. Zkopírujte jej ze stránky [API](https://app.withkaleo.com/to/integrations/api) (v sekci Integrace) ve vašem dashboardu.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Úspěch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Devices"
                },
                "example": {
                  "devices": [
                    {
                      "id": "00000000-0000-4000-8000-000000000002",
                      "name": "Sanctuary Mac",
                      "status": "online",
                      "capabilities": [
                        {
                          "capability": "audio-source",
                          "status": "ready"
                        },
                        {
                          "capability": "audio-output",
                          "status": "ready"
                        },
                        {
                          "capability": "propresenter",
                          "status": "unavailable"
                        }
                      ],
                      "lastSeenAt": null
                    }
                  ]
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "description": "Odpovědi nejsou cachovány.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "no-store"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Chybějící nebo neplatný API klíč, včetně vypršení platnosti, odvolání, nesprávné církve nebo pokud tvůrce již není členem.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "API_KEY_INVALID"
                }
              }
            }
          },
          "503": {
            "description": "Dočasná chyba služby nebo autentizace. Před opakováním požadavku na ovládání obnovte stav.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "DEVICES_UNAVAILABLE"
                }
              }
            }
          }
        },
        "x-kaleo-anchor": "List devices"
      }
    },
    "/v1/church/{churchId}/devices/{deviceId}": {
      "get": {
        "operationId": "getDevice",
        "summary": "Získat zařízení",
        "tags": [
          "Devices"
        ],
        "description": "Přečtěte si jedno zařízení Kaleo Connect a jeho připravenost funkcí.",
        "parameters": [
          {
            "name": "churchId",
            "in": "path",
            "required": true,
            "description": "ID vaší církve. Zkopírujte jej ze stránky [API](https://app.withkaleo.com/to/integrations/api) (v sekci Integrace) ve vašem dashboardu.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "deviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ID zařízení z `GET /devices`."
          }
        ],
        "responses": {
          "200": {
            "description": "Úspěch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeviceDetails"
                },
                "example": {
                  "device": {
                    "id": "00000000-0000-4000-8000-000000000002",
                    "name": "Sanctuary Mac",
                    "status": "online",
                    "capabilities": [
                      {
                        "capability": "audio-source",
                        "status": "ready"
                      },
                      {
                        "capability": "audio-output",
                        "status": "ready"
                      },
                      {
                        "capability": "propresenter",
                        "status": "unavailable"
                      }
                    ],
                    "lastSeenAt": null
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "description": "Odpovědi nejsou cachovány.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "no-store"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Chybějící nebo neplatný API klíč, včetně vypršení platnosti, odvolání, nesprávné církve nebo pokud tvůrce již není členem.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "API_KEY_INVALID"
                }
              }
            }
          },
          "404": {
            "description": "Zařízení v této církvi neexistuje.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "DEVICE_NOT_FOUND"
                }
              }
            }
          },
          "503": {
            "description": "Dočasná chyba služby nebo autentizace. Před opakováním požadavku na ovládání obnovte stav.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "DEVICES_UNAVAILABLE"
                }
              }
            }
          }
        },
        "x-kaleo-anchor": "Get device"
      }
    },
    "/v1/church/{churchId}/streaming": {
      "get": {
        "operationId": "getStreaming",
        "summary": "Získat stav streamování",
        "tags": [
          "Streaming"
        ],
        "description": "Přečtěte si aktuální relaci a sdílená nastavení církve. Všechna pole jsou přítomna, i když je nečinná.",
        "parameters": [
          {
            "name": "churchId",
            "in": "path",
            "required": true,
            "description": "ID vaší církve. Zkopírujte jej ze stránky [API](https://app.withkaleo.com/to/integrations/api) (v sekci Integrace) ve vašem dashboardu.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Úspěch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamingStatus"
                },
                "example": {
                  "streaming": true,
                  "sessionId": "00000000-0000-4000-8000-000000000001",
                  "startedAt": "2026-10-08T14:00:00.000Z",
                  "deadlineAt": "2026-10-08T16:00:00.000Z",
                  "speakerLanguage": "en",
                  "targetLanguages": [
                    "fr-FR"
                  ],
                  "voice": "male",
                  "visible": true,
                  "publisher": {
                    "kind": "connect",
                    "id": "00000000-0000-4000-8000-000000000002",
                    "name": "Sanctuary Mac"
                  },
                  "phase": "streaming",
                  "streamSettings": {
                    "revision": 4,
                    "settings": {
                      "speakerLanguage": "en",
                      "targetLanguages": [
                        "fr-FR"
                      ],
                      "duration": 3600
                    }
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "description": "Odpovědi nejsou cachovány.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "no-store"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Chybějící nebo neplatný API klíč, včetně vypršení platnosti, odvolání, nesprávné církve nebo pokud tvůrce již není členem.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "API_KEY_INVALID"
                }
              }
            }
          },
          "503": {
            "description": "Dočasná chyba služby nebo autentizace. Před opakováním požadavku na ovládání obnovte stav.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "CONTROL_UNAVAILABLE"
                }
              }
            }
          }
        },
        "x-kaleo-anchor": "Get streaming status"
      }
    },
    "/v1/church/{churchId}/streaming/start": {
      "post": {
        "operationId": "startStreaming",
        "summary": "Spustit streamování",
        "tags": [
          "Streaming"
        ],
        "description": "Spusťte streamování na zařízení Kaleo Connect pomocí uložených nastavení. Volitelné tělo může vybrat `deviceId` a přepsat nastavení pro tuto relaci. Bez `deviceId` Kaleo vybere výchozí zvukový zdroj nakonfigurovaný na stránce [Kaleo Connect](https://app.withkaleo.com/to/integrations/connect) (v sekci Integrace) ve vašem dashboardu, pokud je k dispozici více zvukových zařízení, nebo jediný dostupný zvukový zdroj, pokud je k dispozici pouze jedno zařízení.",
        "parameters": [
          {
            "name": "churchId",
            "in": "path",
            "required": true,
            "description": "ID vaší církve. Zkopírujte jej ze stránky [API](https://app.withkaleo.com/to/integrations/api) (v sekci Integrace) ve vašem dashboardu.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Úspěch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamingStatus"
                },
                "example": {
                  "streaming": true,
                  "sessionId": "00000000-0000-4000-8000-000000000001",
                  "startedAt": "2026-10-08T14:00:00.000Z",
                  "deadlineAt": "2026-10-08T16:00:00.000Z",
                  "speakerLanguage": "en",
                  "targetLanguages": [
                    "fr-FR"
                  ],
                  "voice": "male",
                  "visible": true,
                  "publisher": {
                    "kind": "connect",
                    "id": "00000000-0000-4000-8000-000000000002",
                    "name": "Sanctuary Mac"
                  },
                  "phase": "streaming",
                  "streamSettings": {
                    "revision": 4,
                    "settings": {
                      "speakerLanguage": "en",
                      "targetLanguages": [
                        "fr-FR"
                      ],
                      "duration": 3600
                    }
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "description": "Odpovědi nejsou cachovány.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "no-store"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Chybně formátovaný JSON, nepodporovaná pole nebo neplatné hodnoty.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "INVALID_REQUEST"
                }
              }
            }
          },
          "401": {
            "description": "Chybějící nebo neplatný API klíč, včetně vypršení platnosti, odvolání, nesprávné církve nebo pokud tvůrce již není členem.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "API_KEY_INVALID"
                }
              }
            }
          },
          "403": {
            "description": "Plán, jazyk nebo limity použití brání spuštění.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "PLAN_LIMIT"
                }
              }
            }
          },
          "409": {
            "description": "Konflikt aktivní relace, chybějící zvukový zdroj nebo výchozí výběr, nebo vybrané zařízení není připraveno. Přečtěte si stav streamování a připravenost zařízení; vyberte výchozí na stránce [Kaleo Connect](https://app.withkaleo.com/to/integrations/connect) (v sekci Integrace) ve vašem dashboardu nebo poskytněte `deviceId` podle potřeby.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "ACTIVE_SESSION"
                }
              }
            }
          },
          "503": {
            "description": "Dočasná chyba služby nebo autentizace. Před opakováním požadavku na ovládání obnovte stav.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "CONTROL_UNAVAILABLE"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartStreaming"
              },
              "examples": {
                "defaultAudioSource": {
                  "summary": "Použijte výchozí zvukový zdroj",
                  "value": {}
                },
                "explicitDevice": {
                  "summary": "Vyberte zařízení pro tuto relaci",
                  "value": {
                    "deviceId": "00000000-0000-4000-8000-000000000002"
                  }
                }
              }
            }
          },
          "description": "Vynechejte tělo nebo pošlete `{}` pro použití výchozího zvukového zdroje a uložených nastavení. Pošlete `deviceId` pro výběr jiného zařízení pro tuto relaci."
        },
        "x-kaleo-anchor": "Start streaming"
      }
    },
    "/v1/church/{churchId}/streaming/stop": {
      "post": {
        "operationId": "stopStreaming",
        "summary": "Zastavit streamování",
        "tags": [
          "Streaming"
        ],
        "description": "Zastavte aktuální streamovací relaci. Není potřeba žádné tělo požadavku.",
        "parameters": [
          {
            "name": "churchId",
            "in": "path",
            "required": true,
            "description": "ID vaší církve. Zkopírujte jej ze stránky [API](https://app.withkaleo.com/to/integrations/api) (v sekci Integrace) ve vašem dashboardu.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Úspěch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamingStatus"
                },
                "example": {
                  "streaming": false,
                  "sessionId": null,
                  "startedAt": null,
                  "deadlineAt": null,
                  "speakerLanguage": null,
                  "targetLanguages": [],
                  "voice": "male",
                  "visible": true,
                  "publisher": null,
                  "phase": "idle",
                  "streamSettings": {
                    "revision": 4,
                    "settings": {
                      "speakerLanguage": "en",
                      "targetLanguages": [
                        "fr-FR"
                      ],
                      "duration": 3600
                    }
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "description": "Odpovědi nejsou cachovány.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "no-store"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Chybějící nebo neplatný API klíč, včetně vypršení platnosti, odvolání, nesprávné církve nebo pokud tvůrce již není členem.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "API_KEY_INVALID"
                }
              }
            }
          },
          "503": {
            "description": "Dočasná chyba služby nebo autentizace. Před opakováním požadavku na ovládání obnovte stav.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "CONTROL_UNAVAILABLE"
                }
              }
            }
          }
        },
        "x-kaleo-anchor": "Stop streaming"
      }
    },
    "/v1/church/{churchId}/streaming/voice": {
      "patch": {
        "operationId": "changeVoice",
        "summary": "Změnit hlas překladu",
        "tags": [
          "Streaming"
        ],
        "description": "Změňte hlas překladu během nečinnosti nebo streamování.",
        "parameters": [
          {
            "name": "churchId",
            "in": "path",
            "required": true,
            "description": "ID vaší církve. Zkopírujte jej ze stránky [API](https://app.withkaleo.com/to/integrations/api) (v sekci Integrace) ve vašem dashboardu.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Úspěch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamingStatus"
                },
                "example": {
                  "streaming": true,
                  "sessionId": "00000000-0000-4000-8000-000000000001",
                  "startedAt": "2026-10-08T14:00:00.000Z",
                  "deadlineAt": "2026-10-08T16:00:00.000Z",
                  "speakerLanguage": "en",
                  "targetLanguages": [
                    "fr-FR"
                  ],
                  "voice": "female",
                  "visible": true,
                  "publisher": {
                    "kind": "connect",
                    "id": "00000000-0000-4000-8000-000000000002",
                    "name": "Sanctuary Mac"
                  },
                  "phase": "streaming",
                  "streamSettings": {
                    "revision": 4,
                    "settings": {
                      "speakerLanguage": "en",
                      "targetLanguages": [
                        "fr-FR"
                      ],
                      "duration": 3600
                    }
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "description": "Odpovědi nejsou cachovány.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "no-store"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Chybně formátovaný JSON, nepodporovaná pole nebo neplatné hodnoty.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "INVALID_REQUEST"
                }
              }
            }
          },
          "401": {
            "description": "Chybějící nebo neplatný API klíč, včetně vypršení platnosti, odvolání, nesprávné církve nebo pokud tvůrce již není členem.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "API_KEY_INVALID"
                }
              }
            }
          },
          "409": {
            "description": "Stream se změnil nebo příkaz nemohl být potvrzen. Přečtěte si aktuální stav streamování před odesláním dalšího příkazu.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "SESSION_CHANGED"
                }
              }
            }
          },
          "503": {
            "description": "Dočasná chyba služby nebo autentizace. Před opakováním požadavku na ovládání obnovte stav.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "CONTROL_UNAVAILABLE"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeVoice"
              },
              "example": {
                "voice": "female"
              }
            }
          }
        },
        "x-kaleo-anchor": "Change translation voice"
      }
    },
    "/v1/church/{churchId}/streaming/visibility": {
      "patch": {
        "operationId": "changeVisibility",
        "summary": "Změnit viditelnost",
        "tags": [
          "Streaming"
        ],
        "description": "Zobrazit nebo skrýt titulky během nečinnosti nebo streamování. Skrytí titulků nezastaví relaci.",
        "parameters": [
          {
            "name": "churchId",
            "in": "path",
            "required": true,
            "description": "ID vaší církve. Zkopírujte jej ze stránky [API](https://app.withkaleo.com/to/integrations/api) (v sekci Integrace) ve vašem dashboardu.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Úspěch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamingStatus"
                },
                "example": {
                  "streaming": true,
                  "sessionId": "00000000-0000-4000-8000-000000000001",
                  "startedAt": "2026-10-08T14:00:00.000Z",
                  "deadlineAt": "2026-10-08T16:00:00.000Z",
                  "speakerLanguage": "en",
                  "targetLanguages": [
                    "fr-FR"
                  ],
                  "voice": "male",
                  "visible": false,
                  "publisher": {
                    "kind": "connect",
                    "id": "00000000-0000-4000-8000-000000000002",
                    "name": "Sanctuary Mac"
                  },
                  "phase": "streaming",
                  "streamSettings": {
                    "revision": 4,
                    "settings": {
                      "speakerLanguage": "en",
                      "targetLanguages": [
                        "fr-FR"
                      ],
                      "duration": 3600
                    }
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "description": "Odpovědi nejsou cachovány.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "no-store"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Chybně formátovaný JSON, nepodporovaná pole nebo neplatné hodnoty.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "INVALID_REQUEST"
                }
              }
            }
          },
          "401": {
            "description": "Chybějící nebo neplatný API klíč, včetně vypršení platnosti, odvolání, nesprávné církve nebo pokud tvůrce již není členem.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "API_KEY_INVALID"
                }
              }
            }
          },
          "503": {
            "description": "Dočasná chyba služby nebo autentizace. Před opakováním požadavku na ovládání obnovte stav.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "CONTROL_UNAVAILABLE"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeVisibility"
              },
              "example": {
                "visible": false
              }
            }
          }
        },
        "x-kaleo-anchor": "Change visibility"
      }
    },
    "/v1/church/{churchId}/streaming/captions/clear": {
      "post": {
        "operationId": "clearCaptions",
        "summary": "Vymazat titulky",
        "tags": [
          "Streaming"
        ],
        "description": "Vymažte aktuální titulkový proud. Není potřeba žádné tělo požadavku.",
        "parameters": [
          {
            "name": "churchId",
            "in": "path",
            "required": true,
            "description": "ID vaší církve. Zkopírujte jej ze stránky [API](https://app.withkaleo.com/to/integrations/api) (v sekci Integrace) ve vašem dashboardu.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Úspěch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamingStatus"
                },
                "example": {
                  "streaming": true,
                  "sessionId": "00000000-0000-4000-8000-000000000001",
                  "startedAt": "2026-10-08T14:00:00.000Z",
                  "deadlineAt": "2026-10-08T16:00:00.000Z",
                  "speakerLanguage": "en",
                  "targetLanguages": [
                    "fr-FR"
                  ],
                  "voice": "male",
                  "visible": true,
                  "publisher": {
                    "kind": "connect",
                    "id": "00000000-0000-4000-8000-000000000002",
                    "name": "Sanctuary Mac"
                  },
                  "phase": "streaming",
                  "streamSettings": {
                    "revision": 4,
                    "settings": {
                      "speakerLanguage": "en",
                      "targetLanguages": [
                        "fr-FR"
                      ],
                      "duration": 3600
                    }
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "description": "Odpovědi nejsou cachovány.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "no-store"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Chybějící nebo neplatný API klíč, včetně vypršení platnosti, odvolání, nesprávné církve nebo pokud tvůrce již není členem.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "API_KEY_INVALID"
                }
              }
            }
          },
          "503": {
            "description": "Dočasná chyba služby nebo autentizace. Před opakováním požadavku na ovládání obnovte stav.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "CONTROL_UNAVAILABLE"
                }
              }
            }
          }
        },
        "x-kaleo-anchor": "Clear captions"
      }
    },
    "/v1/church/{churchId}/streaming/deadline": {
      "patch": {
        "operationId": "changeDeadline",
        "summary": "Změnit automatický čas ukončení",
        "tags": [
          "Streaming"
        ],
        "description": "Nastavte čas automatického ukončení pro aktivní relaci. Vrací aktualizovaný stav streamování.",
        "parameters": [
          {
            "name": "churchId",
            "in": "path",
            "required": true,
            "description": "ID vaší církve. Zkopírujte jej ze stránky [API](https://app.withkaleo.com/to/integrations/api) (v sekci Integrace) ve vašem dashboardu.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Úspěch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamingStatus"
                },
                "example": {
                  "streaming": true,
                  "sessionId": "00000000-0000-4000-8000-000000000001",
                  "startedAt": "2026-10-08T14:00:00.000Z",
                  "deadlineAt": "2026-10-08T16:00:00.000Z",
                  "speakerLanguage": "en",
                  "targetLanguages": [
                    "fr-FR"
                  ],
                  "voice": "male",
                  "visible": true,
                  "publisher": {
                    "kind": "connect",
                    "id": "00000000-0000-4000-8000-000000000002",
                    "name": "Sanctuary Mac"
                  },
                  "phase": "streaming",
                  "streamSettings": {
                    "revision": 4,
                    "settings": {
                      "speakerLanguage": "en",
                      "targetLanguages": [
                        "fr-FR"
                      ],
                      "duration": 3600
                    }
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "description": "Odpovědi nejsou cachovány.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "no-store"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Chybně formátovaný JSON, nepodporovaná pole nebo neplatné hodnoty.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "INVALID_REQUEST"
                }
              }
            }
          },
          "401": {
            "description": "Chybějící nebo neplatný API klíč, včetně vypršení platnosti, odvolání, nesprávné církve nebo pokud tvůrce již není členem.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "API_KEY_INVALID"
                }
              }
            }
          },
          "409": {
            "description": "`STREAM_OFFLINE` během nečinnosti; `INVALID_DEADLINE` pro čas ukončení mimo povolené okno. Přečtěte si aktuální stav streamování před odesláním dalšího příkazu.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "INVALID_DEADLINE"
                }
              }
            }
          },
          "503": {
            "description": "Dočasná chyba služby nebo autentizace. Před opakováním požadavku na ovládání obnovte stav.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "CONTROL_UNAVAILABLE"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeDeadline"
              },
              "example": {
                "deadlineAt": "2026-10-08T16:00:00Z"
              }
            }
          }
        },
        "x-kaleo-anchor": "Change auto-stop deadline"
      }
    },
    "/v1/church/{churchId}/sessions": {
      "get": {
        "operationId": "listSessions",
        "summary": "Seznam relací",
        "tags": [
          "Sessions"
        ],
        "description": "Seznam relací, nejnovější první, s analytikou diváků.",
        "parameters": [
          {
            "name": "churchId",
            "in": "path",
            "required": true,
            "description": "ID vaší církve. Zkopírujte jej ze stránky [API](https://app.withkaleo.com/to/integrations/api) (v sekci Integrace) ve vašem dashboardu.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            },
            "description": "Číslo stránky, začíná na 1. Hodnoty nad poslední stránkou vrací poslední stránku."
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 14
            },
            "description": "Relace na stránku. Hodnoty nad 100 použijí 100."
          },
          {
            "name": "startedAfter",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Zahrnout relace zahájené v nebo po tomto čase. Zahrňte Z nebo časové pásmo."
          },
          {
            "name": "startedBefore",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Zahrnout relace zahájené v nebo před tímto časem. Zahrňte Z nebo časové pásmo. Musí být v nebo po `startedAfter`."
          }
        ],
        "responses": {
          "200": {
            "description": "Úspěch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HistoryPage"
                },
                "example": {
                  "sessions": [
                    {
                      "sessionId": "00000000-0000-4000-8000-000000000001",
                      "startedAt": "2026-10-04T14:00:00.000Z",
                      "endedAt": "2026-10-04T15:00:00.000Z",
                      "duration": 3600,
                      "speakerLanguage": "en",
                      "targetLanguages": [
                        "fr-FR"
                      ],
                      "transcriptAvailable": true,
                      "publicSharingEnabled": false,
                      "analytics": {
                        "sessionId": "00000000-0000-4000-8000-000000000001",
                        "status": "finalized",
                        "viewers": 12,
                        "viewerLanguages": {
                          "en": 8,
                          "fr-FR": 6
                        }
                      }
                    }
                  ],
                  "total": 1,
                  "page": 1,
                  "pageSize": 14
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "description": "Odpovědi při čtení nejsou cachovány.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "no-store"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Neplatná stránkování s kladným celým číslem nebo neplatný/obrácený rozsah časových razítek.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "INVALID_HISTORY_RANGE"
                }
              }
            }
          },
          "401": {
            "description": "Chybějící nebo neplatný API klíč, včetně vypršení platnosti, odvolání, nesprávné církve nebo pokud tvůrce již není členem církve.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "API_KEY_INVALID"
                }
              }
            }
          },
          "503": {
            "description": "Historie nebo autentizační služba není dostupná. Nejedná se o prázdný výsledek historie.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "SESSION_HISTORY_UNAVAILABLE"
                }
              }
            }
          }
        },
        "x-kaleo-anchor": "List sessions"
      }
    },
    "/v1/church/{churchId}/sessions/{sessionId}": {
      "get": {
        "operationId": "getSession",
        "summary": "Získat relaci",
        "tags": [
          "Sessions"
        ],
        "description": "Přečtěte si jednu relaci a její analytiku diváků.",
        "parameters": [
          {
            "name": "churchId",
            "in": "path",
            "required": true,
            "description": "ID vaší církve. Zkopírujte jej ze stránky [API](https://app.withkaleo.com/to/integrations/api) (v sekci Integrace) ve vašem dashboardu.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "ID relace z `GET /sessions`.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Úspěch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionDetails"
                },
                "example": {
                  "session": {
                    "sessionId": "00000000-0000-4000-8000-000000000001",
                    "startedAt": "2026-10-04T14:00:00.000Z",
                    "endedAt": "2026-10-04T15:00:00.000Z",
                    "duration": 3600,
                    "speakerLanguage": "en",
                    "targetLanguages": [
                      "fr-FR"
                    ],
                    "transcriptAvailable": true,
                    "publicSharingEnabled": false,
                    "analytics": {
                      "sessionId": "00000000-0000-4000-8000-000000000001",
                      "status": "finalized",
                      "viewers": 12,
                      "viewerLanguages": {
                        "en": 8,
                        "fr-FR": 6
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "description": "Odpovědi při čtení nejsou cachovány.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "no-store"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Chybějící nebo neplatný API klíč, včetně vypršení platnosti, odvolání, nesprávné církve nebo pokud tvůrce již není členem církve.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "API_KEY_INVALID"
                }
              }
            }
          },
          "404": {
            "description": "Chybějící, odstraněná, neplatná ID nebo relace vlastněná jinak.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "SESSION_NOT_FOUND"
                }
              }
            }
          },
          "503": {
            "description": "Historie nebo autentizační služba není dostupná.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "SESSION_HISTORY_UNAVAILABLE"
                }
              }
            }
          }
        },
        "x-kaleo-anchor": "Get session"
      }
    },
    "/v1/church/{churchId}/languages/speaker": {
      "get": {
        "operationId": "listSpeakerLanguages",
        "summary": "Seznam jazyků řečníků",
        "tags": [
          "Languages"
        ],
        "description": "Seznam podporovaných jazyků řečníků. Použijte tyto kódy v `speakerLanguage`.",
        "parameters": [
          {
            "name": "churchId",
            "in": "path",
            "required": true,
            "description": "ID vaší církve. Zkopírujte jej ze stránky [API](https://app.withkaleo.com/to/integrations/api) (v sekci Integrace) ve vašem dashboardu.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Úspěch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Languages"
                },
                "example": {
                  "languages": [
                    {
                      "code": "en",
                      "name": "English",
                      "nativeName": "English",
                      "emoji": "🌎"
                    }
                  ]
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "description": "Odpovědi nejsou cachovány.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "no-store"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Chybějící nebo neplatný API klíč, včetně vypršení platnosti, odvolání, nesprávné církve nebo pokud tvůrce již není členem.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "API_KEY_INVALID"
                }
              }
            }
          },
          "503": {
            "description": "Autentizační služba je dočasně nedostupná.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "AUTHENTICATION_UNAVAILABLE"
                }
              }
            }
          }
        },
        "x-kaleo-anchor": "List speaker languages"
      }
    },
    "/v1/church/{churchId}/languages/target": {
      "get": {
        "operationId": "listTargetLanguages",
        "summary": "Seznam cílových jazyků",
        "tags": [
          "Languages"
        ],
        "description": "Seznam podporovaných překladových jazyků. Použijte tyto kódy v `targetLanguages`.",
        "parameters": [
          {
            "name": "churchId",
            "in": "path",
            "required": true,
            "description": "ID vaší církve. Zkopírujte jej ze stránky [API](https://app.withkaleo.com/to/integrations/api) (v sekci Integrace) ve vašem dashboardu.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Úspěch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Languages"
                },
                "example": {
                  "languages": [
                    {
                      "code": "en",
                      "name": "English",
                      "nativeName": "English",
                      "emoji": "🌎"
                    }
                  ]
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "description": "Odpovědi nejsou cachovány.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "no-store"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Chybějící nebo neplatný API klíč, včetně vypršení platnosti, odvolání, nesprávné církve nebo pokud tvůrce již není členem.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "API_KEY_INVALID"
                }
              }
            }
          },
          "503": {
            "description": "Autentizační služba je dočasně nedostupná.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "AUTHENTICATION_UNAVAILABLE"
                }
              }
            }
          }
        },
        "x-kaleo-anchor": "List target languages"
      }
    },
    "/v1/church/{churchId}/languages/{code}": {
      "get": {
        "operationId": "getLanguage",
        "summary": "Získat jazyk",
        "tags": [
          "Languages"
        ],
        "description": "Přečtěte si názvy a emoji pro jeden podporovaný jazykový kód.",
        "parameters": [
          {
            "name": "churchId",
            "in": "path",
            "required": true,
            "description": "ID vaší církve. Zkopírujte jej ze stránky [API](https://app.withkaleo.com/to/integrations/api) (v sekci Integrace) ve vašem dashboardu.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "code",
            "in": "path",
            "required": true,
            "description": "Přesný jazykový kód, například `en` nebo `zh-Hans`.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Úspěch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LanguageDetails"
                },
                "example": {
                  "language": {
                    "code": "fr",
                    "name": "French (General)",
                    "nativeName": "Français",
                    "emoji": "🇫🇷"
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "description": "Odpovědi nejsou cachovány.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "no-store"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Chybějící nebo neplatný API klíč, včetně vypršení platnosti, odvolání, nesprávné církve nebo pokud tvůrce již není členem.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "API_KEY_INVALID"
                }
              }
            }
          },
          "404": {
            "description": "Nepodporovaný jazykový kód.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "LANGUAGE_NOT_FOUND"
                }
              }
            }
          },
          "503": {
            "description": "Autentizační služba je dočasně nedostupná.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "AUTHENTICATION_UNAVAILABLE"
                }
              }
            }
          }
        },
        "x-kaleo-anchor": "Get language"
      }
    },
    "/v1/church/{churchId}/streaming/deadline/adjust": {
      "post": {
        "operationId": "adjustDeadline",
        "summary": "Upravit čas automatického ukončení",
        "tags": [
          "Streaming"
        ],
        "description": "Přidat nebo odečíst čas automatického ukončení. Během nečinnosti změňte délku trvání pro další manuální spuštění. Během streamování změňte aktuální čas ukončení. Každý požadavek aplikuje samostatnou úpravu.",
        "parameters": [
          {
            "name": "churchId",
            "in": "path",
            "required": true,
            "description": "ID vaší církve. Zkopírujte jej ze stránky [API](https://app.withkaleo.com/to/integrations/api) (v sekci Integrace) ve vašem dashboardu.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Úspěch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamingStatus"
                },
                "example": {
                  "streaming": true,
                  "sessionId": "00000000-0000-4000-8000-000000000001",
                  "startedAt": "2026-10-08T14:00:00.000Z",
                  "deadlineAt": "2026-10-08T16:00:00.000Z",
                  "speakerLanguage": "en",
                  "targetLanguages": [
                    "fr-FR"
                  ],
                  "voice": "male",
                  "visible": true,
                  "publisher": {
                    "kind": "connect",
                    "id": "00000000-0000-4000-8000-000000000002",
                    "name": "Sanctuary Mac"
                  },
                  "phase": "streaming",
                  "streamSettings": {
                    "revision": 4,
                    "settings": {
                      "speakerLanguage": "en",
                      "targetLanguages": [
                        "fr-FR"
                      ],
                      "duration": 3600
                    }
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "description": "Odpovědi nejsou cachovány.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "no-store"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Chybně formátovaný JSON, nepodporovaná pole nebo neplatné hodnoty.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "INVALID_REQUEST"
                }
              }
            }
          },
          "401": {
            "description": "Chybějící nebo neplatný API klíč, včetně vypršení platnosti, odvolání, nesprávné církve nebo pokud tvůrce již není členem.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "API_KEY_INVALID"
                }
              }
            }
          },
          "409": {
            "description": "`INVALID_DEADLINE` pro živý čas ukončení mimo povolené okno; `DEADLINE_NOT_SET` když relace nemá čas ukončení. `SETTINGS_CHANGED` nebo `SESSION_ACTIVE` při současné změně nastavení nečinnosti nebo přijetí. Přečtěte si aktuální stav streamování před odesláním dalšího příkazu.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "INVALID_DEADLINE"
                }
              }
            }
          },
          "503": {
            "description": "Dočasná chyba služby nebo autentizace. Před opakováním požadavku na ovládání obnovte stav.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "success": false,
                  "error": "CONTROL_UNAVAILABLE"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdjustDeadline"
              },
              "example": {
                "deltaSeconds": 120
              }
            }
          }
        },
        "x-kaleo-anchor": "Adjust auto-stop time"
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiKeyBearer": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "API key",
        "description": "Zadejte svůj API klíč přesně tak, jak jste jej zkopírovali ze stránky [API](https://app.withkaleo.com/to/integrations/api) (v sekci Integrace) ve vašem dashboardu. Bearer je přidán automaticky. Funguje pro jednu církev, dokud její tvůrce zůstává členem."
      }
    },
    "schemas": {
      "Device": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "ID zařízení. Předávejte tuto hodnotu jako `deviceId` v požadavcích."
          },
          "name": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "offline",
              "online",
              "maintenance"
            ],
            "description": "Stav připojení. Offline po 90 sekundách bez kontaktu; údržba znamená dočasnou nedostupnost."
          },
          "capabilities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeviceCapability"
            },
            "description": "Připravenost každé funkce na tomto zařízení."
          },
          "lastSeenAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Poslední kontakt s Kaleo; `null` pokud neznámý."
          }
        },
        "required": [
          "id",
          "name",
          "status",
          "capabilities",
          "lastSeenAt"
        ],
        "additionalProperties": false
      },
      "DeviceCapability": {
        "type": "object",
        "properties": {
          "capability": {
            "type": "string",
            "enum": [
              "audio-source",
              "audio-output",
              "propresenter"
            ],
            "description": "Lokální funkce: zachycení zvuku, přehrávání přeložené řeči nebo vstup snímků ProPresenter."
          },
          "status": {
            "type": "string",
            "enum": [
              "ready",
              "unavailable",
              "offline"
            ],
            "description": "Zda je tato funkce připravena k použití."
          }
        },
        "required": [
          "capability",
          "status"
        ],
        "additionalProperties": false
      },
      "Devices": {
        "type": "object",
        "properties": {
          "devices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Device"
            }
          }
        },
        "required": [
          "devices"
        ],
        "additionalProperties": false
      },
      "DeviceDetails": {
        "type": "object",
        "properties": {
          "device": {
            "$ref": "#/components/schemas/Device"
          }
        },
        "required": [
          "device"
        ],
        "additionalProperties": false
      },
      "ProPresenterSelection": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "default"
                ],
                "description": "Použít výchozí zařízení ProPresenter církve."
              }
            },
            "required": [
              "mode"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "none"
                ],
                "description": "Nepoužívat ProPresenter pro tuto relaci."
              }
            },
            "required": [
              "mode"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "device"
                ],
                "description": "Použít zařízení určené `deviceId`."
              },
              "deviceId": {
                "type": "string",
                "description": "ID zařízení zdroje ProPresenter, z `GET /devices`. Může se lišit od zvukového zdroje."
              }
            },
            "required": [
              "mode",
              "deviceId"
            ],
            "additionalProperties": false
          }
        ],
        "description": "Vyberte zdroj ProPresenter pro tuto relaci. Nakonfigurujte jeho připojení v Connect."
      },
      "StartStreaming": {
        "type": "object",
        "properties": {
          "deviceId": {
            "type": "string",
            "description": "Volitelné ID zařízení zvukového zdroje z `GET /devices`. Přepisuje výchozí nastavení církve pro tuto relaci. Pokud je vynecháno, použije se uložený výchozí zvukový zdroj nebo jediné dostupné zařízení schopné zvuku; pokud je více zařízení bez výchozího, je vyžadován výběr. Vybrané zařízení musí být stále připraveno."
          },
          "overrides": {
            "type": "object",
            "properties": {
              "speakerLanguage": {
                "type": "string",
                "description": "Kód z `GET /languages/speaker`. Použijte `\"mul\"` pro režim vícejazyčný."
              },
              "targetLanguages": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "minItems": 1,
                "description": "Kódy z `GET /languages/target`. Použijte `[\"ALL\"]` pro všechny podporované cíle, v rámci limitu vašeho plánu."
              },
              "duration": {
                "type": "integer",
                "minimum": 60,
                "maximum": 21600,
                "description": "Čas do automatického zastavení v sekundách."
              },
              "proPresenter": {
                "$ref": "#/components/schemas/ProPresenterSelection"
              }
            },
            "required": [],
            "additionalProperties": false,
            "description": "Nastavení pouze pro tuto relaci. Vynechaná pole používají uložené výchozí hodnoty."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "ChangeVoice": {
        "type": "object",
        "properties": {
          "voice": {
            "type": "string",
            "enum": [
              "male",
              "female"
            ],
            "description": "Hlas překladu. Lze měnit během nečinnosti nebo streamování."
          }
        },
        "required": [
          "voice"
        ],
        "additionalProperties": false
      },
      "ChangeVisibility": {
        "type": "object",
        "properties": {
          "visible": {
            "type": "boolean",
            "description": "`true` zobrazuje titulky; `false` je skrývá, zatímco streamování pokračuje."
          }
        },
        "required": [
          "visible"
        ],
        "additionalProperties": false
      },
      "ChangeDeadline": {
        "type": "object",
        "properties": {
          "deadlineAt": {
            "type": "string",
            "format": "date-time",
            "description": "Budoucí čas automatického ukončení s Z nebo časovým posunem. Ne později než šest hodin po `startedAt`."
          }
        },
        "required": [
          "deadlineAt"
        ],
        "additionalProperties": false
      },
      "Error": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              false
            ]
          },
          "error": {
            "type": "string"
          }
        },
        "required": [
          "success",
          "error"
        ]
      },
      "Analytics": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "live",
              "pending",
              "finalized"
            ],
            "description": "`live`: provizorní počty; `pending`: čeká na konečné počty; `finalized`: uložené počty."
          },
          "viewers": {
            "type": "integer",
            "minimum": 0,
            "nullable": true,
            "description": "Unikátní identity diváků pro relaci, nikoli aktuální diváci. `null` pokud není k dispozici; 0 znamená žádné diváky."
          },
          "viewerLanguages": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Analytika diváků podle jazykového kódu. Divák se může objevit ve více jazycích. `null` pokud není k dispozici."
          }
        },
        "required": [
          "sessionId",
          "status",
          "viewers",
          "viewerLanguages"
        ]
      },
      "HistorySession": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string"
          },
          "startedAt": {
            "type": "string",
            "format": "date-time"
          },
          "endedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Čas ukončení relace; `null` pokud nedokončeno nebo nedostupné."
          },
          "duration": {
            "type": "integer",
            "nullable": true,
            "description": "Zaznamenaná délka relace v sekundách; `null` pokud nedokončeno nebo nedostupné."
          },
          "speakerLanguage": {
            "type": "string",
            "nullable": true,
            "description": "Jazykový kód řečníka; `null` pokud nezaznamenáno."
          },
          "targetLanguages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Zaznamenané kódy překladových jazyků, nebo `[\"ALL\"]`."
          },
          "transcriptAvailable": {
            "type": "boolean",
            "description": "`true` když je uložený přepis připraven. Neuděluje veřejný přístup ani URL ke stažení."
          },
          "publicSharingEnabled": {
            "type": "boolean",
            "description": "`true` když je veřejné sdílení povoleno pro dokončenou relaci."
          },
          "analytics": {
            "$ref": "#/components/schemas/Analytics"
          }
        },
        "required": [
          "sessionId",
          "startedAt",
          "endedAt",
          "duration",
          "speakerLanguage",
          "targetLanguages",
          "transcriptAvailable",
          "publicSharingEnabled",
          "analytics"
        ]
      },
      "HistoryPage": {
        "type": "object",
        "properties": {
          "sessions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HistorySession"
            }
          },
          "total": {
            "type": "integer",
            "minimum": 0,
            "description": "Celkový počet relací odpovídajících filtrům, přes všechny stránky."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Vrácená stránka; může být nižší než požadovaná."
          },
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximální počet relací na stránku, omezeno na 100."
          }
        },
        "required": [
          "sessions",
          "total",
          "page",
          "pageSize"
        ]
      },
      "SessionDetails": {
        "type": "object",
        "properties": {
          "session": {
            "$ref": "#/components/schemas/HistorySession"
          }
        },
        "required": [
          "session"
        ]
      },
      "Language": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Použijte tento přesný kód v jazykových polích."
          },
          "name": {
            "type": "string",
            "description": "Název v angličtině."
          },
          "nativeName": {
            "type": "string",
            "description": "Název v jeho vlastním jazyce; anglicky, pokud není k dispozici."
          },
          "emoji": {
            "type": "string",
            "description": "Zobrazovací emoji pro tento jazyk."
          }
        },
        "required": [
          "code",
          "name",
          "nativeName",
          "emoji"
        ],
        "additionalProperties": false
      },
      "Languages": {
        "type": "object",
        "properties": {
          "languages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Language"
            }
          }
        },
        "required": [
          "languages"
        ],
        "additionalProperties": false
      },
      "LanguageDetails": {
        "type": "object",
        "properties": {
          "language": {
            "$ref": "#/components/schemas/Language"
          }
        },
        "required": [
          "language"
        ],
        "additionalProperties": false
      },
      "StreamingStatus": {
        "type": "object",
        "properties": {
          "streaming": {
            "type": "boolean",
            "description": "`true` během aktivní relace, včetně spuštění, znovupřipojení a ukončení. Nepotvrzuje příjem zvuku."
          },
          "sessionId": {
            "type": "string",
            "nullable": true,
            "description": "Aktuální ID relace; `null` během nečinnosti."
          },
          "startedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Čas zahájení aktuální relace; `null` během nečinnosti."
          },
          "deadlineAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Čas automatického ukončení; `null` během nečinnosti nebo pokud není zaznamenán čas ukončení."
          },
          "speakerLanguage": {
            "type": "string",
            "nullable": true,
            "description": "Aktuální jazykový kód řečníka; `null` během nečinnosti."
          },
          "targetLanguages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Aktuální kódy překladových jazyků; prázdné během nečinnosti."
          },
          "voice": {
            "type": "string",
            "enum": [
              "male",
              "female",
              null
            ],
            "nullable": false,
            "description": "Hlas překladu, včetně během nečinnosti."
          },
          "visible": {
            "type": "boolean",
            "description": "`true` zobrazuje titulky; `false` je skrývá. Platí také během nečinnosti."
          },
          "publisher": {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "browser",
                  "connect"
                ]
              },
              "id": {
                "type": "string",
                "description": "ID zařízení, když je `kind` `connect`; ID prohlížeče vydavatele, když je `kind` `browser`."
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "kind",
              "id",
              "name"
            ],
            "additionalProperties": false,
            "nullable": true,
            "description": "Zařízení Kaleo Connect nebo prohlížeč, který odesílá zvuk; `null` během nečinnosti."
          },
          "phase": {
            "type": "string",
            "enum": [
              "idle",
              "starting",
              "streaming",
              "reconnecting",
              "ending"
            ],
            "description": "Fáze relace; nečinnost znamená, že žádná relace není aktivní."
          },
          "streamSettings": {
            "type": "object",
            "description": "Výchozí nastavení církve pro další manuální spuštění. Přepisy aktivní relace tyto hodnoty nemění.",
            "required": [
              "revision",
              "settings"
            ],
            "properties": {
              "revision": {
                "type": "integer",
                "minimum": 0,
                "description": "Zvyšuje se při změně těchto výchozích hodnot."
              },
              "settings": {
                "type": "object",
                "required": [
                  "speakerLanguage",
                  "targetLanguages",
                  "duration"
                ],
                "properties": {
                  "speakerLanguage": {
                    "type": "string",
                    "description": "Výchozí jazykový kód řečníka."
                  },
                  "targetLanguages": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Výchozí kódy překladových jazyků; `[\"ALL\"]` vybere všechny podporované cíle."
                  },
                  "duration": {
                    "type": "integer",
                    "minimum": 60,
                    "maximum": 21600,
                    "description": "Čas do automatického zastavení v sekundách."
                  }
                }
              }
            }
          }
        },
        "required": [
          "streaming",
          "phase",
          "sessionId",
          "startedAt",
          "deadlineAt",
          "speakerLanguage",
          "targetLanguages",
          "voice",
          "visible",
          "publisher",
          "streamSettings"
        ],
        "additionalProperties": false,
        "description": "Aktuální relace a sdílená nastavení církve. Všechna pole jsou přítomna, i když je nečinná."
      },
      "AdjustDeadline": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "deltaSeconds"
        ],
        "properties": {
          "deltaSeconds": {
            "type": "integer",
            "minimum": -21600,
            "maximum": 21600,
            "description": "Sekundy k přidání k délce nečinnosti nebo aktuálnímu času ukončení; záporné hodnoty odečítají. Nemůže být 0. Délka nečinnosti: 60–21600 sekund. Živý čas ukončení: budoucí, do šesti hodin od `startedAt`.",
            "not": {
              "enum": [
                0
              ]
            }
          }
        }
      }
    }
  }
}
