{
  "schemaVersion": "1.0",
  "title": "Cal.diy conferencing",
  "description": "Use these capabilities to list installed conferencing applications, read or change the default, and connect or disconnect an app supported by the published business-operation surface. This page owns all five conferencing operations.",
  "canonical": "https://getaip.org/docs/connectors/cal-diy/capabilities/conferencing",
  "route": "/docs/connectors/cal-diy/capabilities/conferencing",
  "source": "docs/connectors/cal-diy/capabilities/conferencing.md",
  "protocol": "Agent Interoperability Protocol",
  "protocolVersion": "1.0",
  "section": "Connectors",
  "documentType": "Connector",
  "language": "en",
  "downloads": {
    "md": "/docs/download/connectors/cal-diy/capabilities/conferencing.md",
    "txt": "/docs/download/connectors/cal-diy/capabilities/conferencing.txt",
    "json": "/docs/download/connectors/cal-diy/capabilities/conferencing.json",
    "pdf": "/docs/download/connectors/cal-diy/capabilities/conferencing.pdf"
  },
  "content": {
    "format": "text/markdown",
    "markdown": "---\ntitle: Cal.diy conferencing\ndescription: Discover conferencing apps and safely change the default or connection state\nkind: capability-reference\naudience: application-developer\nappliesTo: \"1.x\"\nwritingStandard: \"aip-docs/1.0\"\nlastReviewedRevision: \"97be86e9efedf07ecf1783b03800f683f107fb04\"\nconnector: cal-diy\ncapabilityIds:\n  - cap:cal_diy:conferencing.list\n  - cap:cal_diy:conferencing.default.get\n  - cap:cal_diy:conferencing.default.set\n  - cap:cal_diy:conferencing.connect\n  - cap:cal_diy:conferencing.disconnect\n---\n\n# Cal.diy conferencing\n\nUse these capabilities to list installed conferencing applications, read or\nchange the default, and connect or disconnect an app supported by the published\nbusiness-operation surface. This page owns all five conferencing operations.\n\nAll five use provider API version `2024-08-13`. Browser OAuth authorization and\ncallback routes remain in the operator control plane and are not agent-callable\ncapabilities.\n\n## Choose an operation\n\n| Capability | Provider request | Risk | Approval |\n|---|---|---|---|\n| `cap:cal_diy:conferencing.list` | `GET /v2/conferencing` | Low | No |\n| `cap:cal_diy:conferencing.default.get` | `GET /v2/conferencing/default` | Low | No |\n| `cap:cal_diy:conferencing.default.set` | `POST /v2/conferencing/{app}/default` | Medium | Required |\n| `cap:cal_diy:conferencing.connect` | `POST /v2/conferencing/{app}/connect` | Medium | Required |\n| `cap:cal_diy:conferencing.disconnect` | `DELETE /v2/conferencing/{app}/disconnect` | High | Required |\n\nThe allowed `app` values differ by mutation:\n\n| App | Set default | Connect | Disconnect |\n|---|---|---|---|\n| `google-meet` | Yes | Yes | Yes |\n| `zoom` | Yes | No | Yes |\n| `msteams` | Yes | No | Yes |\n| `daily-video` | Yes | No | No |\n\nDo not infer one operation's app set from another operation.\n\n## Discover installed apps and the default\n\nBoth reads accept an empty object:\n\n```json\n{}\n```\n\nUse `conferencing.list` to inspect installed conferencing applications. Use\n`conferencing.default.get` to read the current default. Both are low-risk,\napproval-free reads at the capability level.\n\nAn installed entry or default selection does not prove that provider\ncredentials are current, that OAuth has completed, or that meeting creation is\nhealthy. The connector does not publish the provider response field shape.\n\n## Change the default app\n\nSet the default by passing exactly one supported app:\n\n```json\n{\n  \"app\": \"zoom\"\n}\n```\n\nThe exact enum is `google-meet`, `zoom`, `msteams`, or `daily-video`.\nAdditional input fields are rejected. `app` becomes the provider path segment,\nso the request has no JSON body after routing fields are removed.\n\nThe connector lists installed apps before dispatch. A successful preflight\ndoes not prove that the selected app appears in the list or can become the\ndefault; Cal.diy still validates the mutation.\n\nDefault set is medium risk. It requires approval and an idempotency key, does\nnot require a plan, and declares no rollback capability.\n\n## Connect the supported non-OAuth app\n\nThe published connect operation accepts only:\n\n```json\n{\n  \"app\": \"google-meet\"\n}\n```\n\nThe connector describes this as connecting a supported non-OAuth conferencing\napplication. `zoom`, `msteams`, and `daily-video` fail the connect input schema\neven though some appear in the default or disconnect enums.\n\nOAuth authorization URL and callback routes are intentionally excluded because\nthey establish browser sessions or credentials. Complete those flows through\nthe deployment's operator-owned process, not an AIP action.\n\nConnect first lists installed apps. It is medium risk and names\n`conferencing.disconnect` as best-effort compensation. Compensation requires a\nseparate approval and is not invoked automatically.\n\n## Disconnect an app\n\nDisconnect accepts `google-meet`, `zoom`, or `msteams`:\n\n```json\n{\n  \"app\": \"msteams\"\n}\n```\n\nThe connector lists installed apps before sending `DELETE` to the app-specific\npath. `daily-video` is not accepted by this capability.\n\nDisconnect is high risk and destructive. It has no rollback contract. A later\nconnect or OAuth flow is a new provider action and does not restore prior\ncredential state or meeting history.\n\n## Shared read contract\n\nThe two reads are synchronous, retry-safe, and eligible for connector retry.\nTheir idempotency key is optional, action-scoped, and collision-checked against\nthe input hash. No capability-level human approval is required.\n\n## Shared mutation contract\n\nAll three mutations require:\n\n| Contract field | Value |\n|---|---|\n| Human approval | Required |\n| Approval selector | Tenant policy |\n| Approval validity window | 900,000 ms |\n| Approval evidence | Reason, input snapshot, policy decision |\n| Idempotency | Required; external-account scope |\n| Collision behavior | Revalidate input hash |\n| Connector retry | Not supported |\n| Retry safety | Unsafe |\n| Execution | Synchronous only |\n| Transaction modes | `dry_run`, `plan`, `commit`, `reconcile` |\n| Plan before commit | Not required |\n| Dry-run fidelity | Policy and schema only |\n\nDefault set and connect are medium risk. Disconnect is high risk, destructive,\nand uses the destructive approval reason. None of the operations carries the\n`send_message` side-effect marker.\n\nOnly connect declares best-effort compensation. Default set and disconnect\ndeclare rollback as not supported.\n\n## Data and result contract\n\nThe family is classified as confidential. Its contract does not declare PII\nand does not require redaction. Deployment policy may still impose stricter\nhandling based on provider output or tenant context.\n\nThe connector returns the validated provider JSON body. A non-empty string\n`status` is required. `data`, `pagination`, and additional provider fields are\noptional and provider-owned.\n\nThe common response scrubber recursively replaces secret-, key-, and\ntoken-named values with `[REDACTED]` even though redaction is not required by\nthis family's data contract. Do not treat that targeted scrubber as a general\nconfidential-data filter.\n\n## Failures and recovery\n\n| Failure | Relevant cause | Safe response |\n|---|---|---|\n| `connector.cal_diy.invalid_action` | Unsupported app or unknown input field | Choose an app from the exact operation enum |\n| `connector.cal_diy.policy` | Mutation omitted its required idempotency key | Preserve approved input and add the missing key |\n| `connector.cal_diy.idempotency_collision` | One key owns different mutation input | Stop and inspect the original action |\n| `connector.cal_diy.in_flight` | A matching conferencing mutation is executing | Read durable state and wait |\n| `connector.cal_diy.outcome_unknown` | Prior provider dispatch cannot be proved | Reconcile; do not create a replacement key |\n| `connector.cal_diy.authentication` | Provider returned `401` or `403` | Verify account binding and provider credentials |\n| `connector.cal_diy.state_conflict` | Provider returned `409` or `412` | Refresh installed and default state before review |\n| `connector.cal_diy.rate_limited` | Provider returned `429` | Retry reads within policy; reconcile mutations |\n| `connector.cal_diy.remote_temporary` | Provider returned a server error | Retry reads within policy; reconcile mutations |\n| `connector.cal_diy.transport` | Provider exchange failed | Retry reads only; treat dispatched mutations as uncertain |\n| `connector.cal_diy.invalid_provider_output` | Successful response lacked valid `status` | Preserve evidence and reconcile a mutation |\n\nPermanent rejection, invalid credentials, oversized responses, and durable\nsettlement failures use the common Cal.diy error family. Gateway and lifecycle\nerrors are described in the [global error reference](../../../reference/errors.md).\n\n## Verify conferencing state\n\nFor a read, retain the capability, actor, tenant, external account, response\nstatus, and provider request id when present.\n\nFor a mutation, also retain the exact app, approval evidence, and original\nidempotency key. Wait for a completed durable result, then list apps and read\nthe current default. For uncertain dispatch, reconcile the original operation\nbefore another mutation.\n\nThese checks validate application handling. They do not prove OAuth completion,\nprovider credential health, successful meeting creation, invitation delivery,\nlive-provider qualification, or production readiness.\n\n## Related documentation\n\n- [Cal.diy capability index](README.md)\n- [Booking attendees and artifacts](booking-attendees-and-artifacts.md)\n- [Authentication and tenant routing](../getting-started/authentication-and-tenant-routing.md)\n- [Approvals and policy](../../../concepts/approvals-and-policy.md)\n- [Error reference](../../../reference/errors.md)\n",
    "text": "Cal.diy conferencing\n\nUse these capabilities to list installed conferencing applications, read or\nchange the default, and connect or disconnect an app supported by the published\nbusiness-operation surface. This page owns all five conferencing operations.\n\nAll five use provider API version 2024-08-13. Browser OAuth authorization and\ncallback routes remain in the operator control plane and are not agent-callable\ncapabilities.\n\nChoose an operation\n\n| Capability | Provider request | Risk | Approval |\n\n| cap:caldiy:conferencing.list | GET /v2/conferencing | Low | No |\n| cap:caldiy:conferencing.default.get | GET /v2/conferencing/default | Low | No |\n| cap:caldiy:conferencing.default.set | POST /v2/conferencing/{app}/default | Medium | Required |\n| cap:caldiy:conferencing.connect | POST /v2/conferencing/{app}/connect | Medium | Required |\n| cap:caldiy:conferencing.disconnect | DELETE /v2/conferencing/{app}/disconnect | High | Required |\n\nThe allowed app values differ by mutation:\n\n| App | Set default | Connect | Disconnect |\n\n| google-meet | Yes | Yes | Yes |\n| zoom | Yes | No | Yes |\n| msteams | Yes | No | Yes |\n| daily-video | Yes | No | No |\n\nDo not infer one operation's app set from another operation.\n\nDiscover installed apps and the default\n\nBoth reads accept an empty object:\n\n{}\n\nUse conferencing.list to inspect installed conferencing applications. Use\nconferencing.default.get to read the current default. Both are low-risk,\napproval-free reads at the capability level.\n\nAn installed entry or default selection does not prove that provider\ncredentials are current, that OAuth has completed, or that meeting creation is\nhealthy. The connector does not publish the provider response field shape.\n\nChange the default app\n\nSet the default by passing exactly one supported app:\n\n{\n  \"app\": \"zoom\"\n}\n\nThe exact enum is google-meet, zoom, msteams, or daily-video.\nAdditional input fields are rejected. app becomes the provider path segment,\nso the request has no JSON body after routing fields are removed.\n\nThe connector lists installed apps before dispatch. A successful preflight\ndoes not prove that the selected app appears in the list or can become the\ndefault; Cal.diy still validates the mutation.\n\nDefault set is medium risk. It requires approval and an idempotency key, does\nnot require a plan, and declares no rollback capability.\n\nConnect the supported non-OAuth app\n\nThe published connect operation accepts only:\n\n{\n  \"app\": \"google-meet\"\n}\n\nThe connector describes this as connecting a supported non-OAuth conferencing\napplication. zoom, msteams, and daily-video fail the connect input schema\neven though some appear in the default or disconnect enums.\n\nOAuth authorization URL and callback routes are intentionally excluded because\nthey establish browser sessions or credentials. Complete those flows through\nthe deployment's operator-owned process, not an AIP action.\n\nConnect first lists installed apps. It is medium risk and names\nconferencing.disconnect as best-effort compensation. Compensation requires a\nseparate approval and is not invoked automatically.\n\nDisconnect an app\n\nDisconnect accepts google-meet, zoom, or msteams:\n\n{\n  \"app\": \"msteams\"\n}\n\nThe connector lists installed apps before sending DELETE to the app-specific\npath. daily-video is not accepted by this capability.\n\nDisconnect is high risk and destructive. It has no rollback contract. A later\nconnect or OAuth flow is a new provider action and does not restore prior\ncredential state or meeting history.\n\nShared read contract\n\nThe two reads are synchronous, retry-safe, and eligible for connector retry.\nTheir idempotency key is optional, action-scoped, and collision-checked against\nthe input hash. No capability-level human approval is required.\n\nShared mutation contract\n\nAll three mutations require:\n\n| Contract field | Value |\n\n| Human approval | Required |\n| Approval selector | Tenant policy |\n| Approval validity window | 900,000 ms |\n| Approval evidence | Reason, input snapshot, policy decision |\n| Idempotency | Required; external-account scope |\n| Collision behavior | Revalidate input hash |\n| Connector retry | Not supported |\n| Retry safety | Unsafe |\n| Execution | Synchronous only |\n| Transaction modes | dryrun, plan, commit, reconcile |\n| Plan before commit | Not required |\n| Dry-run fidelity | Policy and schema only |\n\nDefault set and connect are medium risk. Disconnect is high risk, destructive,\nand uses the destructive approval reason. None of the operations carries the\nsendmessage side-effect marker.\n\nOnly connect declares best-effort compensation. Default set and disconnect\ndeclare rollback as not supported.\n\nData and result contract\n\nThe family is classified as confidential. Its contract does not declare PII\nand does not require redaction. Deployment policy may still impose stricter\nhandling based on provider output or tenant context.\n\nThe connector returns the validated provider JSON body. A non-empty string\nstatus is required. data, pagination, and additional provider fields are\noptional and provider-owned.\n\nThe common response scrubber recursively replaces secret-, key-, and\ntoken-named values with [REDACTED] even though redaction is not required by\nthis family's data contract. Do not treat that targeted scrubber as a general\nconfidential-data filter.\n\nFailures and recovery\n\n| Failure | Relevant cause | Safe response |\n\n| connector.caldiy.invalidaction | Unsupported app or unknown input field | Choose an app from the exact operation enum |\n| connector.caldiy.policy | Mutation omitted its required idempotency key | Preserve approved input and add the missing key |\n| connector.caldiy.idempotencycollision | One key owns different mutation input | Stop and inspect the original action |\n| connector.caldiy.inflight | A matching conferencing mutation is executing | Read durable state and wait |\n| connector.caldiy.outcomeunknown | Prior provider dispatch cannot be proved | Reconcile; do not create a replacement key |\n| connector.caldiy.authentication | Provider returned 401 or 403 | Verify account binding and provider credentials |\n| connector.caldiy.stateconflict | Provider returned 409 or 412 | Refresh installed and default state before review |\n| connector.caldiy.ratelimited | Provider returned 429 | Retry reads within policy; reconcile mutations |\n| connector.caldiy.remotetemporary | Provider returned a server error | Retry reads within policy; reconcile mutations |\n| connector.caldiy.transport | Provider exchange failed | Retry reads only; treat dispatched mutations as uncertain |\n| connector.caldiy.invalidprovideroutput | Successful response lacked valid status | Preserve evidence and reconcile a mutation |\n\nPermanent rejection, invalid credentials, oversized responses, and durable\nsettlement failures use the common Cal.diy error family. Gateway and lifecycle\nerrors are described in the global error reference (../../../reference/errors.md).\n\nVerify conferencing state\n\nFor a read, retain the capability, actor, tenant, external account, response\nstatus, and provider request id when present.\n\nFor a mutation, also retain the exact app, approval evidence, and original\nidempotency key. Wait for a completed durable result, then list apps and read\nthe current default. For uncertain dispatch, reconcile the original operation\nbefore another mutation.\n\nThese checks validate application handling. They do not prove OAuth completion,\nprovider credential health, successful meeting creation, invitation delivery,\nlive-provider qualification, or production readiness.\n\nRelated documentation\n• Cal.diy capability index (README.md)\n• Booking attendees and artifacts (booking-attendees-and-artifacts.md)\n• Authentication and tenant routing (../getting-started/authentication-and-tenant-routing.md)\n• Approvals and policy (../../../concepts/approvals-and-policy.md)\n• Error reference (../../../reference/errors.md)\n"
  },
  "integrity": {
    "algorithm": "sha256",
    "sourceDigest": "7d28aa5f8ea7a31ab85ea32afd07472542ae3bde991fc23ecd71fecb89d00415"
  }
}
