Monitorar trabalhos

Use GET /api/v1/jobs para healthchecks e consultas operacionais seguras, com escopo por credencial, filtros e paginação.

Nesta página
  1. Objetivo
  2. Autenticação e escopo
  3. Filtros
  4. Resposta
  5. Exemplos
  6. Erros

Liste trabalhos sem expor resultados

GET/api/v1/jobs

A rota retorna resumos em ordem decrescente de createdAt. Ela foi projetada para responder perguntas operacionais, como “houve algum trabalho com falha nas últimas 24 horas?”, sem transferir o resultado completo ou arquivos do trabalho.

GET /v1/jobs é um alias, mas use /api/v1/jobs nas novas integrações.

Autenticação e escopo

CredencialEscopoFiltros de clienteRestrição adicional
dsk_live_...Somente o próprio clienteclientId omitido ou igual ao tenantA conta do cliente deve estar ativa
dsk_admin_...Todos os clientesclientId ou clientName opcionaisAdministrador ativo e IP exato permitido

A chave administrativa pertence a uma conta platform_admin, permite um único IPv4 ou IPv6 sem CIDR e deixa de funcionar imediatamente quando revogada ou regenerada. O segredo completo é exibido somente na emissão.

O administrador cria e gerencia sua credencial em /admin/api. O nome da chave aceita de 2 a 120 caracteres, e cada conta administrativa pode manter uma chave ativa. A regeneração preserva o nome e o IP permitido, revoga o segredo anterior e exibe o novo segredo uma única vez. Para trocar o IP, revogue a chave e crie outra.

Combine filtros

Todos os filtros informados são combinados. Sem filtros de data, a consulta considera todo o histórico disponível.

ParâmetroValoresRegra
statusANY, SUCCESS ou estado de trabalhoPadrão ANY; não diferencia maiúsculas. SUCCESS equivale a completed.
clientIdIdentificador exatoAdmin pode omitir para buscar todos. Uma chave de cliente fica sempre limitada ao próprio ID.
clientNameNome exato e únicoSomente admin; ignora maiúsculas e minúsculas. Pode substituir clientId.
distCELESC ou COPELNão diferencia maiúsculas e minúsculas.
createdFromData e hora ISO 8601Limite inferior inclusivo com offset de fuso horário.
createdToData e hora ISO 8601Limite superior inclusivo com offset de fuso horário.
createdWithin30m, 2h, 7d, 4wJanela até o momento da consulta; não combine com limites absolutos.
limit1–200Padrão 50.
offset0 ou maiorPadrão 0.

Os estados aceitos são queued, running, cancelling, completed, partial_success, failed, cancelled e expired. A duração relativa aceita um valor de 1 a 9999 seguido por m, h, d ou w.

Não há filtros por tipo de trabalho, jobId, connectionId, UC, código de erro ou updatedAt.

Interprete a resposta

count é o total exato antes da paginação. jobs contém a página atual e pagination.hasMore informa se há outra. Cada resumo pode trazer alvo, progresso, erro e datas do ciclo de vida, além de tenantId e updatedAt.

A resposta envia Cache-Control: no-store. Os campos result e files são omitidos mesmo quando o trabalho já terminou.

Nenhuma falha encontradajson200 OK
{
  "schemaVersion": "3.0",
  "filters": {
    "status": "failed",
    "clientId": "client_123",
    "clientName": "Cliente Exemplo",
    "dist": "CELESC",
    "createdFrom": "2026-09-02T12:00:00+00:00",
    "createdTo": "2026-09-03T12:00:00+00:00",
    "createdWithin": "24h"
  },
  "count": 0,
  "jobs": [],
  "pagination": {
    "limit": 1,
    "offset": 0,
    "hasMore": false
  }
}
Uma falha encontradajson200 OK
{
  "schemaVersion": "3.0",
  "filters": {
    "status": "failed",
    "clientId": "client_123",
    "clientName": null,
    "dist": "CELESC",
    "createdFrom": "2026-09-02T12:00:00+00:00",
    "createdTo": "2026-09-03T12:00:00+00:00",
    "createdWithin": "24h"
  },
  "count": 1,
  "jobs": [
    {
      "schemaVersion": "3.0",
      "jobId": "job_01JABC",
      "type": "invoice_sync_period",
      "status": "failed",
      "dist": "CELESC",
      "connectionId": "conn_123",
      "target": {
        "uc": "154026601110",
        "billingPeriod": "2026-08"
      },
      "progress": { "total": 1, "completed": 0, "failed": 1 },
      "error": {
        "code": "distributor_unavailable",
        "message": "The distributor is temporarily unavailable.",
        "retryable": true,
        "details": {}
      },
      "createdAt": "2026-09-03T10:00:00+00:00",
      "startedAt": "2026-09-03T10:00:03+00:00",
      "completedAt": "2026-09-03T10:00:09+00:00",
      "tenantId": "client_123",
      "updatedAt": "2026-09-03T10:00:09+00:00"
    }
  ],
  "pagination": { "limit": 1, "offset": 0, "hasMore": false }
}

Exemplos de monitoramento

Falhas CELESC do próprio cliente nas últimas 24 horas

Consulta com chave de clientebash
curl \
  -H "X-API-Key: <CHAVE_DO_CLIENTE>" \
  "<URL_BASE>/jobs?status=FAILED&dist=CELESC&createdWithin=24h&limit=1"

Falhas de um cliente selecionado pelo nome

Consulta com chave administrativabash
curl \
  -H "X-API-Key: <CHAVE_ADMINISTRATIVA>" \
  "<URL_BASE>/jobs?status=FAILED&clientName=Cliente%20Exemplo&createdWithin=24h&limit=1"

Um administrador pode usar clientId=client_123 ou omitir os dois filtros para consultar todos os clientes. Um nome ou ID inexistente retorna count: 0. Se clientId e clientName forem enviados juntos, precisam identificar o mesmo cliente.

Gatus

Healthcheck: nenhuma falhayaml
endpoints:
  - name: Jobs DistriSync sem falhas
    group: DistriSync
    url: "https://api.example.com/api/v1/jobs?status=FAILED&dist=CELESC&createdWithin=24h&limit=1"
    method: GET
    interval: 5m
    headers:
      X-API-Key: "${DISTRISYNC_MONITORING_KEY}"
    conditions:
      - "[STATUS] == 200"
      - "[BODY].count == 0"

Guarde a chave em uma variável de ambiente ou gerenciador de segredos. Para monitoramento global, substitua pela chave administrativa e cadastre o IP público de saída do Gatus.

Erros específicos da listagem

HTTPerror.codeSignificado
400invalid_job_statusO status não é aceito.
400invalid_client_id / invalid_client_nameO filtro de cliente está vazio.
400client_filter_mismatchclientId e clientName não identificam o mesmo cliente.
400invalid_distributordist não é CELESC nem COPEL.
400conflicting_date_filterscreatedWithin foi combinado com um limite absoluto.
400invalid_created_withinA janela relativa não usa o formato aceito.
400timezone_required / invalid_date_rangeA faixa absoluta não tem offset ou está invertida.
401invalid_api_keyA chave está ausente, inválida ou revogada.
403client_scope_forbiddenA chave de cliente tentou ampliar seu escopo.
403api_key_ip_not_allowedA chave administrativa veio de outro IP.
403client_account_inactiveA conta proprietária da chave de cliente está inativa.
409ambiguous_client_nameHá clientes legados com o mesmo nome; use clientId.
422invalid_requestUm tipo, tamanho, data ou limite falhou na validação.
503authentication_service_unavailable / client_lookup_unavailableA autenticação ou busca de cliente está indisponível.

Um nome de cliente desconhecido retorna uma lista vazia. Se dados legados contiverem mais de um cliente com o mesmo nome, a API retorna ambiguous_client_name; repita usando clientId.

Digite para buscar em guias, referências, schemas e erros.