# Capabilities Estrutura de dados do contrato OpenAPI. ## Campos | Campo | Tipo | Presença | Descrição | |---|---|---|---| | `service` | `string` | obrigatório | Valores: `"AtendroZAP"` | | `status` | `string` | obrigatório | Valores: `"laboratory"` | | `worker` | `string` | opcional | — | | `engine` | `object` | opcional | — | | `capabilities` | `object` | obrigatório | — | | `capabilities.calls` | `boolean` | opcional | Habilitado neste worker por ATENDROZAP_CALLS_ENABLED; exige instância calls. | | `capabilities.ptt_transcoding` | `boolean` | opcional | Valores: `false` | | `capabilities.call_history` | `boolean` | opcional | — | | `capabilities.call_recording` | `boolean` | opcional | Gravação automática das chamadas atendidas habilitada neste worker. | | `capabilities.calls_per_instance_limit` | `boolean` | opcional | Permite configurar callsMaxConcurrent por instância, sem reiniciar a sessão. | | `capabilities.calls_video` | `boolean` | opcional | Chamadas de vídeo, upgrade no meio da ligação e ponte GET /call/{id}/video habilitados neste worker por ATENDROZAP_CALLS_VIDEO_ENABLED (exige calls). Recurso experimental até a homologação em laboratório. | | `capabilities.calls_settings_webhook` | `boolean` | opcional | Anuncia call_settings com limite/versionamento em outbox atômica e callsConfigVersion em objetos instance. Exige inscrição explícita em call_settings; connection pode trazer o snapshot opcional em instance. | | `capabilities.calls_video_recording` | `boolean` | opcional | Captura de vídeo e geração de MP4 lado a lado habilitadas neste worker por ATENDROZAP_CALLS_VIDEO_RECORDING_ENABLED. Opt-in: requer calls_video, call_recording, FFmpeg e ffprobe. Não implica homologação em celulares reais. | | `capabilities.calls_incoming_policy` | `boolean` | opcional | Permite configurar incomingCallMode, comparar expectedCallsConfigVersion e receber decisões de recusa automática com metadados por chamada. Não garante envio de mensagem pelo consumidor nem homologação de áudio recebido. | | `interactive` | `object` | opcional | — | | `webhookEvents` | `object` | opcional | — | | `webhookEvents.delivered` | `array` | opcional | — | | `webhookEvents.ignored` | `array` | opcional | — | | `instance_kinds` | `array` | opcional | — | | `calls_max_concurrent` | `integer` | opcional | Padrão do servidor usado na criação e em instâncias antigas sem limite próprio. Consulte instance.callsMaxConcurrent para o limite efetivo. Mínimo: `0` | | `calls_recording_retention_days` | `integer` | opcional | Retenção das gravações de áudio em dias; 0 desativa exclusão automática do áudio. Vídeo possui prazo independente. Histórico preservado. Mínimo: `0` | | `calls_video_recording_retention_days` | `integer` | opcional | Retenção das gravações MP4 em dias, contados do encerramento da chamada. Padrão 7, independente do áudio. Histórico preservado. Mínimo: `1`. Máximo: `3650` | | `calls_max_concurrent_range` | `object` | opcional | — | | `calls_max_concurrent_range.min` | `integer` | obrigatório | Valor fixo: `1` | | `calls_max_concurrent_range.max` | `integer` | obrigatório | Valor fixo: `8` | ## Definição OpenAPI ```json { "type": "object", "properties": { "service": { "type": "string", "enum": [ "AtendroZAP" ] }, "status": { "type": "string", "enum": [ "laboratory" ] }, "worker": { "type": "string" }, "engine": { "type": "object" }, "capabilities": { "type": "object", "properties": { "calls": { "type": "boolean", "description": "Habilitado neste worker por ATENDROZAP_CALLS_ENABLED; exige instância calls." }, "ptt_transcoding": { "type": "boolean", "enum": [ false ] }, "call_history": { "type": "boolean" }, "call_recording": { "type": "boolean", "description": "Gravação automática das chamadas atendidas habilitada neste worker." }, "calls_per_instance_limit": { "type": "boolean", "description": "Permite configurar callsMaxConcurrent por instância, sem reiniciar a sessão." }, "calls_video": { "type": "boolean", "description": "Chamadas de vídeo, upgrade no meio da ligação e ponte GET /call/{id}/video habilitados neste worker por ATENDROZAP_CALLS_VIDEO_ENABLED (exige calls). Recurso experimental até a homologação em laboratório." }, "calls_settings_webhook": { "type": "boolean", "description": "Anuncia call_settings com limite/versionamento em outbox atômica e callsConfigVersion em objetos instance. Exige inscrição explícita em call_settings; connection pode trazer o snapshot opcional em instance." }, "calls_video_recording": { "type": "boolean", "description": "Captura de vídeo e geração de MP4 lado a lado habilitadas neste worker por ATENDROZAP_CALLS_VIDEO_RECORDING_ENABLED. Opt-in: requer calls_video, call_recording, FFmpeg e ffprobe. Não implica homologação em celulares reais." }, "calls_incoming_policy": { "type": "boolean", "description": "Permite configurar incomingCallMode, comparar expectedCallsConfigVersion e receber decisões de recusa automática com metadados por chamada. Não garante envio de mensagem pelo consumidor nem homologação de áudio recebido." } }, "additionalProperties": { "type": "boolean" } }, "interactive": { "type": "object", "additionalProperties": { "type": "string" } }, "webhookEvents": { "type": "object", "properties": { "delivered": { "type": "array", "items": { "type": "string" } }, "ignored": { "type": "array", "items": { "type": "string" } } } }, "instance_kinds": { "type": "array", "items": { "type": "string", "enum": [ "whatsapp", "calls" ] } }, "calls_max_concurrent": { "type": "integer", "minimum": 0, "description": "Padrão do servidor usado na criação e em instâncias antigas sem limite próprio. Consulte instance.callsMaxConcurrent para o limite efetivo." }, "calls_recording_retention_days": { "type": "integer", "minimum": 0, "description": "Retenção das gravações de áudio em dias; 0 desativa exclusão automática do áudio. Vídeo possui prazo independente. Histórico preservado." }, "calls_video_recording_retention_days": { "type": "integer", "minimum": 1, "maximum": 3650, "description": "Retenção das gravações MP4 em dias, contados do encerramento da chamada. Padrão 7, independente do áudio. Histórico preservado." }, "calls_max_concurrent_range": { "type": "object", "properties": { "min": { "type": "integer", "const": 1 }, "max": { "type": "integer", "const": 8 } }, "required": [ "min", "max" ] } }, "required": [ "service", "status", "capabilities" ] } ```