Skip to main content
Algumas consultas do Croma demoram mais para responder, de alguns segundos até alguns minutos. Elas são executadas como trabalhos assíncronos: a mesma solicitação pode ser resolvida de três maneiras diferentes, e você escolhe qual se ajusta à sua aplicação.
Você não precisa fazer nada especial. Por padrão esses endpoints se comportam como qualquer outro: você faz POST e recebe { "data": … } de volta. As opções a seguir são opt-in, para quando você preferir não manter uma conexão aberta.

Quais endpoints são assíncronos?

Estas consultas são executadas como trabalhos assíncronos: Colômbia Peru México
  • SIEM, estabelecimentos comerciais
Todos os demais endpoints respondem de forma síncrona, sem nenhum trabalho envolvido.

As três maneiras de obter um resultado

As três se apoiam no mesmo trabalho, então escolha conforme cada solicitação.
Se o Croma já tem um resultado recente para a mesma consulta, qualquer modo retorna 200 { data } imediatamente (cabeçalho X-Cache: HIT) e nenhum trabalho é criado; no modo callback nenhum POST chega. Sempre trate um 200 direto.

Modo 1: Esperar de forma síncrona (padrão)

Simplesmente chame o endpoint. A solicitação fica aberta até o trabalho terminar (até 55 segundos) e retorna o resultado na forma habitual { data }, idêntica a um endpoint síncrono.
Controle quanto esperar com o cabeçalho padrão Prefer: wait=N (segundos, limitado a 55):
  • 200: terminou. O corpo é { "data": … }, igual à forma síncrona.
  • 202: não terminou dentro do tempo de espera. O corpo é um envelope de trabalho; siga seu status_url para fazer polling. O cabeçalho X-Job-Id carrega o id do trabalho.
Sempre trate tanto 200 quanto 202. Um 202 não é um erro; significa apenas “ainda em andamento, volte para buscá-lo”.

Modo 2: Polling

Envie Prefer: wait=0 para obter um 202 imediatamente, depois faça GET no status_url do trabalho até que ele alcance um estado terminal.
GET /jobs/:id sempre retorna 200 com o envelope. Enquanto o trabalho ainda está em execução, inclui um cabeçalho Retry-After (segundos); use-o para regular seu polling. Os trabalhos têm escopo da sua organização; um trabalho que pertence a outra organização aparece como 404.

Modo 3: Callback (webhook)

Inclua um callback_url no corpo da solicitação. Você recebe um 202 imediatamente, e o Croma faz POST com o resultado para a sua URL assim que o trabalho termina, sem necessidade de polling.
callback_url deve ser uma URL HTTPS absoluta em um host público (localhost e as faixas privadas são rejeitados). Quando o trabalho termina, o Croma envia um POST para ela:
  • Corpo: o mesmo envelope de trabalho do endpoint de polling.
  • x-croma-job-id: o id do trabalho.
  • x-croma-signature: sha256=<hmac>, um HMAC-SHA256 do corpo bruto da solicitação, para que você possa verificar a integridade da carga útil.
A verificação de assinatura usa um segredo compartilhado emitido pelo Croma; entre em contato conosco se quiser habilitá-la para seus callbacks. Responda 2xx com rapidez; respostas diferentes de 2xx provocam novas tentativas.

O envelope de trabalho

A resposta 202, o GET /jobs/:id e o corpo do callback compartilham uma mesma forma:
  • data é preenchido apenas quando status é completed (e coincide com a carga útil data normal do endpoint). Caso contrário é null.
  • error é preenchido apenas quando o trabalho falhou (failed), como { "type", "code", "message" }.

Estados

Referência de cabeçalhos

Erros

Como funcionam as falhas e o objeto error.