# Avisos — referência

O Motor faz `POST` no endereço do webhook da integração da empresa. Todo aviso tem o mesmo corpo e os mesmos cabeçalhos; muda o `evento`.

## O corpo de todo aviso

- `id` (uuid · obrigatório) — Igual ao cabeçalho `X-Motor-Aviso-Id`.
- `evento` (texto · obrigatório)
  - `admissao.processada` — O eSocial aceitou o S-2200.
  - `admissao.recusada` — O eSocial recusou o S-2200.
  - `admissao.descartada` — O escritório descartou o evento antes de enviá-lo.
  - `admissao.aguardando_escritorio` — O envio automático parou e o evento está na fila do escritório.
- `ocorrido_em` (data e hora (ISO 8601) · obrigatório) — Quando a mudança de estado aconteceu no Motor (não quando o aviso foi entregue).
- `ambiente` (texto · obrigatório) — Ambiente do eSocial da empresa.
  - `PRODUCAO` — Produção (com valor legal).
  - `RESTRITA` — Produção Restrita (teste, sem valor legal).
- `admissao` (objeto · obrigatório)
  - `admissao.id` (uuid · obrigatório)
  - `admissao.estado` (texto · obrigatório) — Onde a admissão está.
    - `RECEBIDA` — Colaborador criado; o evento está sendo montado.
    - `AGUARDANDO_ESCRITORIO` — O evento está na fila do escritório, esperando uma pessoa aprovar.
    - `ENVIADA` — Transmitido; aguardando o processamento do eSocial.
    - `PROCESSADA` — Aceito pelo eSocial; há `nr_recibo`.
    - `RECUSADA` — Recusado pelo eSocial; veja `ocorrencias`. Se o escritório corrigir e reenviar, pode voltar a ENVIADA; não a trate como final.
    - `DESCARTADA` — O escritório descartou o evento sem enviá-lo. Pode voltar se ele o restaurar.
  - `admissao.matricula` (texto · obrigatório · até 30 caracteres)
  - `admissao.nr_recibo` (texto ou null · obrigatório · formato `^1\.\d\.\d{19}$`)
  - `admissao.ocorrencias` (lista de objeto · obrigatório)
    - `admissao.ocorrencias.N.codigo` (texto ou null · obrigatório)
    - `admissao.ocorrencias.N.descricao` (texto ou null · obrigatório)
    - `admissao.ocorrencias.N.tipo` (texto ou null · obrigatório) — Tipo da ocorrência no retorno do eSocial (erro ou advertência).
    - `admissao.ocorrencias.N.localizacao` (texto ou null · obrigatório)
  - `admissao.motivo` (texto ou null · obrigatório) — Em `descartada`, o motivo escrito pelo escritório (opcional para ele); em `aguardando_escritorio`, por que o envio automático parou.

## admissao.processada

**O eSocial aceitou o S-2200.**

O recibo está em `admissao.nr_recibo`. Os XML vêm pela consulta.

Cabeçalhos:

- `X-Motor-Aviso-Id` (uuid · obrigatório) — Id do aviso, igual ao `id` do corpo. Use para descartar duplicatas.
- `X-Motor-Evento` (texto · obrigatório) — O que aconteceu, igual ao `evento` do corpo.
  - `admissao.processada` — O eSocial aceitou o S-2200.
  - `admissao.recusada` — O eSocial recusou o S-2200.
  - `admissao.descartada` — O escritório descartou o evento antes de enviá-lo.
  - `admissao.aguardando_escritorio` — O envio automático parou e o evento está na fila do escritório.
- `X-Motor-Assinatura` (texto · obrigatório · formato `^t=\d+,v1=[0-9a-f]{64}$`) — `t=<unix>,v1=<hex>`, onde `v1` é o HMAC-SHA256, em hexadecimal minúsculo, de `t + "." + corpo cru`, com o segredo do webhook (texto UTF-8, exatamente como foi mostrado) como chave. Confira sobre os BYTES recebidos, antes de interpretar o JSON.

Resposta esperada:

- `2XX` — Recebido. Qualquer outra resposta, ou nenhuma em 10 s, gera nova tentativa.

## admissao.recusada

**O eSocial recusou o S-2200.**

As ocorrências do eSocial estão em `admissao.ocorrencias`. O escritório
também é avisado. O envio automático **nunca reenvia**. Se o escritório
corrigir e reenviar, a mesma admissão **pode** voltar a `ENVIADA` e gerar
novo aviso no fim: não trate `recusada` como final.

Cabeçalhos:

- `X-Motor-Aviso-Id` (uuid · obrigatório) — Id do aviso, igual ao `id` do corpo. Use para descartar duplicatas.
- `X-Motor-Evento` (texto · obrigatório) — O que aconteceu, igual ao `evento` do corpo.
  - `admissao.processada` — O eSocial aceitou o S-2200.
  - `admissao.recusada` — O eSocial recusou o S-2200.
  - `admissao.descartada` — O escritório descartou o evento antes de enviá-lo.
  - `admissao.aguardando_escritorio` — O envio automático parou e o evento está na fila do escritório.
- `X-Motor-Assinatura` (texto · obrigatório · formato `^t=\d+,v1=[0-9a-f]{64}$`) — `t=<unix>,v1=<hex>`, onde `v1` é o HMAC-SHA256, em hexadecimal minúsculo, de `t + "." + corpo cru`, com o segredo do webhook (texto UTF-8, exatamente como foi mostrado) como chave. Confira sobre os BYTES recebidos, antes de interpretar o JSON.

Resposta esperada:

- `2XX` — Recebido. Qualquer outra resposta, ou nenhuma em 10 s, gera nova tentativa.

## admissao.descartada

**O escritório descartou o evento antes de enviá-lo.**

O S-2200 não foi e não será enviado por esta admissão, salvo se o
escritório o restaurar. O colaborador continua cadastrado no Motor.

Cabeçalhos:

- `X-Motor-Aviso-Id` (uuid · obrigatório) — Id do aviso, igual ao `id` do corpo. Use para descartar duplicatas.
- `X-Motor-Evento` (texto · obrigatório) — O que aconteceu, igual ao `evento` do corpo.
  - `admissao.processada` — O eSocial aceitou o S-2200.
  - `admissao.recusada` — O eSocial recusou o S-2200.
  - `admissao.descartada` — O escritório descartou o evento antes de enviá-lo.
  - `admissao.aguardando_escritorio` — O envio automático parou e o evento está na fila do escritório.
- `X-Motor-Assinatura` (texto · obrigatório · formato `^t=\d+,v1=[0-9a-f]{64}$`) — `t=<unix>,v1=<hex>`, onde `v1` é o HMAC-SHA256, em hexadecimal minúsculo, de `t + "." + corpo cru`, com o segredo do webhook (texto UTF-8, exatamente como foi mostrado) como chave. Confira sobre os BYTES recebidos, antes de interpretar o JSON.

Resposta esperada:

- `2XX` — Recebido. Qualquer outra resposta, ou nenhuma em 10 s, gera nova tentativa.

## admissao.aguardando_escritorio

**O envio automático parou e o evento está na fila do escritório.**

Só sai quando o envio automático estava ligado na chegada da admissão e
para no meio: o evento não montou; o envio automático foi desligado; a
admissão foi alterada no Motor depois de recebida; o envio teve erro
técnico, o certificado não pôde ser usado ou o eSocial precisa de outro
evento antes deste (o envio automático **nunca** tenta de novo); o
escritório está suspenso; ou uma falha do Motor impediu o envio automático
de terminar. `admissao.motivo` diz qual, em texto para pessoas — não decida
por ele. Também sai
quando a **chave que enviou a admissão é revogada** antes do envio: revogar existe para cortar um canal que pode
estar comprometido, então o que entrou por ele não é transmitido sem que
uma pessoa do escritório aprove. Com o envio automático desligado,
esperar o escritório é o normal e este aviso **não** sai.

O aviso vai ao endereço do webhook da **integração da empresa**, que não
muda com a troca de chave. Sem endereço cadastrado, os avisos não saem (o
andamento fica na consulta); cadastrado depois, só os avisos novos saem.
Redirecionamento não é seguido (`3xx` conta como falha de entrega).

Cabeçalhos:

- `X-Motor-Aviso-Id` (uuid · obrigatório) — Id do aviso, igual ao `id` do corpo. Use para descartar duplicatas.
- `X-Motor-Evento` (texto · obrigatório) — O que aconteceu, igual ao `evento` do corpo.
  - `admissao.processada` — O eSocial aceitou o S-2200.
  - `admissao.recusada` — O eSocial recusou o S-2200.
  - `admissao.descartada` — O escritório descartou o evento antes de enviá-lo.
  - `admissao.aguardando_escritorio` — O envio automático parou e o evento está na fila do escritório.
- `X-Motor-Assinatura` (texto · obrigatório · formato `^t=\d+,v1=[0-9a-f]{64}$`) — `t=<unix>,v1=<hex>`, onde `v1` é o HMAC-SHA256, em hexadecimal minúsculo, de `t + "." + corpo cru`, com o segredo do webhook (texto UTF-8, exatamente como foi mostrado) como chave. Confira sobre os BYTES recebidos, antes de interpretar o JSON.

Resposta esperada:

- `2XX` — Recebido. Qualquer outra resposta, ou nenhuma em 10 s, gera nova tentativa.
