# Consultar saúde operacional do worker `GET /v1/system/status` Leitura administrativa de métricas agregadas, sem instâncias individuais, números/JIDs, mensagens, URLs de webhook, tokens, caminhos ou comandos. HTTP 200 informa que o observador respondeu; consultar status/available de cada bloco. As consultas PostgreSQL têm orçamento de 3 s. Process contém métricas Go/API; host vem de arquivo local produzido pelo coletor no host e inclui idade/validade próprias. Arquivo ausente, inválido ou antigo permanece unavailable/stale. Não aceita destino, URL ou caminho pela requisição. Usar a API central com token de monitoramento para acesso de suporte sem fornecer admintoken de cada servidor. ## Autenticação Header obrigatório: `admintoken`. Use o token administrativo do servidor. Base URL: a API do servidor selecionado, como `https://1.atendro.cloud`. O domínio `wpp.atendro.cloud` hospeda a documentação e o console. ## Headers adicionais | Campo | Tipo | Presença | Descrição | |---|---|---|---| | `X-Request-Id` | `string` | opcional | ASCII visível sem espaços, 1–128 caracteres. Inválido/ausente é substituído por UUID. Ecoado na resposta. Comprimento máximo: `128` | ## Corpo da requisição Não há corpo de requisição definido para esta operação. ## Resposta 200 Snapshot agregado; dependências indisponíveis ficam explícitas no corpo. | Campo | Tipo | Presença | Descrição | |---|---|---|---| | `database` | `object` | obrigatório | Modelo: [SystemStatusDatabase](https://wpp.atendro.cloud/docs/modelos/system-status-database.md). | | `host` | `object` | obrigatório | Modelo: [HostHealthResult](https://wpp.atendro.cloud/docs/modelos/host-health-result.md). | | `process` | `object` | obrigatório | Processo Go/API: heap e runtimeSys não são RAM usada da VPS; gomaxprocs não mede núcleos físicos nem CPU do host. Modelo: [SystemStatusProcess](https://wpp.atendro.cloud/docs/modelos/system-status-process.md). | | `sampledAt` | `string` | obrigatório | Instante UTC da amostragem do worker. O host tem sampledAt e idade próprios. Formato: `date-time` | | `schemaVersion` | `integer` | obrigatório | Valor fixo: `1`. Mínimo: `0` | | `status` | `string` | obrigatório | HTTP 200 significa que o observador respondeu. Verificar available/status em cada bloco; valores indisponíveis não representam consumo zero. Valores: `"ok"`, `"degraded"` | | `version` | `string` | opcional | — | | `workerId` | `string` | obrigatório | Padrão de formato: `^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$` | | `workload` | `object` | obrigatório | Modelo: [SystemStatusWorkload](https://wpp.atendro.cloud/docs/modelos/system-status-workload.md). | Exemplo ilustrativo, com valores sintéticos: ```json { "database": { "archiver": { "archivedCount": 0, "available": false, "failedCount": 0, "status": "ok" }, "available": false }, "host": { "ageSeconds": 0, "errors": [], "snapshot": { "cpu": { "ioWaitPercent": 0, "logicalCPUs": 0, "stealPercent": 0, "usagePercent": 0 }, "diskIO": { "busyPercent": 0, "inFlight": 0, "readBytesPerSecond": 0, "readsPerSecond": 0, "scope": "root_device", "writeBytesPerSecond": 0, "writesPerSecond": 0 }, "errors": [], "intervalSeconds": 0, "load": { "fifteen": 0, "fifteenPerCPU": 0, "five": 0, "fivePerCPU": 0, "one": 0, "onePerCPU": 0 }, "memory": { "availableBytes": 0, "totalBytes": 0, "usedBytes": 0, "usedPercent": 0 }, "network": { "interfaces": 0, "receivedBytes": 0, "receivedBytesPerSecond": 0, "scope": "all_non_loopback", "transmittedBytes": 0, "transmittedBytesPerSecond": 0 }, "rootFilesystem": { "availableBytes": 0, "availablePercent": 0, "freeBytes": 0, "inodesFree": 0, "inodesTotal": 0, "inodesUsedPercent": 0, "reservedBytes": 0, "totalBytes": 0, "usedBytes": 0, "usedPercent": 0 }, "sampledAt": "2026-09-17T00:00:00Z", "schemaVersion": 1, "source": "host", "swap": { "freeBytes": 0, "totalBytes": 0, "usedBytes": 0, "usedPercent": 0 }, "uptimeSeconds": 0, "validForSeconds": 1 }, "status": "ok" }, "process": { "goVersion": "valor-de-exemplo", "gomaxprocs": 0, "goroutines": 0, "heapAllocBytes": 0, "heapInuseBytes": 0, "runtimeSysBytes": 0, "startedAt": "2026-09-17T00:00:00Z", "uptimeSeconds": 0 }, "sampledAt": "2026-09-17T00:00:00Z", "schemaVersion": 1, "status": "ok", "workerId": "valor-de-exemplo", "workload": { "available": false } } ``` ## Resposta 401 unauthorized: header ausente, inválido ou duplicado. Bearer/query/instancekey não substituem admintoken/token. | Campo | Tipo | Presença | Descrição | |---|---|---|---| | `error` | `string` | obrigatório | — | | `message` | `string` | opcional | — | | `messageid` | `string` | opcional | ID para reconciliação quando o resultado é ambíguo. | | `messageId` | `string` | opcional | — | | `id` | `string` | opcional | — | | `provider_code` | `integer` | opcional | — | | `error_key` | `string` | opcional | — | | `error_source` | `string` | opcional | — | | `details` | `object` | opcional | — | | `instance` | `object` | opcional | Modelo: [Instance](https://wpp.atendro.cloud/docs/modelos/instance.md). | Exemplo ilustrativo, com valores sintéticos: ```json { "error": "unauthorized" } ``` ## Resposta default Falha; usar HTTP status e error. 404 rota inexistente; 405 método inválido com Allow. Ver catálogo no guia de integração. | Campo | Tipo | Presença | Descrição | |---|---|---|---| | `error` | `string` | obrigatório | — | | `message` | `string` | opcional | — | | `messageid` | `string` | opcional | ID para reconciliação quando o resultado é ambíguo. | | `messageId` | `string` | opcional | — | | `id` | `string` | opcional | — | | `provider_code` | `integer` | opcional | — | | `error_key` | `string` | opcional | — | | `error_source` | `string` | opcional | — | | `details` | `object` | opcional | — | | `instance` | `object` | opcional | Modelo: [Instance](https://wpp.atendro.cloud/docs/modelos/instance.md). | ## Exemplos de requisição Defina as variáveis no ambiente privado e substitua os dados sintéticos antes de usar. Os exemplos não executam operações nesta página. ### cURL ```sh curl --request GET "$ATENDROZAP_URL/v1/system/status" \ --header "admintoken: $ATENDROZAP_ADMIN_TOKEN" ``` ### JavaScript ```javascript const baseUrl = process.env.ATENDROZAP_URL; let path = "/v1/system/status"; const url = new URL(path, baseUrl); const response = await fetch(url, { method: "GET", headers: { "admintoken": process.env.ATENDROZAP_ADMIN_TOKEN }, }); if (!response.ok) { throw new Error(`AtendroZAP: HTTP ${response.status}`); } const result = await response.json(); ``` ## Relacionados - [Diagnóstico](https://wpp.atendro.cloud/docs/api/diagnostico.md) - [Autenticação](https://wpp.atendro.cloud/docs/guias/autenticacao.md) - [Erros e idempotência](https://wpp.atendro.cloud/docs/guias/erros-e-idempotencia.md)