# Call Estrutura de dados do contrato OpenAPI. ## Campos | Campo | Tipo | Presença | Descrição | |---|---|---|---| | `callId` | `string` | obrigatório | — | | `direction` | `string` | obrigatório | Valores: `"inbound"`, `"outbound"` | | `number` | `string` | obrigatório | Identidade telefônica canônica, quando conhecida. | | `jid` | `string` | opcional | — | | `status` | `string` | obrigatório | Valores: `"ringing"`, `"connecting"`, `"active"`, `"ended"` | | `startedAt` | `string` | obrigatório | Formato: `date-time` | | `answeredAt` | `string` | opcional | Momento do aceite remoto ou do atendimento local; não depende do primeiro áudio. Formato: `date-time` | | `endedAt` | `string` | opcional | Formato: `date-time` | | `endReason` | `string` | opcional | hangup, rejected, ring_timeout, closed ou motivo do motor. | | `endedBy` | `string` | opcional | Valores: `"local"`, `"remote"` | | `answered` | `boolean` | opcional | Verdadeiro a partir do aceite, mesmo antes de o áudio iniciar. | | `mediaStartedAt` | `string` | opcional | Momento em que o motor confirmou mídia recebida. Formato: `date-time` | | `durationSeconds` | `number` | opcional | Tempo entre atendimento e encerramento; zero para chamadas sem atendimento ou ainda em curso. Mínimo: `0` | | `recording` | `object` | opcional | Modelo: [CallRecording](https://wpp.atendro.cloud/docs/modelos/call-recording.md). | ## Definição OpenAPI ```json { "type": "object", "properties": { "callId": { "type": "string" }, "direction": { "type": "string", "enum": [ "inbound", "outbound" ] }, "number": { "type": "string", "description": "Identidade telefônica canônica, quando conhecida." }, "jid": { "type": "string" }, "status": { "type": "string", "enum": [ "ringing", "connecting", "active", "ended" ] }, "startedAt": { "type": "string", "format": "date-time" }, "answeredAt": { "type": "string", "format": "date-time", "description": "Momento do aceite remoto ou do atendimento local; não depende do primeiro áudio." }, "endedAt": { "type": "string", "format": "date-time" }, "endReason": { "type": "string", "description": "hangup, rejected, ring_timeout, closed ou motivo do motor." }, "endedBy": { "type": "string", "enum": [ "local", "remote" ] }, "answered": { "type": "boolean", "description": "Verdadeiro a partir do aceite, mesmo antes de o áudio iniciar." }, "mediaStartedAt": { "type": "string", "format": "date-time", "description": "Momento em que o motor confirmou mídia recebida." }, "durationSeconds": { "type": "number", "minimum": 0, "description": "Tempo entre atendimento e encerramento; zero para chamadas sem atendimento ou ainda em curso." }, "recording": { "$ref": "#/components/schemas/CallRecording" } }, "required": [ "callId", "direction", "number", "status", "startedAt" ] } ```