{"openapi":"3.0.3","info":{"title":"LexNode — API de Dados Jurídicos","description":"API para consultar processos, publicações do diário oficial, jurisprudência e monitoramento contínuo, com entrega de novidades por webhook assinado.\n\n## Convenções\n- Sucesso: `{ \"data\": ..., \"meta\": { \"requestId\", \"credits\", ... } }` — `meta.credits` informa o custo efetivamente cobrado em cada resposta.\n- Erro: `{ \"error\": { \"code\", \"message\", \"requestId\", \"class\", \"retryable\" } }`.\n- Recurso de outra conta responde `404`, nunca `403`: fora do seu escopo, o recurso não existe.\n- Headers opcionais em toda rota autenticada: `X-Request-Id` (rastreio e, na busca textual, idempotência por conta) e `X-Office-Id` (atribuição de sub-tenant na medição de uso).\n- Toda operação autenticada declara, na própria descrição, o escopo de chave que exige.\n\n## Tetos da requisição\nEstourar qualquer um deles é `400` de validação — exceto o corpo, que é `413` antes do handler.\n\n| Teto | Valor |\n| --- | --- |\n| Corpo da requisição | 1 MiB |\n| Itens por página (`pageSize`) | 100 · padrão 20 |\n| Itens em `POST /v1/processes/snapshot-batch` | 50 |\n| Hits congelados por busca textual | 500 |\n\n## Créditos por operação\nO plano dá um saldo mensal de créditos; `meta.credits` confirma cada cobrança.\n\n| Operação | Créditos |\n| --- | --- |\n| Descoberta, saúde, tribunais, calendário forense | 0 |\n| `POST /v1/processes/search` | 3 · liquidada em 1 quando servida do acervo |\n| `GET /v1/processes/{numero}` | 1 com dado recente no acervo · 3 consultando a fonte · 1 com a cópia guardada quando a fonte falha |\n| `GET /v1/processes/{numero}/related` | 1 |\n| `GET /v1/processes/{numero}/movements` | 5 |\n| `GET /v1/processes/{numero}/snapshot` | 8 · 1 com a cópia guardada quando a fonte falha |\n| `POST /v1/processes/snapshot-batch` | 8 por item concluído · 1 pelo item servido com a cópia guardada |\n| `POST /v1/processes/lookups` | o preço da leitura direta quando ela cabe na espera · 0 na consulta que segue em segundo plano (202), que cobra ao entregar: 3 pela ficha, 8 pelo retrato · 1 com a cópia guardada em `stale`, e a entrega cobra só o resto |\n| `GET /v1/processes/lookups`, `GET /v1/processes/lookups/{lookupId}`, cancelamento da consulta | 0 |\n| `GET /v1/publications` por processo | 2 |\n| `GET /v1/publications` por OAB | 5 |\n| `GET /v1/publications` por janela de tribunal ou por texto | 8 |\n| `GET /v1/publications/{publicationKey}` | 0 |\n| `POST /v1/publications/text-searches` | 3 (+1 por fatia nova de colheita) |\n| `POST /v1/publications/corpus/harvest-requests` | 1 por fatia nova |\n| `POST /v1/legal-norms/resolve` | 3 · citação não entendida ou fora do alcance do registro: 0 |\n| Vigílias de texto, monitores, assinaturas, jobs de busca, webhooks, uso | 0 |\n\n## Códigos de erro\n\n| code | HTTP | retryable |\n| --- | --- | --- |\n| `INVALID_MONITOR` | 400 | não |\n| `PERSONAL_DOCUMENT_QUERY_NOT_ALLOWED` | 400 | não |\n| `TRIBUNAL_NOT_SUPPORTED` | 400 | não |\n| `VALIDATION_ERROR` | 400 | não |\n| `UNAUTHORIZED` | 401 | não |\n| `QUOTA_EXCEEDED` | 402 | não |\n| `INSUFFICIENT_SCOPE` | 403 | não |\n| `LGPD_FORBIDDEN` | 403 | não |\n| `PLAN_FEATURE_NOT_INCLUDED` | 403 | não |\n| `SANDBOX_UPSTREAM_DISABLED` | 403 | não |\n| `SUB_TENANT_LIMIT_EXCEEDED` | 403 | não |\n| `MOVEMENTS_NOT_AVAILABLE` | 404 | não |\n| `PRECEDENT_NOT_FOUND` | 404 | não |\n| `PROCESS_LOOKUP_NOT_FOUND` | 404 | não |\n| `PROCESS_NOT_FOUND` | 404 | não |\n| `RESOURCE_NOT_FOUND` | 404 | não |\n| `RESOURCE_CONFLICT` | 409 | não |\n| `QUERY_TOO_BROAD` | 422 | não |\n| `RATE_LIMITED` | 429 | sim |\n| `UPSTREAM_RATE_LIMITED` | 429 | sim |\n| `INTERNAL_ERROR` | 500 | não |\n| `UPSTREAM_UNAVAILABLE` | 502 | sim |\n| `DATABASE_TIMEOUT` | 503 | sim |\n| `DATABASE_UNAVAILABLE` | 503 | sim |\n| `SOURCE_MAINTENANCE` | 503 | sim |\n| `SYNC_ABANDONED` | 503 | sim |\n| `UPSTREAM_TIMEOUT` | 504 | sim |\n\n## Escopos da chave de API\nCada chave carrega um conjunto de escopos; operação fora do escopo responde 403 `INSUFFICIENT_SCOPE`. O portal exibe o rótulo; a API usa o código. As permissões de uma chave ativa se ajustam no portal sem trocar o segredo, e a requisição seguinte já obedece ao conjunto novo: escopo retirado não tem carência, e a chamada que depende dele passa a responder 403. Depois de uma rotação, a chave anterior, enquanto dura a carência dela, mantém os escopos que tinha: o ajuste vale para a chave editada. A chave que sustenta uma conexão de agente não se edita — as permissões dela vêm do consentimento, e mudá-las é reconectar.\n\n| Código | Rótulo no portal | Libera |\n| --- | --- | --- |\n| `TRIBUNALS_READ` | Listar tribunais | Catálogo de tribunais e calendário forense |\n| `PROCESSES_SEARCH` | Buscar processos | POST /v1/processes/search e cancelamento de job de busca |\n| `PROCESSES_READ` | Ler processos | Leitura, relacionados, movimentações, snapshot, lote e acompanhamento de jobs de busca |\n| `PUBLICATIONS_READ` | Ler publicações | Publicações, busca textual, vigílias, colheita, precedentes, revisão de cobertura do monitor de parte e resolução de norma federal |\n| `MONITORS_WRITE` | Gerenciar monitores | Criar, pausar, sincronizar e remover monitores |\n| `MONITORS_READ` | Ler monitores | Listar monitores e status de sincronização |\n| `SUBSCRIPTIONS_WRITE` | Gerenciar assinaturas | Declarar e remover interesse legítimo em processos |\n| `SUBSCRIPTIONS_READ` | Ler assinaturas | Listar o interesse legítimo declarado |\n| `WEBHOOKS_WRITE` | Gerenciar webhooks | Endpoints de webhook: CRUD, rotação, teste, replay e retomada |\n| `USAGE_READ` | Ler uso | GET /v1/usage, saúde e entregas de webhook; abre também GET /v1/events e /v1/events/{eventId} como legado — chave nova pede EVENTS_READ |\n| `EVENTS_READ` | Ler eventos | GET /v1/events e /v1/events/{eventId}, e os tipos de evento produzidos sem assinante |\n\n## Chave de teste (sandbox)\nA chave de teste (prefixo `lapi_test_`, criada no portal) relê do acervo o que a conta já buscou com a chave de produção: consulte primeiro com a chave de produção (`lapi_live_`), e o processo passa a responder à chave de teste. Publicação do diário só pelo número do processo e por 7 dias após a consulta de produção — é o prazo pelo qual o acervo a guarda; o processo não tem esse prazo. A chave de teste não serve busca no diário por OAB, texto, parte ou período. Nada consulta as fontes vivas e nada cria trabalho em segundo plano (monitores, vigílias, colheita, busca assíncrona). Nenhuma resposta debita créditos (o extrato registra custo zero, com marca `sandbox`) e a vazão é fixa em 30 requisições por minuto, independente do plano.\n\nO que a chave de teste não serve responde `403 SANDBOX_UPSTREAM_DISABLED`, nunca um resultado fingido, e `error.details.reason` diz a causa:\n\n| Razão | Quando | Saída |\n| --- | --- | --- |\n| `NOT_IN_LAKE` | A forma da consulta é servida pelo acervo (processo pelo número: busca, leitura, movimentos, snapshot, publicações do processo), mas o acervo desta conta ainda não tem este processo | Uma consulta com a chave de produção o traz, e ele passa a responder aqui — a publicação por 7 dias, o processo sem prazo |\n| `NOT_SERVED_BY_LAKE` | A forma da consulta nunca é servida pelo acervo (no diário, busca por OAB, texto, parte ou período) ou a operação cria algo (monitor, vigília, colheita, busca assíncrona) | Só a chave de produção responde a ela |\n\n## Estabilidade\nA superfície `/v1` é versionada e a política é pública:\n\n- **Aditivo entra a qualquer momento** — campo novo na resposta, rota nova, valor novo em enum de saída e header novo não são quebra. Ignore o que não conhecer.\n- **Quebra não entra em `/v1`** — remover ou renomear campo, estreitar tipo, endurecer validação de entrada ou trocar o significado de um valor exige caminho novo.\n- **Desligar exige anúncio com prazo** — no mínimo 180 dias entre o anúncio e o desligamento.\n\nRota depreciada responde com `Deprecation` (RFC 9745), `Sunset` (RFC 8594) e `Link` — para a política e, quando há substituta, para o caminho que assume. A lista legível por máquina está em `GET /`, no campo `stability.deprecations`. O changelog da API é público: https://www.lexnode.com.br/changelog\n\nA chave de produção tem prefixo `lapi_live_`; a chave de teste `lapi_test_` (seção acima) relê o que ela já trouxe — para as primeiras consultas, use os créditos do período de avaliação.\n\n## Webhooks\nAlém das leituras HTTP, a API empurra novidades por webhook assinado (HMAC-SHA256). Guia completo com exemplos de payload e verificação de assinatura: https://www.lexnode.com.br/docs/webhooks","version":"1.31.0"},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"Autenticação HTTP Bearer. No Swagger UI, cole apenas lapi_live_<prefixo>_<segredo> no modal de autorização — o Swagger adiciona o prefixo Bearer automaticamente."}},"schemas":{}},"paths":{"/":{"get":{"operationId":"getApiMetadata","summary":"Descobrir os metadados da API","tags":["Sistema"],"description":"Retorna os metadados básicos e as URLs de documentação deste deploy.","responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1},"version":{"type":"string","minLength":1},"docsUrl":{"type":"string","minLength":1},"openApiUrl":{"type":"string","minLength":1},"healthUrl":{"type":"string","minLength":1},"stability":{"type":"object","properties":{"surface":{"type":"string","minLength":1,"description":"O prefixo estável desta superfície."},"policyUrl":{"type":"string","minLength":1},"changelogUrl":{"type":"string","minLength":1},"minimumSunsetNoticeDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Prazo mínimo entre anunciar uma depreciação e desligar a rota."},"deprecations":{"type":"array","items":{"type":"object","properties":{"method":{"type":"string","minLength":1},"path":{"type":"string","minLength":1},"deprecatedAt":{"type":"string","description":"Data do anúncio, AAAA-MM-DD."},"sunsetAt":{"type":"string","description":"Data a partir da qual a rota pode deixar de responder."},"replacement":{"nullable":true,"type":"string"},"reason":{"type":"string"}},"required":["method","path","deprecatedAt","sunsetAt","replacement","reason"],"additionalProperties":false},"description":"Rotas já anunciadas como depreciadas. Vazio significa que nenhuma foi."}},"required":["surface","policyUrl","changelogUrl","minimumSunsetNoticeDays","deprecations"],"additionalProperties":false}},"required":["name","version","docsUrl","openApiUrl","healthUrl","stability"],"additionalProperties":false}}}}}}},"/health":{"get":{"operationId":"getHealth","summary":"Verificação de saúde","tags":["Sistema"],"description":"Sonda de saúde para monitoramento de disponibilidade: responde 200 enquanto o motor consegue servir e **503 quando o banco não responde**. É a sonda para apontar um monitor externo.","responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"dbOk":{"type":"boolean"}},"required":["ok","dbOk"],"additionalProperties":false}}}},"503":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"dbOk":{"type":"boolean"}},"required":["ok","dbOk"],"additionalProperties":false}}}}}}},"/ready":{"get":{"operationId":"getReady","summary":"Verificação de prontidão","tags":["Sistema"],"description":"Prontidão para receber tráfego: 200 quando o motor serve, 503 enquanto a instância está encerrando (`draining`) ou o banco não responde. Distinta de `/health` só no encerramento gracioso — é a sonda de um balanceador, não de um monitor de disponibilidade.","responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"dbOk":{"type":"boolean"},"draining":{"type":"boolean"}},"required":["ok","dbOk","draining"],"additionalProperties":false}}}},"503":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"dbOk":{"type":"boolean"},"draining":{"type":"boolean"}},"required":["ok","dbOk","draining"],"additionalProperties":false}}}}}}},"/status":{"get":{"operationId":"getPublicStatus","summary":"Estado público do motor","tags":["Sistema"],"description":"Estado operacional de cada capacidade, sem autenticação: é a página que se consulta antes de abrir chamado. Devolve estado, nunca volume — se uma capacidade está de pé, não quantas requisições ela serviu. `DEGRADED` compara a capacidade com o normal recente da própria fonte: uma condição que a fonte já mostra há dias, como lentidão, fica no `detail` e não muda o estado. `NO_SIGNAL` significa que não houve consultas suficientes à fonte para medir; entre uma rodada de consultas e a seguinte, vale a medição mais recente do último dia. `MAINTENANCE` significa que a fonte que alimenta a capacidade declarou manutenção: o detalhe diz desde quando, as consultas voltam quando ela terminar e as vigílias retomam sozinhas, cobrindo o período que ficou para trás. Cada capacidade carrega também quando a fonte foi lida (`lastReadAt`) e, onde existe uma data de conteúdo para o acervo inteiro, até quando ela está lida (`readThrough`) — é com ela que se escreve \"nada encontrado\" sem confundir ausência com atraso. A resposta é cacheada por 30 segundos.","responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["OPERATIONAL","DEGRADED","OUTAGE","NO_SIGNAL","MAINTENANCE"],"description":"O pior estado entre os componentes."},"updatedAt":{"type":"string"},"components":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["OPERATIONAL","DEGRADED","OUTAGE","NO_SIGNAL","MAINTENANCE"]},"detail":{"type":"string"},"lastReadAt":{"nullable":true,"description":"Quando esta capacidade leu a fonte com sucesso pela última vez, ISO. Nulo quando não houve leitura boa na última semana — o que é silêncio, não queda.","type":"string"},"readThrough":{"nullable":true,"description":"Até quando o conteúdo da fonte está lido, no recorte que a capacidade serve (AAAA-MM-DD). É a data com que se escreve 'nada encontrado' sem mentir: o que é posterior a ela ainda não chegou. Nulo na capacidade que não tem data de conteúdo para o acervo inteiro — ali a data vem com o recorte, na própria resposta da consulta.","type":"string"}},"required":["key","name","status","detail","lastReadAt","readThrough"],"additionalProperties":false}}},"required":["status","updatedAt","components"],"additionalProperties":false}}}}}}},"/v1/tribunals":{"get":{"operationId":"listTribunals","summary":"Listar os tribunais suportados","tags":["Catálogo"],"description":"Retorna os tribunais suportados e, para cada um, as fontes que o servem em `sources`: o eixo de processo, o diário e, onde existe, o acervo de jurisprudência. A entrada do ramo `ADMINISTRATIVE` tem só o acervo — consulta de processo, busca e colheita no diário, vigília e calendário forense a recusam com `TRIBUNAL_NOT_SUPPORTED`. É daqui que sai a sigla (`code`) que as demais rotas pedem — o apelido (`alias`) continua aceito —, e é `code` a chave que liga uma publicação ao catálogo. Cada entrada traz também `processIndex`: até quando o índice da fonte foi lido no eixo do processo daquele tribunal — a data com que se escreve \"não encontrei\" sem confundir ausência com atraso.\n\n**Escopo exigido na chave de API:** `TRIBUNALS_READ`","parameters":[{"schema":{"type":"string","enum":["SUPERIOR","FEDERAL","STATE","LABOR","ELECTORAL","MILITARY","ADMINISTRATIVE"]},"in":"query","name":"branch","required":false},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24},"name":{"type":"string","minLength":3,"maxLength":200},"branch":{"type":"string","enum":["SUPERIOR","FEDERAL","STATE","LABOR","ELECTORAL","MILITARY","ADMINISTRATIVE"]},"sources":{"type":"array","items":{"type":"string","enum":["CNJ_DATAJUD","DJEN_PUBLIC","STJ_OPEN_DATA","CARF_OPEN_DATA","TJDFT_OPEN_DATA"]}},"cnjNumbering":{"nullable":true,"type":"object","properties":{"segment":{"type":"integer","minimum":1,"maximum":9},"code":{"type":"integer","minimum":0,"maximum":99}},"required":["segment","code"],"additionalProperties":false},"processIndex":{"nullable":true,"type":"object","properties":{"updatedThrough":{"nullable":true,"type":"string","format":"date-time"},"checkedAt":{"type":"string","format":"date-time"}},"required":["updatedThrough","checkedAt"],"additionalProperties":false}},"required":["alias","code","name","branch","sources","cnjNumbering","processIndex"],"additionalProperties":false}},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/court-calendar":{"get":{"operationId":"getCourtCalendar","summary":"Calendário forense do tribunal","tags":["Catálogo"],"description":"Retorna os dias em que o prazo não corre num tribunal dentro de uma janela de datas: os feriados nacionais, o Dia da Justiça (8/12) em todo tribunal, os feriados forenses que a lei federal dá à Justiça Federal e aos tribunais superiores, e que as justiças do Trabalho e Eleitoral adotam (segunda de Carnaval, Semana Santa de quarta a domingo, 11/8 e 1º/11), todos com `scope` NATIONAL, o recesso de fim de ano (art. 220 do CPC), os feriados estaduais da UF do tribunal e, com `municipalityIbgeCode`, os municipais da comarca. O tribunal vai em `court`, pela sigla (`court=TJSP`; o apelido também vale), e `tribunalAlias` continua aceito como sinônimo. A janela vai em `from`/`to`, no formato AAAA-MM-DD. Quando o tribunal transferiu um feriado por ato próprio e o motor conhece o ato, o feriado sai no dia que o ato fixa, com `transfer` dizendo de qual dia veio. `coverage` diz, camada a camada, o que esta resposta consultou.\n\n**Escopo exigido na chave de API:** `TRIBUNALS_READ`","parameters":[{"schema":{"type":"string","minLength":3,"maxLength":64},"in":"query","name":"court","required":false},{"schema":{"type":"string","minLength":3,"maxLength":64},"in":"query","name":"tribunalAlias","required":false},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"in":"query","name":"municipalityIbgeCode","required":false},{"schema":{},"in":"query","name":"from","required":true},{"schema":{},"in":"query","name":"to","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"court":{"type":"string"},"tribunalAlias":{"type":"string"},"uf":{"nullable":true,"type":"string","minLength":2,"maxLength":2},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"entries":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"kind":{"type":"string","enum":["HOLIDAY","RECESS"]},"scope":{"type":"string","enum":["NATIONAL","STATE","MUNICIPAL"]},"label":{"type":"string","minLength":2,"maxLength":160},"uf":{"nullable":true,"type":"string","minLength":2,"maxLength":2},"municipalityIbgeCode":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"transfer":{"description":"Presente quando o tribunal transferiu o feriado por ato próprio: date é o dia em que o tribunal o observa, fromDate o dia que a lei fixa (que não sai na lista), e act e url o ato e onde ele foi lido.","type":"object","properties":{"fromDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"act":{"type":"string","minLength":2,"maxLength":300},"url":{"type":"string","format":"uri"}},"required":["fromDate","act","url"],"additionalProperties":false}},"required":["date","kind","scope","label","uf"],"additionalProperties":false}},"coverage":{"type":"array","items":{"type":"object","properties":{"layer":{"type":"string","enum":["NATIONAL_MOVABLE","NATIONAL_FIXED","JUDICIAL_RECESS","STATE","MUNICIPAL","SUSPENSION"]},"label":{"type":"string","minLength":2,"maxLength":80},"status":{"type":"string","enum":["CONSULTED","APPLIED_BY_CALLER","NOT_REQUESTED","UNAVAILABLE_FOR_COURT","COURT_NOT_RECOGNIZED","NOT_CATALOGUED","NOT_SERVED"]},"detail":{"type":"string","minLength":2,"maxLength":400}},"required":["layer","label","status","detail"],"additionalProperties":false}},"jurisdiction":{"nullable":true,"type":"object","properties":{"reach":{"type":"string","enum":["NATIONAL","SINGLE_STATE","MULTI_STATE"]},"states":{"type":"array","items":{"type":"string","minLength":2,"maxLength":2}}},"required":["reach","states"],"additionalProperties":false}},"required":["court","tribunalAlias","uf","municipalityIbgeCode","entries","coverage","jurisdiction"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/processes/search":{"post":{"operationId":"searchProcesses","summary":"Buscar processos","tags":["Processos"],"description":"Executa uma busca estruturada de processos em um tribunal suportado. A consulta por número completo é atendida pelo acervo, sem consultar a fonte enquanto o dado está recente, com um item por documento que a fonte ainda traz do número, a principal primeiro; quando eles não cabem em `limit`, a consulta vai à fonte, que pagina. Todo resultado que vem da fonte entra no acervo, cada documento na sua instância. No modo assíncrono o endpoint responde 202 com um descritor de job — consulte o resultado em GET /v1/search-jobs/{jobId}. **Antes de concluir que um processo não existe, leia `sourceIndex.updatedThrough`:** é a data até onde o índice do tribunal está atualizado. Um processo distribuído depois dela ainda não é encontrável, e `total: 0` ali significa *ainda não chegou*, não *não existe*. O campo acompanha toda resposta que consulta a fonte, sem custo adicional.\n\n**Escopo exigido na chave de API:** `PROCESSES_SEARCH`","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tribunalAlias":{"type":"string","minLength":3,"maxLength":64},"number":{"type":"string","minLength":7,"maxLength":40},"classCode":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"courtBodyCode":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"degree":{"type":"string","minLength":1,"maxLength":12},"filedFrom":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"filedTo":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"updatedFrom":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"updatedTo":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"limit":{"default":20,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100},"cursor":{"maxItems":3,"type":"array","items":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string"}]}}},"required":["tribunalAlias"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"relation":{"type":"string","enum":["eq","gte"]},"limit":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"items":{"type":"array","items":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"djen":{"nullable":true,"type":"object","properties":{"publicationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"latestPublicationAt":{"nullable":true,"type":"string","format":"date-time"},"latestPublicationType":{"nullable":true,"type":"string"},"latestPublicationExcerpt":{"nullable":true,"type":"string","maxLength":12000},"latestPublicationUrl":{"nullable":true,"type":"string"}},"required":["publicationCount"],"additionalProperties":false}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects"],"additionalProperties":false}},"nextCursor":{"nullable":true,"type":"array","items":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string"}]}},"sourceIndex":{"nullable":true,"type":"object","properties":{"tribunalAlias":{"type":"string"},"updatedThrough":{"nullable":true,"description":"Última atualização presente no índice da fonte. Um processo distribuído depois desta data ainda não é encontrável — a ausência dele não significa que não exista. Null quando a fonte não respondeu à sondagem.","type":"string","format":"date-time"},"checkedAt":{"description":"Quando esta busca montou a resposta com a data-limite acima.","type":"string","format":"date-time"}},"required":["tribunalAlias","updatedThrough","checkedAt"],"additionalProperties":false}},"required":["total","relation","limit","items"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"202":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["QUEUED","LEASED","SUCCEEDED","FAILED","CANCELED"]},"kind":{"type":"string"},"pollUrl":{"type":"string"},"deduped":{"type":"boolean"},"creditsReserved":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time"}},"required":["jobId","status"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/processes/{processNumber}":{"get":{"operationId":"getProcessByNumber","summary":"Obter um processo pelo número","tags":["Processos"],"description":"Retorna o registro exato do processo para o tribunal e o número informados: do acervo, quando a cópia guardada está recente, e da fonte, quando não está. **Um número, várias instâncias.** A fonte guarda um documento por instância do processo (1º grau, 2º grau, turma recursal…), às vezes dois do mesmo grau, e o motor guarda cada um na sua instância. O topo da resposta é sempre a instância principal do número — a mesma de uma leitura para a outra, que só muda quando uma resposta completa da fonte deixa de trazê-la —, com o grau em `degree`, e `data.instances` lista todos os documentos, a principal primeiro, cada um com `origin` (`SOURCE` quando veio da fonte nesta resposta, `LAKE` quando saiu do acervo), `fetchedAt` e `absentSince`. Todos levam a classificação do número inteiro: basta um documento em segredo de justiça para todos saírem marcados. `meta.sourceFetchedAt` diz quando os dados do topo foram buscados na fonte; a ficha retida pelo controle de confidencialidade, sem o teor, não o traz nem lista as instâncias. `waitSeconds` escolhe quanto esperar pela fonte processual. Quando a fonte responde com parte do índice e o processo está na parte que respondeu, ele é servido e `meta.partialIndex` diz quantas partes falharam (`shardsFailed`), de quantas (`shardsTotal`) e se o prazo interno da fonte estourou (`timedOut`): o documento que o acervo já guardava e não veio sai em `data.instances` do acervo, com a data dele, e outra instância que o acervo não conhece, se existir, pode não ter vindo. Resposta parcial sem o processo é 502 `UPSTREAM_UNAVAILABLE` retentável, nunca 404; antes dela, o motor consulta a fonte de novo, até duas vezes, enquanto o prazo de `waitSeconds` couber. `meta.otherInstances` resume os outros documentos do número que vieram na resposta, além da principal: grau, data de atualização na fonte e órgão julgador. **Quando a fonte falha** — não responde dentro de `waitSeconds`, fica indisponível, responde com parte do índice sem poder servir o processo ou pede para esperar por volume — e o acervo guarda uma cópia do processo, a resposta é essa cópia, por 1 crédito: `meta.lakeRescue.cause` diz a causa e `meta.sourceFetchedAt` a data em que a cópia foi buscada. Movimentos posteriores a essa data podem existir e não estão na resposta. Sem `staleOnFailure=true`, só a cópia de até 24 h socorre; com ele, a de qualquer idade. A cópia é montada por instância, cada uma com a data dela em `data.instances[].fetchedAt`, e o número que a resposta completa mais recente da fonte já não trazia em documento nenhum não é socorrido. Na recusa por volume, `meta.lakeRescue.retryAfterSeconds` e o header `Retry-After` dizem quanto esperar antes de consultar de novo. A resposta da fonte que não traz o processo nunca é socorrida e segue 404. A cópia passa pelo mesmo controle de confidencialidade da leitura; além de 24 h, só a recebe quem já tem interesse registrado no processo — de uma leitura anterior dele ou de uma assinatura ativa —, e os demais recebem a falha da fonte. Na ficha socorrida pelo acervo, a data vale para os dados do processo, e o resumo das publicações (`djen`) é relido na hora das publicações que o acervo guarda.\n\n**Escopo exigido na chave de API:** `PROCESSES_READ`","parameters":[{"schema":{"type":"string","minLength":3,"maxLength":64},"in":"query","name":"tribunalAlias","required":true},{"schema":{},"in":"query","name":"since","required":false},{"schema":{"default":20,"type":"integer","minimum":10,"maximum":180},"in":"query","name":"waitSeconds","required":false,"description":"Quanto esperar pela fonte processual quando o processo precisa ser buscado nela, em segundos: de 10 a 180, padrão 20. É o teto da consulta à fonte: ela às vezes leva até ~60 s por consulta, cada ida a ela espera no máximo 60 s, e a segunda ida só sai depois de uma recusa por volume ou de um erro da fonte, nunca depois de tempo esgotado. Depois dela, a ficha ainda espera até 10 s pelo resumo das publicações do processo. Tempo esgotado é 504 `UPSTREAM_TIMEOUT` (lentidão, não ausência). Dê ao seu cliente HTTP um tempo limite que cubra a espera, esses segundos da ficha e a rede: no padrão, mais de 30 s."},{"schema":{"default":false,"type":"boolean"},"in":"query","name":"staleOnFailure","required":false,"description":"O que fazer quando a fonte processual falha — não responde dentro da espera, fica indisponível ou pede para esperar por volume — e o acervo guarda uma cópia do processo. Sem ele (`false`), a cópia só é servida se tiver até 24 h. Com `true`, ela é servida de qualquer idade. Nos dois casos a resposta custa 1 crédito, `meta.lakeRescue` diz a causa e `meta.sourceFetchedAt` diz quando a cópia foi buscada na fonte. A resposta da fonte que não traz o processo segue 404 `PROCESS_NOT_FOUND`, com cópia guardada ou sem ela."},{"schema":{"type":"string","minLength":7,"maxLength":40},"in":"path","name":"processNumber","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"djen":{"nullable":true,"type":"object","properties":{"publicationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"latestPublicationAt":{"nullable":true,"type":"string","format":"date-time"},"latestPublicationType":{"nullable":true,"type":"string"},"latestPublicationExcerpt":{"nullable":true,"type":"string","maxLength":12000},"latestPublicationUrl":{"nullable":true,"type":"string"}},"required":["publicationCount"],"additionalProperties":false},"instances":{"description":"Todos os documentos que o motor guarda deste número — em geral um por instância (1º grau, 2º grau, turma recursal…), às vezes dois do mesmo grau —, a principal primeiro, depois os que a fonte ainda traz e por fim os que ela deixou de trazer. O topo da resposta é a principal. Cada um leva a classificação do número inteiro: basta um documento em segredo de justiça para todos saírem marcados. Ausente na ficha que o controle de confidencialidade entrega retida, sem o teor.","type":"array","items":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"primary":{"type":"boolean","description":"A instância principal do número, a que o topo da resposta serve. É a mesma de uma leitura para a outra e só muda quando uma resposta completa da fonte pelo número deixa de trazê-la."},"origin":{"type":"string","enum":["SOURCE","LAKE"],"description":"`SOURCE`: veio da fonte nesta resposta. `LAKE`: servida do que o acervo guarda — a fonte não a trouxe nesta resposta, ou a resposta inteira saiu do acervo."},"fetchedAt":{"description":"Quando os dados desta instância foram buscados na fonte. No retrato, com os movimentos servidos do acervo, é a data da captura deles.","type":"string","format":"date-time"},"absentSince":{"nullable":true,"description":"Desde quando a resposta completa da fonte pelo número vem sem este documento; nulo enquanto ela o traz.","type":"string","format":"date-time"}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects","primary","origin","fetchedAt","absentSince"],"additionalProperties":false}}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"},"sourceFetchedAt":{"description":"Quando os dados servidos foram buscados na fonte: agora, se ela respondeu; antes, se vieram do acervo. No retrato socorrido pelo acervo, é a data da captura dos movimentos servidos. Ausente na ficha que o controle de confidencialidade entrega retida, sem o teor.","type":"string","format":"date-time"},"lakeRescue":{"type":"object","properties":{"cause":{"type":"string","enum":["UPSTREAM_TIMEOUT","UPSTREAM_UNAVAILABLE","UPSTREAM_RATE_LIMITED"],"description":"Por que a fonte não entregou: `UPSTREAM_TIMEOUT` (não respondeu dentro da espera), `UPSTREAM_UNAVAILABLE` (indisponível, ou respondeu com parte do índice sem poder servir o processo) ou `UPSTREAM_RATE_LIMITED` (pediu para esperar por volume)."},"retryAfterSeconds":{"description":"A espera que a fonte pediu: não consulte a fonte de novo antes dela.","type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991}},"required":["cause"],"additionalProperties":false,"description":"Presente só quando a fonte processual falhou e o motor serviu a cópia que o acervo guarda do processo. A data da cópia está em `meta.sourceFetchedAt`; movimentos posteriores a ela podem existir e não estão na resposta."},"partialIndex":{"type":"object","properties":{"shardsFailed":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Partes do índice da fonte que não responderam."},"shardsTotal":{"nullable":true,"description":"Total de partes do índice; nulo quando a fonte não as contou.","type":"integer","minimum":0,"maximum":9007199254740991},"timedOut":{"type":"boolean","description":"A fonte estourou o próprio prazo interno e devolveu só o que deu tempo de olhar."}},"required":["shardsFailed","shardsTotal","timedOut"],"additionalProperties":false,"description":"Presente só quando a fonte respondeu com parte do índice e o processo estava na parte que respondeu: o documento que o acervo já guardava e não veio sai em `instances` do acervo (`origin: LAKE`), e outra instância que o acervo não conhece, se existir, pode não ter vindo."},"otherInstances":{"type":"array","items":{"type":"object","properties":{"grau":{"nullable":true,"description":"O grau deste documento na fonte: G1, G2, JE, TR…","type":"string"},"updatedAt":{"nullable":true,"description":"Quando a fonte atualizou este documento pela última vez.","type":"string","format":"date-time"},"courtBody":{"description":"O órgão julgador deste documento, quando a fonte o traz.","type":"string"}},"required":["grau","updatedAt"],"additionalProperties":false},"description":"Presente só quando a resposta da fonte trouxe outros documentos do número além da instância principal, que é o topo de `data` (com o grau em `degree`) — em geral de instâncias diferentes, mas dois podem ter o mesmo `grau`. O motor guarda cada documento na sua instância e serve todos em `data.instances`; esta lista é o resumo dos outros que vieram na mesma resposta. Não inclui documento que o motor classificaria como segredo de justiça, e não aparece quando o processo servido é restrito."}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/processes/{processNumber}/related":{"get":{"operationId":"listRelatedProcesses","summary":"Listar processos relacionados","tags":["Processos"],"description":"Retorna outros processos que o motor consegue relacionar com segurança ao processo consultado: o mesmo número unificado sob o índice de outro tribunal (relação confiável) e números CNJ válidos citados no texto das próprias movimentações do processo (sugestão a confirmar). Cada relacionado passa individualmente pelo controle de confidencialidade.\n\n**Escopo exigido na chave de API:** `PROCESSES_READ`","parameters":[{"schema":{"type":"string","minLength":3,"maxLength":64},"in":"query","name":"tribunalAlias","required":true},{"schema":{"type":"string","minLength":7,"maxLength":40},"in":"path","name":"processNumber","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"array","items":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"djen":{"nullable":true,"type":"object","properties":{"publicationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"latestPublicationAt":{"nullable":true,"type":"string","format":"date-time"},"latestPublicationType":{"nullable":true,"type":"string"},"latestPublicationExcerpt":{"nullable":true,"type":"string","maxLength":12000},"latestPublicationUrl":{"nullable":true,"type":"string"}},"required":["publicationCount"],"additionalProperties":false},"relation":{"type":"string","enum":["SAME_NUMBER","CITED_IN_MOVEMENT"]},"confidence":{"type":"number","minimum":0,"maximum":1},"relationReason":{"nullable":true,"type":"string"}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects","relation","confidence"],"additionalProperties":false}}},"required":["total","items"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/processes/{processNumber}/snapshot":{"get":{"operationId":"getProcessSnapshot","summary":"Obter um snapshot vivo do processo","tags":["Processos"],"description":"Busca o processo na fonte processual e retorna o registro normalizado do processo, o payload bruto da fonte e as movimentações normalizadas. **Um número, várias instâncias.** A fonte guarda um documento por instância do processo (1º grau, 2º grau, turma recursal…), às vezes dois do mesmo grau, e o motor guarda cada um na sua instância. O topo da resposta é sempre a instância principal do número — a mesma de uma leitura para a outra, que só muda quando uma resposta completa da fonte deixa de trazê-la —, com o grau em `degree`, e `data.instances` lista todos os documentos, a principal primeiro, cada um com `origin` (`SOURCE` quando veio da fonte nesta resposta, `LAKE` quando saiu do acervo), `fetchedAt` e `absentSince`. Todos levam a classificação do número inteiro: basta um documento em segredo de justiça para todos saírem marcados. `meta.sourceFetchedAt` diz quando os dados do topo foram buscados na fonte; a ficha retida pelo controle de confidencialidade, sem o teor, não o traz nem lista as instâncias. `waitSeconds` escolhe quanto esperar pela fonte processual. Quando a fonte responde com parte do índice e o processo está na parte que respondeu, ele é servido e `meta.partialIndex` diz quantas partes falharam (`shardsFailed`), de quantas (`shardsTotal`) e se o prazo interno da fonte estourou (`timedOut`): o documento que o acervo já guardava e não veio sai em `data.instances` do acervo, com a data dele, e outra instância que o acervo não conhece, se existir, pode não ter vindo. Resposta parcial sem o processo é 502 `UPSTREAM_UNAVAILABLE` retentável, nunca 404; antes dela, o motor consulta a fonte de novo, até duas vezes, enquanto o prazo de `waitSeconds` couber. `meta.otherInstances` resume os outros documentos do número que vieram na resposta, além da principal: grau, data de atualização na fonte e órgão julgador. **Quando a fonte falha** — não responde dentro de `waitSeconds`, fica indisponível, responde com parte do índice sem poder servir o processo ou pede para esperar por volume — e o acervo guarda uma cópia do processo, a resposta é essa cópia, por 1 crédito: `meta.lakeRescue.cause` diz a causa e `meta.sourceFetchedAt` a data em que a cópia foi buscada. Movimentos posteriores a essa data podem existir e não estão na resposta. Sem `staleOnFailure=true`, só a cópia de até 24 h socorre; com ele, a de qualquer idade. A cópia é montada por instância, cada uma com a data dela em `data.instances[].fetchedAt`, e o número que a resposta completa mais recente da fonte já não trazia em documento nenhum não é socorrido. Na recusa por volume, `meta.lakeRescue.retryAfterSeconds` e o header `Retry-After` dizem quanto esperar antes de consultar de novo. A resposta da fonte que não traz o processo nunca é socorrida e segue 404. A cópia passa pelo mesmo controle de confidencialidade da leitura; além de 24 h, só a recebe quem já tem interesse registrado no processo — de uma leitura anterior dele ou de uma assinatura ativa —, e os demais recebem a falha da fonte. `process` e `movements` são os da instância principal, e cada entrada de `data.instances` traz os movimentos da última captura dela, do mais recente ao mais antigo; na instância cujos movimentos o motor nunca capturou, `movements` e `movementCount` são nulos, nunca lista vazia. A resposta parcial sem a instância principal serve a principal do acervo, e é 502 `UPSTREAM_UNAVAILABLE` quando o acervo não guarda os movimentos dela. No retrato socorrido pelo acervo, os movimentos e o registro de cada instância são os da última captura guardada dela — o socorro exige a da principal —, e `sourcePayload` é nulo: o documento bruto da fonte não é guardado.\n\n**Escopo exigido na chave de API:** `PROCESSES_READ`","parameters":[{"schema":{"type":"string","minLength":3,"maxLength":64},"in":"query","name":"tribunalAlias","required":true},{"schema":{},"in":"query","name":"since","required":false},{"schema":{"default":20,"type":"integer","minimum":10,"maximum":180},"in":"query","name":"waitSeconds","required":false,"description":"Quanto esperar pela fonte processual quando o processo precisa ser buscado nela, em segundos: de 10 a 180, padrão 20. É o teto da consulta à fonte: ela às vezes leva até ~60 s por consulta, cada ida a ela espera no máximo 60 s, e a segunda ida só sai depois de uma recusa por volume ou de um erro da fonte, nunca depois de tempo esgotado. Depois dela, a ficha ainda espera até 10 s pelo resumo das publicações do processo. Tempo esgotado é 504 `UPSTREAM_TIMEOUT` (lentidão, não ausência). Dê ao seu cliente HTTP um tempo limite que cubra a espera, esses segundos da ficha e a rede: no padrão, mais de 30 s."},{"schema":{"default":false,"type":"boolean"},"in":"query","name":"staleOnFailure","required":false,"description":"O que fazer quando a fonte processual falha — não responde dentro da espera, fica indisponível ou pede para esperar por volume — e o acervo guarda uma cópia do processo. Sem ele (`false`), a cópia só é servida se tiver até 24 h. Com `true`, ela é servida de qualquer idade. Nos dois casos a resposta custa 1 crédito, `meta.lakeRescue` diz a causa e `meta.sourceFetchedAt` diz quando a cópia foi buscada na fonte. A resposta da fonte que não traz o processo segue 404 `PROCESS_NOT_FOUND`, com cópia guardada ou sem ela."},{"schema":{"type":"string","minLength":7,"maxLength":40},"in":"path","name":"processNumber","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"process":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"djen":{"nullable":true,"type":"object","properties":{"publicationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"latestPublicationAt":{"nullable":true,"type":"string","format":"date-time"},"latestPublicationType":{"nullable":true,"type":"string"},"latestPublicationExcerpt":{"nullable":true,"type":"string","maxLength":12000},"latestPublicationUrl":{"nullable":true,"type":"string"}},"required":["publicationCount"],"additionalProperties":false}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects"],"additionalProperties":false},"sourcePayload":{},"movements":{"type":"array","items":{"type":"object","properties":{"externalMovementKey":{"type":"string","minLength":12,"maxLength":64},"codigo":{"nullable":true,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"nome":{"type":"string","minLength":1,"maxLength":240},"dataHora":{"nullable":true,"type":"string","format":"date-time"},"complementos":{},"rawPayload":{}},"required":["externalMovementKey","nome","complementos","rawPayload"],"additionalProperties":false}},"instances":{"type":"array","items":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"primary":{"type":"boolean","description":"A instância principal do número, a que o topo da resposta serve. É a mesma de uma leitura para a outra e só muda quando uma resposta completa da fonte pelo número deixa de trazê-la."},"origin":{"type":"string","enum":["SOURCE","LAKE"],"description":"`SOURCE`: veio da fonte nesta resposta. `LAKE`: servida do que o acervo guarda — a fonte não a trouxe nesta resposta, ou a resposta inteira saiu do acervo."},"fetchedAt":{"description":"Quando os dados desta instância foram buscados na fonte. No retrato, com os movimentos servidos do acervo, é a data da captura deles.","type":"string","format":"date-time"},"absentSince":{"nullable":true,"description":"Desde quando a resposta completa da fonte pelo número vem sem este documento; nulo enquanto ela o traz.","type":"string","format":"date-time"},"movementsCaptured":{"type":"boolean","description":"Se o motor guarda os movimentos desta instância. Falso quando eles nunca foram capturados — o documento só veio numa ficha ou numa busca — ou quando o acervo já não guarda algum deles, e aí `movements` e `movementCount` são nulos."},"movementCount":{"nullable":true,"description":"Quantos movimentos a última captura desta instância trouxe; nulo quando eles nunca foram capturados.","type":"integer","minimum":0,"maximum":9007199254740991},"movements":{"nullable":true,"description":"Os movimentos da última captura desta instância, do mais recente ao mais antigo, sem o payload bruto da fonte; nulo quando eles nunca foram capturados.","type":"array","items":{"type":"object","properties":{"externalMovementKey":{"type":"string","minLength":12,"maxLength":64},"codigo":{"nullable":true,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"nome":{"type":"string","minLength":1,"maxLength":240},"dataHora":{"nullable":true,"type":"string","format":"date-time"},"complementos":{}},"required":["externalMovementKey","nome","complementos"],"additionalProperties":false}}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects","primary","origin","fetchedAt","absentSince","movementsCaptured","movementCount","movements"],"additionalProperties":false},"description":"Todos os documentos que o motor guarda deste número — em geral um por instância (1º grau, 2º grau, turma recursal…), às vezes dois do mesmo grau —, a principal primeiro, depois os que a fonte ainda traz e por fim os que ela deixou de trazer. O topo da resposta é a principal. Cada um leva a classificação do número inteiro: basta um documento em segredo de justiça para todos saírem marcados. `process` e `movements` são os da principal, e cada instância traz os movimentos dela."}},"required":["process","sourcePayload","movements","instances"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"},"sourceFetchedAt":{"description":"Quando os dados servidos foram buscados na fonte: agora, se ela respondeu; antes, se vieram do acervo. No retrato socorrido pelo acervo, é a data da captura dos movimentos servidos. Ausente na ficha que o controle de confidencialidade entrega retida, sem o teor.","type":"string","format":"date-time"},"lakeRescue":{"type":"object","properties":{"cause":{"type":"string","enum":["UPSTREAM_TIMEOUT","UPSTREAM_UNAVAILABLE","UPSTREAM_RATE_LIMITED"],"description":"Por que a fonte não entregou: `UPSTREAM_TIMEOUT` (não respondeu dentro da espera), `UPSTREAM_UNAVAILABLE` (indisponível, ou respondeu com parte do índice sem poder servir o processo) ou `UPSTREAM_RATE_LIMITED` (pediu para esperar por volume)."},"retryAfterSeconds":{"description":"A espera que a fonte pediu: não consulte a fonte de novo antes dela.","type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991}},"required":["cause"],"additionalProperties":false,"description":"Presente só quando a fonte processual falhou e o motor serviu a cópia que o acervo guarda do processo. A data da cópia está em `meta.sourceFetchedAt`; movimentos posteriores a ela podem existir e não estão na resposta."},"partialIndex":{"type":"object","properties":{"shardsFailed":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Partes do índice da fonte que não responderam."},"shardsTotal":{"nullable":true,"description":"Total de partes do índice; nulo quando a fonte não as contou.","type":"integer","minimum":0,"maximum":9007199254740991},"timedOut":{"type":"boolean","description":"A fonte estourou o próprio prazo interno e devolveu só o que deu tempo de olhar."}},"required":["shardsFailed","shardsTotal","timedOut"],"additionalProperties":false,"description":"Presente só quando a fonte respondeu com parte do índice e o processo estava na parte que respondeu: o documento que o acervo já guardava e não veio sai em `instances` do acervo (`origin: LAKE`), e outra instância que o acervo não conhece, se existir, pode não ter vindo."},"otherInstances":{"type":"array","items":{"type":"object","properties":{"grau":{"nullable":true,"description":"O grau deste documento na fonte: G1, G2, JE, TR…","type":"string"},"updatedAt":{"nullable":true,"description":"Quando a fonte atualizou este documento pela última vez.","type":"string","format":"date-time"},"courtBody":{"description":"O órgão julgador deste documento, quando a fonte o traz.","type":"string"}},"required":["grau","updatedAt"],"additionalProperties":false},"description":"Presente só quando a resposta da fonte trouxe outros documentos do número além da instância principal, que é o topo de `data` (com o grau em `degree`) — em geral de instâncias diferentes, mas dois podem ter o mesmo `grau`. O motor guarda cada documento na sua instância e serve todos em `data.instances`; esta lista é o resumo dos outros que vieram na mesma resposta. Não inclui documento que o motor classificaria como segredo de justiça, e não aparece quando o processo servido é restrito."}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/processes/{processNumber}/movements":{"get":{"operationId":"listProcessMovements","summary":"Listar as movimentações em cache do processo","tags":["Processos"],"description":"Retorna as movimentações guardadas de um número de processo no tribunal informado. Esta rota não busca movimentações na fonte. Cada item diz em `degrees` o grau (ou os graus) cujo documento o trouxe na última captura — vazio no movimento que nenhuma captura atual traz —, e `degree` recorta a lista por grau.\n\n**Escopo exigido na chave de API:** `PROCESSES_READ`","parameters":[{"schema":{"type":"string","minLength":3,"maxLength":64},"in":"query","name":"tribunalAlias","required":true},{"schema":{},"in":"query","name":"since","required":false},{"schema":{"type":"string","minLength":1,"maxLength":12},"in":"query","name":"degree","required":false,"description":"Só os movimentos que o documento deste grau (G1, G2, JE, TR…) trouxe na última captura, sem distinguir maiúsculas. O grau sem movimento guardado responde lista vazia."},{"schema":{"type":"string","minLength":7,"maxLength":40},"in":"path","name":"processNumber","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"array","items":{"type":"object","properties":{"movementKey":{"type":"string","minLength":12,"maxLength":64},"processNumber":{"type":"string","minLength":7,"maxLength":40},"formattedProcessNumber":{"type":"string","minLength":7,"maxLength":40},"movementDate":{"nullable":true,"type":"string","format":"date-time"},"degrees":{"type":"array","items":{"type":"string"},"description":"Os graus (G1, G2, JE, TR…) cujo documento trouxe este movimento na última captura. Em geral um; dois quando o mesmo ato está nos dois documentos do número. Vazio quando nenhuma captura atual o traz."},"code":{"nullable":true,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"label":{"nullable":true,"type":"string"},"payload":{}},"required":["movementKey","processNumber","formattedProcessNumber","degrees","code","payload"],"additionalProperties":false}}},"required":["total","items"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/processes/snapshot-batch":{"post":{"operationId":"getProcessSnapshotBatch","summary":"Snapshot em lote","tags":["Processos"],"description":"Snapshot de até N processos numa única chamada, em vez de uma chamada por processo. Sucesso parcial: item que falha é reportado individualmente e nunca derruba o lote; só os itens bem-sucedidos são cobrados. Todo snapshot obtido entra no acervo. O `process` e os `movements` do item são os da instância principal do número, e `snapshot.instances` lista os documentos do número só com o cabeçalho. Quando a fonte processual falha num item e o acervo guarda uma cópia dele de até 24 h, o item sai com essa cópia e com `lakeRescue` (a causa e a data da cópia), e custa 1 crédito em vez de 8; cópia mais velha não socorre o lote.\n\n**Escopo exigido na chave de API:** `PROCESSES_READ`","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"tribunalAlias":{"type":"string","minLength":3,"maxLength":64},"processNumber":{"type":"string","minLength":7,"maxLength":40}},"required":["tribunalAlias","processNumber"]}}},"required":["items"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"succeeded":{"type":"integer","minimum":0,"maximum":9007199254740991},"failed":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"array","items":{"type":"object","properties":{"tribunalAlias":{"type":"string"},"processNumber":{"type":"string"},"ok":{"type":"boolean"},"snapshot":{"type":"object","properties":{"process":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"djen":{"nullable":true,"type":"object","properties":{"publicationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"latestPublicationAt":{"nullable":true,"type":"string","format":"date-time"},"latestPublicationType":{"nullable":true,"type":"string"},"latestPublicationExcerpt":{"nullable":true,"type":"string","maxLength":12000},"latestPublicationUrl":{"nullable":true,"type":"string"}},"required":["publicationCount"],"additionalProperties":false}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects"],"additionalProperties":false},"movements":{"type":"array","items":{}},"instances":{"type":"array","items":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"primary":{"type":"boolean","description":"A instância principal do número, a que o topo da resposta serve. É a mesma de uma leitura para a outra e só muda quando uma resposta completa da fonte pelo número deixa de trazê-la."},"origin":{"type":"string","enum":["SOURCE","LAKE"],"description":"`SOURCE`: veio da fonte nesta resposta. `LAKE`: servida do que o acervo guarda — a fonte não a trouxe nesta resposta, ou a resposta inteira saiu do acervo."},"fetchedAt":{"description":"Quando os dados desta instância foram buscados na fonte. No retrato, com os movimentos servidos do acervo, é a data da captura deles.","type":"string","format":"date-time"},"absentSince":{"nullable":true,"description":"Desde quando a resposta completa da fonte pelo número vem sem este documento; nulo enquanto ela o traz.","type":"string","format":"date-time"}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects","primary","origin","fetchedAt","absentSince"],"additionalProperties":false},"description":"Os documentos que o motor guarda do número, a principal primeiro, só com o cabeçalho de cada um: os movimentos de cada instância vêm no retrato de um processo."}},"required":["process","movements","instances"],"additionalProperties":false},"lakeRescue":{"description":"Presente só no item que a fonte processual não entregou e que o acervo socorreu com a cópia guardada de até 24 h: a causa, a espera que a fonte pediu, quando pediu, e quando a cópia foi buscada. O item socorrido custa 1 crédito.","type":"object","properties":{"cause":{"type":"string","enum":["UPSTREAM_TIMEOUT","UPSTREAM_UNAVAILABLE","UPSTREAM_RATE_LIMITED"],"description":"Por que a fonte não entregou: `UPSTREAM_TIMEOUT` (não respondeu dentro da espera), `UPSTREAM_UNAVAILABLE` (indisponível, ou respondeu com parte do índice sem poder servir o processo) ou `UPSTREAM_RATE_LIMITED` (pediu para esperar por volume)."},"retryAfterSeconds":{"description":"A espera que a fonte pediu: não consulte a fonte de novo antes dela.","type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"sourceFetchedAt":{"description":"Quando a cópia servida foi buscada na fonte.","type":"string","format":"date-time"}},"required":["cause","sourceFetchedAt"],"additionalProperties":false},"error":{"type":"object","properties":{"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"description":"Código estável da taxonomia, quando a falha do item o carrega — é o que distingue, por exemplo, a recusa da chave de teste de um bloqueio LGPD.","type":"string"},"details":{"description":"Os mesmos `details` do envelope de erro da rota unitária — na recusa da chave de teste, `reason` diz a causa.","type":"object","additionalProperties":{}},"message":{"type":"string"}},"required":["message"],"additionalProperties":false}},"required":["tribunalAlias","processNumber","ok"],"additionalProperties":{}}}},"required":["total","succeeded","failed","items"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/processes/lookups":{"post":{"operationId":"createProcessLookup","summary":"Ler um processo e seguir em segundo plano se a fonte não entregar","tags":["Processos"],"description":"Faz a leitura de `GET /v1/processes/{processNumber}` (visão `PROCESS`) ou de `GET /v1/processes/{processNumber}/snapshot` (visão `SNAPSHOT`) dentro de `waitSeconds`. Quando ela cabe na espera, a resposta é **200** com uma consulta `SUCCEEDED`, sem consulta aberta (`lookupId` nulo), que traz o processo em `process` ou `snapshot`: o mesmo corpo, o mesmo `meta` e o mesmo preço da leitura direta — inclusive a cópia de até 24 h que socorre a fonte que falhou. Quando a fonte processual falha — não responde dentro da espera, fica indisponível, responde com parte do índice sem o processo ou pede para esperar por volume —, a resposta é **202** com a consulta aberta: o motor segue tentando sozinho, até 60 s por tentativa, por até 6 h (`giveUpAt`). O header `Location` aponta a consulta, que se lê sem cobrança em `GET /v1/processes/lookups/{lookupId}`, e `Retry-After` diz quando lê-la de novo. O 202 não cobra: o preço da leitura fica retido em `creditsReserved` e só é cobrado se o processo vier — 3 pela ficha, 8 pelo retrato; 1 pela ficha que outra leitura trouxe ao acervo nesse meio-tempo. O fim sai no evento `PROCESS_LOOKUP_COMPLETED`, que aponta a consulta e nunca traz o processo; o movimento novo segue no próprio evento dele. Chamar de novo a mesma leitura (conta, escritório, processo e visão) devolve a mesma consulta (`deduped: true`), sem nova retenção nem conferência de saldo; quando a próxima tentativa agendada está a mais de 2 min e a última ficou pelo menos isso para trás, a chamada tenta a fonte na hora, dentro da espera dela, e responde 200 se o processo vier. Com `staleOnFailure: true`, a falha da fonte com uma cópia guardada mais velha que o frescor do plano responde 202 com a cópia em `stale`, por 1 crédito, e a consulta cobra só o resto do preço se a versão atual vier: socorro e atualização somam o preço da leitura viva. Toda outra recusa é exatamente a da leitura direta: a resposta da fonte sem o processo (404), o segredo de justiça (403), o saldo (402) — e também a falha da fonte quando a conta já tem consultas abertas demais (5 por chave, 20 por conta) ou quando o saldo não comporta a retenção. Uma leitura direta sua do mesmo processo que dá certo fecha a consulta aberta sem cobrar, e o retrato fecha também a da ficha. A chave de teste nunca abre consulta: responde como a leitura direta.\n\n**Escopo exigido na chave de API:** `PROCESSES_READ`","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tribunalAlias":{"type":"string","minLength":3,"maxLength":64},"processNumber":{"type":"string","minLength":7,"maxLength":40},"view":{"type":"string","enum":["PROCESS","SNAPSHOT"],"description":"O que ler: `PROCESS`, a ficha do processo (a mesma de `GET /v1/processes/{processNumber}`), ou `SNAPSHOT`, o retrato com os movimentos (o de `GET /v1/processes/{processNumber}/snapshot`)."},"waitSeconds":{"default":20,"description":"Quanto esperar pela fonte processual nesta chamada, em segundos: de 10 a 180, padrão 20. A mesma espera de `waitSeconds` nas duas leituras de processo; o que não cabe nela segue em segundo plano.","type":"integer","minimum":10,"maximum":180},"staleOnFailure":{"default":false,"description":"Com `true`, quando a fonte falha e o acervo guarda uma cópia do processo mais velha que o frescor do seu plano, a resposta 202 traz essa cópia em `stale`, por 1 crédito, e a consulta segue buscando a versão atual pelo resto do preço. Sem ele, a falha da fonte socorrida pela cópia de até 24 h responde 200, como nas duas leituras.","type":"boolean"}},"required":["tribunalAlias","processNumber","view"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"lookupId":{"nullable":true,"description":"O id da consulta; nulo quando a leitura coube na espera e nenhuma consulta foi aberta.","type":"string"},"status":{"type":"string","enum":["QUEUED","LEASED","SUCCEEDED","FAILED","CANCELED"]},"view":{"type":"string","enum":["PROCESS","SNAPSHOT"],"description":"O que ler: `PROCESS`, a ficha do processo (a mesma de `GET /v1/processes/{processNumber}`), ou `SNAPSHOT`, o retrato com os movimentos (o de `GET /v1/processes/{processNumber}/snapshot`)."},"tribunalAlias":{"type":"string"},"processNumber":{"type":"string","description":"O número do processo, só os 20 dígitos."},"pollUrl":{"nullable":true,"description":"Onde a consulta é lida, sem nova cobrança; nulo sem consulta aberta.","type":"string"},"deduped":{"type":"boolean","description":"A chamada reencontrou a consulta já aberta para a mesma conta, escritório, processo e visão, em vez de abrir outra."},"creditsReserved":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Créditos retidos pela consulta: o máximo que a entrega cobra, só se o processo vier — a ficha que outra leitura trouxe ao acervo cobra menos. Enquanto isso, a retenção conta no saldo e no teto diário da chave que abriu a consulta."},"alreadyCharged":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"O que a mesma compra já cobrou fora da consulta: a cópia guardada entregue em `stale`. A entrega cobra o preço da leitura menos isto."},"attempts":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Idas à fonte até aqui, a leitura que abriu a consulta incluída."},"nextAttemptAt":{"nullable":true,"description":"Quando a próxima tentativa sai; nulo na consulta terminada e enquanto uma tentativa está em curso. A hora que já passou é a da tentativa esperando a vez na fila. Ler a consulta antes da hora futura devolve o mesmo estado.","type":"string","format":"date-time"},"giveUpAt":{"nullable":true,"description":"Até quando a consulta tenta; depois, termina sem o processo e devolve a retenção. Nulo sem consulta aberta.","type":"string","format":"date-time"},"lastAttempt":{"nullable":true,"type":"object","properties":{"at":{"type":"string","format":"date-time"},"code":{"type":"string","enum":["UPSTREAM_TIMEOUT","UPSTREAM_UNAVAILABLE","UPSTREAM_RATE_LIMITED"]},"retryable":{"type":"boolean"}},"required":["at","code","retryable"],"additionalProperties":false,"description":"A última ida à fonte que não entregou: quando, e por quê — `UPSTREAM_TIMEOUT` (não respondeu dentro da espera), `UPSTREAM_UNAVAILABLE` (indisponível, ou respondeu com parte do índice sem o processo) ou `UPSTREAM_RATE_LIMITED` (pediu para esperar por volume)."},"satisfiedBy":{"nullable":true,"description":"Quem entregou: `SOURCE`, uma tentativa na fonte; `LAKE`, o acervo, que outra leitura atualizou depois de a consulta abrir; `DIRECT_READ`, uma leitura sua do mesmo processo, que entregou e cobrou antes — a consulta fecha sem cobrar. Nulo enquanto não houve entrega.","type":"string","enum":["SOURCE","LAKE","DIRECT_READ"]},"creditsCharged":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"creditsRefunded":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"error":{"nullable":true,"type":"object","properties":{"class":{"type":"string","enum":["RETRYABLE","TERMINAL"]},"code":{"type":"string"},"message":{"type":"string","description":"O texto público fixo do código, o mesmo em toda consulta."},"retryable":{"type":"boolean"},"upstreamStatus":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["class","code","message","retryable"],"additionalProperties":false,"description":"Por que a consulta terminou sem o processo: o código da taxonomia de erros, como a leitura síncrona o daria."},"createdAt":{"type":"string","format":"date-time"},"finishedAt":{"nullable":true,"type":"string","format":"date-time"},"resultExpiresAt":{"nullable":true,"description":"Até quando o processo entregue é lido nesta consulta sem nova cobrança: 24 h depois da entrega.","type":"string","format":"date-time"},"resultExpired":{"type":"boolean","description":"O processo entregue já não é lido aqui: o prazo passou, ou o acervo já não sustenta a cópia. Uma leitura nova o traz."},"monitor":{"nullable":true,"type":"object","properties":{"monitorId":{"type":"string"},"lastCheckedAt":{"nullable":true,"type":"string","format":"date-time"},"nextCheckAt":{"nullable":true,"type":"string","format":"date-time"}},"required":["monitorId","lastCheckedAt","nextCheckAt"],"additionalProperties":false,"description":"A vigília que a conta já mantém sobre o processo: quando olhou pela última vez e quando olha de novo. Só para a chave que lê monitores (`MONITORS_READ`); nulo sem vigília."},"process":{"description":"A ficha entregue, na visão `PROCESS`, enquanto o resultado vale, com as instâncias do número em `instances`, como na leitura direta. Lida da consulta, ela passa de novo pelo controle de confidencialidade.","type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"djen":{"nullable":true,"type":"object","properties":{"publicationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"latestPublicationAt":{"nullable":true,"type":"string","format":"date-time"},"latestPublicationType":{"nullable":true,"type":"string"},"latestPublicationExcerpt":{"nullable":true,"type":"string","maxLength":12000},"latestPublicationUrl":{"nullable":true,"type":"string"}},"required":["publicationCount"],"additionalProperties":false},"instances":{"description":"Todos os documentos que o motor guarda deste número — em geral um por instância (1º grau, 2º grau, turma recursal…), às vezes dois do mesmo grau —, a principal primeiro, depois os que a fonte ainda traz e por fim os que ela deixou de trazer. O topo da resposta é a principal. Cada um leva a classificação do número inteiro: basta um documento em segredo de justiça para todos saírem marcados. Ausente na ficha que o controle de confidencialidade entrega retida, sem o teor.","type":"array","items":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"primary":{"type":"boolean","description":"A instância principal do número, a que o topo da resposta serve. É a mesma de uma leitura para a outra e só muda quando uma resposta completa da fonte pelo número deixa de trazê-la."},"origin":{"type":"string","enum":["SOURCE","LAKE"],"description":"`SOURCE`: veio da fonte nesta resposta. `LAKE`: servida do que o acervo guarda — a fonte não a trouxe nesta resposta, ou a resposta inteira saiu do acervo."},"fetchedAt":{"description":"Quando os dados desta instância foram buscados na fonte. No retrato, com os movimentos servidos do acervo, é a data da captura deles.","type":"string","format":"date-time"},"absentSince":{"nullable":true,"description":"Desde quando a resposta completa da fonte pelo número vem sem este documento; nulo enquanto ela o traz.","type":"string","format":"date-time"}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects","primary","origin","fetchedAt","absentSince"],"additionalProperties":false}}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects"],"additionalProperties":false},"snapshot":{"description":"O retrato entregue, na visão `SNAPSHOT`, enquanto o resultado vale: a instância principal no topo e cada instância do número em `instances`, como na leitura direta. Lido da consulta, ele é composto do que o acervo guarda da última captura de cada instância, e `sourcePayload` é nulo: o documento bruto da fonte não é guardado.","type":"object","properties":{"process":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"djen":{"nullable":true,"type":"object","properties":{"publicationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"latestPublicationAt":{"nullable":true,"type":"string","format":"date-time"},"latestPublicationType":{"nullable":true,"type":"string"},"latestPublicationExcerpt":{"nullable":true,"type":"string","maxLength":12000},"latestPublicationUrl":{"nullable":true,"type":"string"}},"required":["publicationCount"],"additionalProperties":false}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects"],"additionalProperties":false},"sourcePayload":{},"movements":{"type":"array","items":{"type":"object","properties":{"externalMovementKey":{"type":"string","minLength":12,"maxLength":64},"codigo":{"nullable":true,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"nome":{"type":"string","minLength":1,"maxLength":240},"dataHora":{"nullable":true,"type":"string","format":"date-time"},"complementos":{},"rawPayload":{}},"required":["externalMovementKey","nome","complementos","rawPayload"],"additionalProperties":false}},"instances":{"type":"array","items":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"primary":{"type":"boolean","description":"A instância principal do número, a que o topo da resposta serve. É a mesma de uma leitura para a outra e só muda quando uma resposta completa da fonte pelo número deixa de trazê-la."},"origin":{"type":"string","enum":["SOURCE","LAKE"],"description":"`SOURCE`: veio da fonte nesta resposta. `LAKE`: servida do que o acervo guarda — a fonte não a trouxe nesta resposta, ou a resposta inteira saiu do acervo."},"fetchedAt":{"description":"Quando os dados desta instância foram buscados na fonte. No retrato, com os movimentos servidos do acervo, é a data da captura deles.","type":"string","format":"date-time"},"absentSince":{"nullable":true,"description":"Desde quando a resposta completa da fonte pelo número vem sem este documento; nulo enquanto ela o traz.","type":"string","format":"date-time"},"movementsCaptured":{"type":"boolean","description":"Se o motor guarda os movimentos desta instância. Falso quando eles nunca foram capturados — o documento só veio numa ficha ou numa busca — ou quando o acervo já não guarda algum deles, e aí `movements` e `movementCount` são nulos."},"movementCount":{"nullable":true,"description":"Quantos movimentos a última captura desta instância trouxe; nulo quando eles nunca foram capturados.","type":"integer","minimum":0,"maximum":9007199254740991},"movements":{"nullable":true,"description":"Os movimentos da última captura desta instância, do mais recente ao mais antigo, sem o payload bruto da fonte; nulo quando eles nunca foram capturados.","type":"array","items":{"type":"object","properties":{"externalMovementKey":{"type":"string","minLength":12,"maxLength":64},"codigo":{"nullable":true,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"nome":{"type":"string","minLength":1,"maxLength":240},"dataHora":{"nullable":true,"type":"string","format":"date-time"},"complementos":{}},"required":["externalMovementKey","nome","complementos"],"additionalProperties":false}}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects","primary","origin","fetchedAt","absentSince","movementsCaptured","movementCount","movements"],"additionalProperties":false},"description":"Todos os documentos que o motor guarda deste número — em geral um por instância (1º grau, 2º grau, turma recursal…), às vezes dois do mesmo grau —, a principal primeiro, depois os que a fonte ainda traz e por fim os que ela deixou de trazer. O topo da resposta é a principal. Cada um leva a classificação do número inteiro: basta um documento em segredo de justiça para todos saírem marcados. `process` e `movements` são os da principal, e cada instância traz os movimentos dela."}},"required":["process","sourcePayload","movements","instances"],"additionalProperties":false},"stale":{"type":"object","properties":{"process":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"djen":{"nullable":true,"type":"object","properties":{"publicationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"latestPublicationAt":{"nullable":true,"type":"string","format":"date-time"},"latestPublicationType":{"nullable":true,"type":"string"},"latestPublicationExcerpt":{"nullable":true,"type":"string","maxLength":12000},"latestPublicationUrl":{"nullable":true,"type":"string"}},"required":["publicationCount"],"additionalProperties":false},"instances":{"description":"Todos os documentos que o motor guarda deste número — em geral um por instância (1º grau, 2º grau, turma recursal…), às vezes dois do mesmo grau —, a principal primeiro, depois os que a fonte ainda traz e por fim os que ela deixou de trazer. O topo da resposta é a principal. Cada um leva a classificação do número inteiro: basta um documento em segredo de justiça para todos saírem marcados. Ausente na ficha que o controle de confidencialidade entrega retida, sem o teor.","type":"array","items":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"primary":{"type":"boolean","description":"A instância principal do número, a que o topo da resposta serve. É a mesma de uma leitura para a outra e só muda quando uma resposta completa da fonte pelo número deixa de trazê-la."},"origin":{"type":"string","enum":["SOURCE","LAKE"],"description":"`SOURCE`: veio da fonte nesta resposta. `LAKE`: servida do que o acervo guarda — a fonte não a trouxe nesta resposta, ou a resposta inteira saiu do acervo."},"fetchedAt":{"description":"Quando os dados desta instância foram buscados na fonte. No retrato, com os movimentos servidos do acervo, é a data da captura deles.","type":"string","format":"date-time"},"absentSince":{"nullable":true,"description":"Desde quando a resposta completa da fonte pelo número vem sem este documento; nulo enquanto ela o traz.","type":"string","format":"date-time"}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects","primary","origin","fetchedAt","absentSince"],"additionalProperties":false}}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects"],"additionalProperties":false},"snapshot":{"type":"object","properties":{"process":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"djen":{"nullable":true,"type":"object","properties":{"publicationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"latestPublicationAt":{"nullable":true,"type":"string","format":"date-time"},"latestPublicationType":{"nullable":true,"type":"string"},"latestPublicationExcerpt":{"nullable":true,"type":"string","maxLength":12000},"latestPublicationUrl":{"nullable":true,"type":"string"}},"required":["publicationCount"],"additionalProperties":false}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects"],"additionalProperties":false},"sourcePayload":{},"movements":{"type":"array","items":{"type":"object","properties":{"externalMovementKey":{"type":"string","minLength":12,"maxLength":64},"codigo":{"nullable":true,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"nome":{"type":"string","minLength":1,"maxLength":240},"dataHora":{"nullable":true,"type":"string","format":"date-time"},"complementos":{},"rawPayload":{}},"required":["externalMovementKey","nome","complementos","rawPayload"],"additionalProperties":false}},"instances":{"type":"array","items":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"primary":{"type":"boolean","description":"A instância principal do número, a que o topo da resposta serve. É a mesma de uma leitura para a outra e só muda quando uma resposta completa da fonte pelo número deixa de trazê-la."},"origin":{"type":"string","enum":["SOURCE","LAKE"],"description":"`SOURCE`: veio da fonte nesta resposta. `LAKE`: servida do que o acervo guarda — a fonte não a trouxe nesta resposta, ou a resposta inteira saiu do acervo."},"fetchedAt":{"description":"Quando os dados desta instância foram buscados na fonte. No retrato, com os movimentos servidos do acervo, é a data da captura deles.","type":"string","format":"date-time"},"absentSince":{"nullable":true,"description":"Desde quando a resposta completa da fonte pelo número vem sem este documento; nulo enquanto ela o traz.","type":"string","format":"date-time"},"movementsCaptured":{"type":"boolean","description":"Se o motor guarda os movimentos desta instância. Falso quando eles nunca foram capturados — o documento só veio numa ficha ou numa busca — ou quando o acervo já não guarda algum deles, e aí `movements` e `movementCount` são nulos."},"movementCount":{"nullable":true,"description":"Quantos movimentos a última captura desta instância trouxe; nulo quando eles nunca foram capturados.","type":"integer","minimum":0,"maximum":9007199254740991},"movements":{"nullable":true,"description":"Os movimentos da última captura desta instância, do mais recente ao mais antigo, sem o payload bruto da fonte; nulo quando eles nunca foram capturados.","type":"array","items":{"type":"object","properties":{"externalMovementKey":{"type":"string","minLength":12,"maxLength":64},"codigo":{"nullable":true,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"nome":{"type":"string","minLength":1,"maxLength":240},"dataHora":{"nullable":true,"type":"string","format":"date-time"},"complementos":{}},"required":["externalMovementKey","nome","complementos"],"additionalProperties":false}}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects","primary","origin","fetchedAt","absentSince","movementsCaptured","movementCount","movements"],"additionalProperties":false},"description":"Todos os documentos que o motor guarda deste número — em geral um por instância (1º grau, 2º grau, turma recursal…), às vezes dois do mesmo grau —, a principal primeiro, depois os que a fonte ainda traz e por fim os que ela deixou de trazer. O topo da resposta é a principal. Cada um leva a classificação do número inteiro: basta um documento em segredo de justiça para todos saírem marcados. `process` e `movements` são os da principal, e cada instância traz os movimentos dela."}},"required":["process","sourcePayload","movements","instances"],"additionalProperties":false},"sourceFetchedAt":{"description":"Quando a cópia foi buscada na fonte.","type":"string","format":"date-time"},"cause":{"type":"string","enum":["UPSTREAM_TIMEOUT","UPSTREAM_UNAVAILABLE","UPSTREAM_RATE_LIMITED"],"description":"Por que a fonte não entregou nesta chamada."}},"required":["sourceFetchedAt","cause"],"additionalProperties":false,"description":"Presente só no 202 de uma chamada com `staleOnFailure: true`: a cópia que o acervo guarda, com a data, na visão pedida. Movimentos posteriores a essa data podem existir e não estão nela; é a versão atual que a consulta segue buscando."}},"required":["lookupId","status","view","tribunalAlias","processNumber","pollUrl","deduped","creditsReserved","alreadyCharged","attempts","nextAttemptAt","giveUpAt","lastAttempt","satisfiedBy","creditsCharged","creditsRefunded","error","createdAt","finishedAt","resultExpiresAt","resultExpired","monitor"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"},"sourceFetchedAt":{"description":"Quando os dados servidos foram buscados na fonte: agora, se ela respondeu; antes, se vieram do acervo. No retrato socorrido pelo acervo, é a data da captura dos movimentos servidos. Ausente na ficha que o controle de confidencialidade entrega retida, sem o teor.","type":"string","format":"date-time"},"lakeRescue":{"type":"object","properties":{"cause":{"type":"string","enum":["UPSTREAM_TIMEOUT","UPSTREAM_UNAVAILABLE","UPSTREAM_RATE_LIMITED"],"description":"Por que a fonte não entregou: `UPSTREAM_TIMEOUT` (não respondeu dentro da espera), `UPSTREAM_UNAVAILABLE` (indisponível, ou respondeu com parte do índice sem poder servir o processo) ou `UPSTREAM_RATE_LIMITED` (pediu para esperar por volume)."},"retryAfterSeconds":{"description":"A espera que a fonte pediu: não consulte a fonte de novo antes dela.","type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991}},"required":["cause"],"additionalProperties":false,"description":"Presente só quando a fonte processual falhou e o motor serviu a cópia que o acervo guarda do processo. A data da cópia está em `meta.sourceFetchedAt`; movimentos posteriores a ela podem existir e não estão na resposta."},"partialIndex":{"type":"object","properties":{"shardsFailed":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Partes do índice da fonte que não responderam."},"shardsTotal":{"nullable":true,"description":"Total de partes do índice; nulo quando a fonte não as contou.","type":"integer","minimum":0,"maximum":9007199254740991},"timedOut":{"type":"boolean","description":"A fonte estourou o próprio prazo interno e devolveu só o que deu tempo de olhar."}},"required":["shardsFailed","shardsTotal","timedOut"],"additionalProperties":false,"description":"Presente só quando a fonte respondeu com parte do índice e o processo estava na parte que respondeu: o documento que o acervo já guardava e não veio sai em `instances` do acervo (`origin: LAKE`), e outra instância que o acervo não conhece, se existir, pode não ter vindo."},"otherInstances":{"type":"array","items":{"type":"object","properties":{"grau":{"nullable":true,"description":"O grau deste documento na fonte: G1, G2, JE, TR…","type":"string"},"updatedAt":{"nullable":true,"description":"Quando a fonte atualizou este documento pela última vez.","type":"string","format":"date-time"},"courtBody":{"description":"O órgão julgador deste documento, quando a fonte o traz.","type":"string"}},"required":["grau","updatedAt"],"additionalProperties":false},"description":"Presente só quando a resposta da fonte trouxe outros documentos do número além da instância principal, que é o topo de `data` (com o grau em `degree`) — em geral de instâncias diferentes, mas dois podem ter o mesmo `grau`. O motor guarda cada documento na sua instância e serve todos em `data.instances`; esta lista é o resumo dos outros que vieram na mesma resposta. Não inclui documento que o motor classificaria como segredo de justiça, e não aparece quando o processo servido é restrito."}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"202":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"lookupId":{"nullable":true,"description":"O id da consulta; nulo quando a leitura coube na espera e nenhuma consulta foi aberta.","type":"string"},"status":{"type":"string","enum":["QUEUED","LEASED","SUCCEEDED","FAILED","CANCELED"]},"view":{"type":"string","enum":["PROCESS","SNAPSHOT"],"description":"O que ler: `PROCESS`, a ficha do processo (a mesma de `GET /v1/processes/{processNumber}`), ou `SNAPSHOT`, o retrato com os movimentos (o de `GET /v1/processes/{processNumber}/snapshot`)."},"tribunalAlias":{"type":"string"},"processNumber":{"type":"string","description":"O número do processo, só os 20 dígitos."},"pollUrl":{"nullable":true,"description":"Onde a consulta é lida, sem nova cobrança; nulo sem consulta aberta.","type":"string"},"deduped":{"type":"boolean","description":"A chamada reencontrou a consulta já aberta para a mesma conta, escritório, processo e visão, em vez de abrir outra."},"creditsReserved":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Créditos retidos pela consulta: o máximo que a entrega cobra, só se o processo vier — a ficha que outra leitura trouxe ao acervo cobra menos. Enquanto isso, a retenção conta no saldo e no teto diário da chave que abriu a consulta."},"alreadyCharged":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"O que a mesma compra já cobrou fora da consulta: a cópia guardada entregue em `stale`. A entrega cobra o preço da leitura menos isto."},"attempts":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Idas à fonte até aqui, a leitura que abriu a consulta incluída."},"nextAttemptAt":{"nullable":true,"description":"Quando a próxima tentativa sai; nulo na consulta terminada e enquanto uma tentativa está em curso. A hora que já passou é a da tentativa esperando a vez na fila. Ler a consulta antes da hora futura devolve o mesmo estado.","type":"string","format":"date-time"},"giveUpAt":{"nullable":true,"description":"Até quando a consulta tenta; depois, termina sem o processo e devolve a retenção. Nulo sem consulta aberta.","type":"string","format":"date-time"},"lastAttempt":{"nullable":true,"type":"object","properties":{"at":{"type":"string","format":"date-time"},"code":{"type":"string","enum":["UPSTREAM_TIMEOUT","UPSTREAM_UNAVAILABLE","UPSTREAM_RATE_LIMITED"]},"retryable":{"type":"boolean"}},"required":["at","code","retryable"],"additionalProperties":false,"description":"A última ida à fonte que não entregou: quando, e por quê — `UPSTREAM_TIMEOUT` (não respondeu dentro da espera), `UPSTREAM_UNAVAILABLE` (indisponível, ou respondeu com parte do índice sem o processo) ou `UPSTREAM_RATE_LIMITED` (pediu para esperar por volume)."},"satisfiedBy":{"nullable":true,"description":"Quem entregou: `SOURCE`, uma tentativa na fonte; `LAKE`, o acervo, que outra leitura atualizou depois de a consulta abrir; `DIRECT_READ`, uma leitura sua do mesmo processo, que entregou e cobrou antes — a consulta fecha sem cobrar. Nulo enquanto não houve entrega.","type":"string","enum":["SOURCE","LAKE","DIRECT_READ"]},"creditsCharged":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"creditsRefunded":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"error":{"nullable":true,"type":"object","properties":{"class":{"type":"string","enum":["RETRYABLE","TERMINAL"]},"code":{"type":"string"},"message":{"type":"string","description":"O texto público fixo do código, o mesmo em toda consulta."},"retryable":{"type":"boolean"},"upstreamStatus":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["class","code","message","retryable"],"additionalProperties":false,"description":"Por que a consulta terminou sem o processo: o código da taxonomia de erros, como a leitura síncrona o daria."},"createdAt":{"type":"string","format":"date-time"},"finishedAt":{"nullable":true,"type":"string","format":"date-time"},"resultExpiresAt":{"nullable":true,"description":"Até quando o processo entregue é lido nesta consulta sem nova cobrança: 24 h depois da entrega.","type":"string","format":"date-time"},"resultExpired":{"type":"boolean","description":"O processo entregue já não é lido aqui: o prazo passou, ou o acervo já não sustenta a cópia. Uma leitura nova o traz."},"monitor":{"nullable":true,"type":"object","properties":{"monitorId":{"type":"string"},"lastCheckedAt":{"nullable":true,"type":"string","format":"date-time"},"nextCheckAt":{"nullable":true,"type":"string","format":"date-time"}},"required":["monitorId","lastCheckedAt","nextCheckAt"],"additionalProperties":false,"description":"A vigília que a conta já mantém sobre o processo: quando olhou pela última vez e quando olha de novo. Só para a chave que lê monitores (`MONITORS_READ`); nulo sem vigília."},"process":{"description":"A ficha entregue, na visão `PROCESS`, enquanto o resultado vale, com as instâncias do número em `instances`, como na leitura direta. Lida da consulta, ela passa de novo pelo controle de confidencialidade.","type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"djen":{"nullable":true,"type":"object","properties":{"publicationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"latestPublicationAt":{"nullable":true,"type":"string","format":"date-time"},"latestPublicationType":{"nullable":true,"type":"string"},"latestPublicationExcerpt":{"nullable":true,"type":"string","maxLength":12000},"latestPublicationUrl":{"nullable":true,"type":"string"}},"required":["publicationCount"],"additionalProperties":false},"instances":{"description":"Todos os documentos que o motor guarda deste número — em geral um por instância (1º grau, 2º grau, turma recursal…), às vezes dois do mesmo grau —, a principal primeiro, depois os que a fonte ainda traz e por fim os que ela deixou de trazer. O topo da resposta é a principal. Cada um leva a classificação do número inteiro: basta um documento em segredo de justiça para todos saírem marcados. Ausente na ficha que o controle de confidencialidade entrega retida, sem o teor.","type":"array","items":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"primary":{"type":"boolean","description":"A instância principal do número, a que o topo da resposta serve. É a mesma de uma leitura para a outra e só muda quando uma resposta completa da fonte pelo número deixa de trazê-la."},"origin":{"type":"string","enum":["SOURCE","LAKE"],"description":"`SOURCE`: veio da fonte nesta resposta. `LAKE`: servida do que o acervo guarda — a fonte não a trouxe nesta resposta, ou a resposta inteira saiu do acervo."},"fetchedAt":{"description":"Quando os dados desta instância foram buscados na fonte. No retrato, com os movimentos servidos do acervo, é a data da captura deles.","type":"string","format":"date-time"},"absentSince":{"nullable":true,"description":"Desde quando a resposta completa da fonte pelo número vem sem este documento; nulo enquanto ela o traz.","type":"string","format":"date-time"}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects","primary","origin","fetchedAt","absentSince"],"additionalProperties":false}}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects"],"additionalProperties":false},"snapshot":{"description":"O retrato entregue, na visão `SNAPSHOT`, enquanto o resultado vale: a instância principal no topo e cada instância do número em `instances`, como na leitura direta. Lido da consulta, ele é composto do que o acervo guarda da última captura de cada instância, e `sourcePayload` é nulo: o documento bruto da fonte não é guardado.","type":"object","properties":{"process":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"djen":{"nullable":true,"type":"object","properties":{"publicationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"latestPublicationAt":{"nullable":true,"type":"string","format":"date-time"},"latestPublicationType":{"nullable":true,"type":"string"},"latestPublicationExcerpt":{"nullable":true,"type":"string","maxLength":12000},"latestPublicationUrl":{"nullable":true,"type":"string"}},"required":["publicationCount"],"additionalProperties":false}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects"],"additionalProperties":false},"sourcePayload":{},"movements":{"type":"array","items":{"type":"object","properties":{"externalMovementKey":{"type":"string","minLength":12,"maxLength":64},"codigo":{"nullable":true,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"nome":{"type":"string","minLength":1,"maxLength":240},"dataHora":{"nullable":true,"type":"string","format":"date-time"},"complementos":{},"rawPayload":{}},"required":["externalMovementKey","nome","complementos","rawPayload"],"additionalProperties":false}},"instances":{"type":"array","items":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"primary":{"type":"boolean","description":"A instância principal do número, a que o topo da resposta serve. É a mesma de uma leitura para a outra e só muda quando uma resposta completa da fonte pelo número deixa de trazê-la."},"origin":{"type":"string","enum":["SOURCE","LAKE"],"description":"`SOURCE`: veio da fonte nesta resposta. `LAKE`: servida do que o acervo guarda — a fonte não a trouxe nesta resposta, ou a resposta inteira saiu do acervo."},"fetchedAt":{"description":"Quando os dados desta instância foram buscados na fonte. No retrato, com os movimentos servidos do acervo, é a data da captura deles.","type":"string","format":"date-time"},"absentSince":{"nullable":true,"description":"Desde quando a resposta completa da fonte pelo número vem sem este documento; nulo enquanto ela o traz.","type":"string","format":"date-time"},"movementsCaptured":{"type":"boolean","description":"Se o motor guarda os movimentos desta instância. Falso quando eles nunca foram capturados — o documento só veio numa ficha ou numa busca — ou quando o acervo já não guarda algum deles, e aí `movements` e `movementCount` são nulos."},"movementCount":{"nullable":true,"description":"Quantos movimentos a última captura desta instância trouxe; nulo quando eles nunca foram capturados.","type":"integer","minimum":0,"maximum":9007199254740991},"movements":{"nullable":true,"description":"Os movimentos da última captura desta instância, do mais recente ao mais antigo, sem o payload bruto da fonte; nulo quando eles nunca foram capturados.","type":"array","items":{"type":"object","properties":{"externalMovementKey":{"type":"string","minLength":12,"maxLength":64},"codigo":{"nullable":true,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"nome":{"type":"string","minLength":1,"maxLength":240},"dataHora":{"nullable":true,"type":"string","format":"date-time"},"complementos":{}},"required":["externalMovementKey","nome","complementos"],"additionalProperties":false}}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects","primary","origin","fetchedAt","absentSince","movementsCaptured","movementCount","movements"],"additionalProperties":false},"description":"Todos os documentos que o motor guarda deste número — em geral um por instância (1º grau, 2º grau, turma recursal…), às vezes dois do mesmo grau —, a principal primeiro, depois os que a fonte ainda traz e por fim os que ela deixou de trazer. O topo da resposta é a principal. Cada um leva a classificação do número inteiro: basta um documento em segredo de justiça para todos saírem marcados. `process` e `movements` são os da principal, e cada instância traz os movimentos dela."}},"required":["process","sourcePayload","movements","instances"],"additionalProperties":false},"stale":{"type":"object","properties":{"process":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"djen":{"nullable":true,"type":"object","properties":{"publicationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"latestPublicationAt":{"nullable":true,"type":"string","format":"date-time"},"latestPublicationType":{"nullable":true,"type":"string"},"latestPublicationExcerpt":{"nullable":true,"type":"string","maxLength":12000},"latestPublicationUrl":{"nullable":true,"type":"string"}},"required":["publicationCount"],"additionalProperties":false},"instances":{"description":"Todos os documentos que o motor guarda deste número — em geral um por instância (1º grau, 2º grau, turma recursal…), às vezes dois do mesmo grau —, a principal primeiro, depois os que a fonte ainda traz e por fim os que ela deixou de trazer. O topo da resposta é a principal. Cada um leva a classificação do número inteiro: basta um documento em segredo de justiça para todos saírem marcados. Ausente na ficha que o controle de confidencialidade entrega retida, sem o teor.","type":"array","items":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"primary":{"type":"boolean","description":"A instância principal do número, a que o topo da resposta serve. É a mesma de uma leitura para a outra e só muda quando uma resposta completa da fonte pelo número deixa de trazê-la."},"origin":{"type":"string","enum":["SOURCE","LAKE"],"description":"`SOURCE`: veio da fonte nesta resposta. `LAKE`: servida do que o acervo guarda — a fonte não a trouxe nesta resposta, ou a resposta inteira saiu do acervo."},"fetchedAt":{"description":"Quando os dados desta instância foram buscados na fonte. No retrato, com os movimentos servidos do acervo, é a data da captura deles.","type":"string","format":"date-time"},"absentSince":{"nullable":true,"description":"Desde quando a resposta completa da fonte pelo número vem sem este documento; nulo enquanto ela o traz.","type":"string","format":"date-time"}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects","primary","origin","fetchedAt","absentSince"],"additionalProperties":false}}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects"],"additionalProperties":false},"snapshot":{"type":"object","properties":{"process":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"djen":{"nullable":true,"type":"object","properties":{"publicationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"latestPublicationAt":{"nullable":true,"type":"string","format":"date-time"},"latestPublicationType":{"nullable":true,"type":"string"},"latestPublicationExcerpt":{"nullable":true,"type":"string","maxLength":12000},"latestPublicationUrl":{"nullable":true,"type":"string"}},"required":["publicationCount"],"additionalProperties":false}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects"],"additionalProperties":false},"sourcePayload":{},"movements":{"type":"array","items":{"type":"object","properties":{"externalMovementKey":{"type":"string","minLength":12,"maxLength":64},"codigo":{"nullable":true,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"nome":{"type":"string","minLength":1,"maxLength":240},"dataHora":{"nullable":true,"type":"string","format":"date-time"},"complementos":{},"rawPayload":{}},"required":["externalMovementKey","nome","complementos","rawPayload"],"additionalProperties":false}},"instances":{"type":"array","items":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"primary":{"type":"boolean","description":"A instância principal do número, a que o topo da resposta serve. É a mesma de uma leitura para a outra e só muda quando uma resposta completa da fonte pelo número deixa de trazê-la."},"origin":{"type":"string","enum":["SOURCE","LAKE"],"description":"`SOURCE`: veio da fonte nesta resposta. `LAKE`: servida do que o acervo guarda — a fonte não a trouxe nesta resposta, ou a resposta inteira saiu do acervo."},"fetchedAt":{"description":"Quando os dados desta instância foram buscados na fonte. No retrato, com os movimentos servidos do acervo, é a data da captura deles.","type":"string","format":"date-time"},"absentSince":{"nullable":true,"description":"Desde quando a resposta completa da fonte pelo número vem sem este documento; nulo enquanto ela o traz.","type":"string","format":"date-time"},"movementsCaptured":{"type":"boolean","description":"Se o motor guarda os movimentos desta instância. Falso quando eles nunca foram capturados — o documento só veio numa ficha ou numa busca — ou quando o acervo já não guarda algum deles, e aí `movements` e `movementCount` são nulos."},"movementCount":{"nullable":true,"description":"Quantos movimentos a última captura desta instância trouxe; nulo quando eles nunca foram capturados.","type":"integer","minimum":0,"maximum":9007199254740991},"movements":{"nullable":true,"description":"Os movimentos da última captura desta instância, do mais recente ao mais antigo, sem o payload bruto da fonte; nulo quando eles nunca foram capturados.","type":"array","items":{"type":"object","properties":{"externalMovementKey":{"type":"string","minLength":12,"maxLength":64},"codigo":{"nullable":true,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"nome":{"type":"string","minLength":1,"maxLength":240},"dataHora":{"nullable":true,"type":"string","format":"date-time"},"complementos":{}},"required":["externalMovementKey","nome","complementos"],"additionalProperties":false}}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects","primary","origin","fetchedAt","absentSince","movementsCaptured","movementCount","movements"],"additionalProperties":false},"description":"Todos os documentos que o motor guarda deste número — em geral um por instância (1º grau, 2º grau, turma recursal…), às vezes dois do mesmo grau —, a principal primeiro, depois os que a fonte ainda traz e por fim os que ela deixou de trazer. O topo da resposta é a principal. Cada um leva a classificação do número inteiro: basta um documento em segredo de justiça para todos saírem marcados. `process` e `movements` são os da principal, e cada instância traz os movimentos dela."}},"required":["process","sourcePayload","movements","instances"],"additionalProperties":false},"sourceFetchedAt":{"description":"Quando a cópia foi buscada na fonte.","type":"string","format":"date-time"},"cause":{"type":"string","enum":["UPSTREAM_TIMEOUT","UPSTREAM_UNAVAILABLE","UPSTREAM_RATE_LIMITED"],"description":"Por que a fonte não entregou nesta chamada."}},"required":["sourceFetchedAt","cause"],"additionalProperties":false,"description":"Presente só no 202 de uma chamada com `staleOnFailure: true`: a cópia que o acervo guarda, com a data, na visão pedida. Movimentos posteriores a essa data podem existir e não estão nela; é a versão atual que a consulta segue buscando."}},"required":["lookupId","status","view","tribunalAlias","processNumber","pollUrl","deduped","creditsReserved","alreadyCharged","attempts","nextAttemptAt","giveUpAt","lastAttempt","satisfiedBy","creditsCharged","creditsRefunded","error","createdAt","finishedAt","resultExpiresAt","resultExpired","monitor"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"},"traceId":{"description":"O rastro da chamada, o mesmo do evento que a consulta emite.","type":"string"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"get":{"operationId":"listProcessLookups","summary":"Listar as consultas de processo em segundo plano","tags":["Processos"],"description":"Lista as consultas da conta, no recorte do escritório, da mais nova para a mais antiga, com paginação keyset. Só o que cada uma é: o processo fica atrás da leitura da consulta. Sem cobrança.\n\n**Escopo exigido na chave de API:** `PROCESSES_READ`","parameters":[{"schema":{"type":"string","enum":["QUEUED","LEASED","SUCCEEDED","FAILED","CANCELED"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"cursor","required":false},{"schema":{"default":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"lookupId":{"type":"string"},"status":{"type":"string","enum":["QUEUED","LEASED","SUCCEEDED","FAILED","CANCELED"]},"view":{"type":"string","enum":["PROCESS","SNAPSHOT"],"description":"O que ler: `PROCESS`, a ficha do processo (a mesma de `GET /v1/processes/{processNumber}`), ou `SNAPSHOT`, o retrato com os movimentos (o de `GET /v1/processes/{processNumber}/snapshot`)."},"tribunalAlias":{"type":"string"},"processNumber":{"type":"string","description":"O número do processo, só os 20 dígitos."},"pollUrl":{"type":"string","description":"Onde a consulta é lida, sem nova cobrança."},"deduped":{"type":"boolean","description":"A chamada reencontrou a consulta já aberta para a mesma conta, escritório, processo e visão, em vez de abrir outra."},"creditsReserved":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Créditos retidos pela consulta: o máximo que a entrega cobra, só se o processo vier — a ficha que outra leitura trouxe ao acervo cobra menos. Enquanto isso, a retenção conta no saldo e no teto diário da chave que abriu a consulta."},"alreadyCharged":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"O que a mesma compra já cobrou fora da consulta: a cópia guardada entregue em `stale`. A entrega cobra o preço da leitura menos isto."},"attempts":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Idas à fonte até aqui, a leitura que abriu a consulta incluída."},"nextAttemptAt":{"nullable":true,"description":"Quando a próxima tentativa sai; nulo na consulta terminada e enquanto uma tentativa está em curso. A hora que já passou é a da tentativa esperando a vez na fila. Ler a consulta antes da hora futura devolve o mesmo estado.","type":"string","format":"date-time"},"giveUpAt":{"description":"Até quando a consulta tenta; depois, termina sem o processo e devolve a retenção.","type":"string","format":"date-time"},"lastAttempt":{"nullable":true,"type":"object","properties":{"at":{"type":"string","format":"date-time"},"code":{"type":"string","enum":["UPSTREAM_TIMEOUT","UPSTREAM_UNAVAILABLE","UPSTREAM_RATE_LIMITED"]},"retryable":{"type":"boolean"}},"required":["at","code","retryable"],"additionalProperties":false,"description":"A última ida à fonte que não entregou: quando, e por quê — `UPSTREAM_TIMEOUT` (não respondeu dentro da espera), `UPSTREAM_UNAVAILABLE` (indisponível, ou respondeu com parte do índice sem o processo) ou `UPSTREAM_RATE_LIMITED` (pediu para esperar por volume)."},"satisfiedBy":{"nullable":true,"description":"Quem entregou: `SOURCE`, uma tentativa na fonte; `LAKE`, o acervo, que outra leitura atualizou depois de a consulta abrir; `DIRECT_READ`, uma leitura sua do mesmo processo, que entregou e cobrou antes — a consulta fecha sem cobrar. Nulo enquanto não houve entrega.","type":"string","enum":["SOURCE","LAKE","DIRECT_READ"]},"creditsCharged":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"creditsRefunded":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"error":{"nullable":true,"type":"object","properties":{"class":{"type":"string","enum":["RETRYABLE","TERMINAL"]},"code":{"type":"string"},"message":{"type":"string","description":"O texto público fixo do código, o mesmo em toda consulta."},"retryable":{"type":"boolean"},"upstreamStatus":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["class","code","message","retryable"],"additionalProperties":false,"description":"Por que a consulta terminou sem o processo: o código da taxonomia de erros, como a leitura síncrona o daria."},"createdAt":{"type":"string","format":"date-time"},"finishedAt":{"nullable":true,"type":"string","format":"date-time"},"resultExpiresAt":{"nullable":true,"description":"Até quando o processo entregue é lido nesta consulta sem nova cobrança: 24 h depois da entrega.","type":"string","format":"date-time"},"resultExpired":{"type":"boolean","description":"O processo entregue já não é lido aqui: o prazo passou, ou o acervo já não sustenta a cópia. Uma leitura nova o traz."}},"required":["lookupId","status","view","tribunalAlias","processNumber","pollUrl","deduped","creditsReserved","alreadyCharged","attempts","nextAttemptAt","giveUpAt","lastAttempt","satisfiedBy","creditsCharged","creditsRefunded","error","createdAt","finishedAt","resultExpiresAt","resultExpired"],"additionalProperties":false}},"nextCursor":{"nullable":true,"type":"string"}},"required":["items","nextCursor"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/processes/lookups/{lookupId}":{"get":{"operationId":"getProcessLookup","summary":"Ler uma consulta de processo em segundo plano","tags":["Processos"],"description":"Lê a consulta, sem cobrança. Aberta, diz a próxima tentativa (`nextAttemptAt`), até quando ela tenta (`giveUpAt`) e a última ida à fonte (`lastAttempt`). Entregue, traz o processo por 24 h depois da entrega (`resultExpiresAt`), relido do acervo e passado de novo pelo controle de confidencialidade de quem lê: o processo que passou a segredo de justiça depois da entrega responde 403, como a leitura direta. Depois disso, `resultExpired` e nenhum processo: uma leitura nova o traz. No retrato, `sourcePayload` é nulo. `meta.sourceFetchedAt` diz quando a cópia servida foi buscada na fonte. Terminada sem o processo, `error` diz o código e `creditsRefunded` a retenção devolvida. Consulta de outra conta ou de outro escritório responde 404 `PROCESS_LOOKUP_NOT_FOUND`, e a terminada também, 180 dias depois do desfecho.\n\n**Escopo exigido na chave de API:** `PROCESSES_READ`","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"lookupId","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"lookupId":{"nullable":true,"description":"O id da consulta; nulo quando a leitura coube na espera e nenhuma consulta foi aberta.","type":"string"},"status":{"type":"string","enum":["QUEUED","LEASED","SUCCEEDED","FAILED","CANCELED"]},"view":{"type":"string","enum":["PROCESS","SNAPSHOT"],"description":"O que ler: `PROCESS`, a ficha do processo (a mesma de `GET /v1/processes/{processNumber}`), ou `SNAPSHOT`, o retrato com os movimentos (o de `GET /v1/processes/{processNumber}/snapshot`)."},"tribunalAlias":{"type":"string"},"processNumber":{"type":"string","description":"O número do processo, só os 20 dígitos."},"pollUrl":{"nullable":true,"description":"Onde a consulta é lida, sem nova cobrança; nulo sem consulta aberta.","type":"string"},"deduped":{"type":"boolean","description":"A chamada reencontrou a consulta já aberta para a mesma conta, escritório, processo e visão, em vez de abrir outra."},"creditsReserved":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Créditos retidos pela consulta: o máximo que a entrega cobra, só se o processo vier — a ficha que outra leitura trouxe ao acervo cobra menos. Enquanto isso, a retenção conta no saldo e no teto diário da chave que abriu a consulta."},"alreadyCharged":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"O que a mesma compra já cobrou fora da consulta: a cópia guardada entregue em `stale`. A entrega cobra o preço da leitura menos isto."},"attempts":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Idas à fonte até aqui, a leitura que abriu a consulta incluída."},"nextAttemptAt":{"nullable":true,"description":"Quando a próxima tentativa sai; nulo na consulta terminada e enquanto uma tentativa está em curso. A hora que já passou é a da tentativa esperando a vez na fila. Ler a consulta antes da hora futura devolve o mesmo estado.","type":"string","format":"date-time"},"giveUpAt":{"nullable":true,"description":"Até quando a consulta tenta; depois, termina sem o processo e devolve a retenção. Nulo sem consulta aberta.","type":"string","format":"date-time"},"lastAttempt":{"nullable":true,"type":"object","properties":{"at":{"type":"string","format":"date-time"},"code":{"type":"string","enum":["UPSTREAM_TIMEOUT","UPSTREAM_UNAVAILABLE","UPSTREAM_RATE_LIMITED"]},"retryable":{"type":"boolean"}},"required":["at","code","retryable"],"additionalProperties":false,"description":"A última ida à fonte que não entregou: quando, e por quê — `UPSTREAM_TIMEOUT` (não respondeu dentro da espera), `UPSTREAM_UNAVAILABLE` (indisponível, ou respondeu com parte do índice sem o processo) ou `UPSTREAM_RATE_LIMITED` (pediu para esperar por volume)."},"satisfiedBy":{"nullable":true,"description":"Quem entregou: `SOURCE`, uma tentativa na fonte; `LAKE`, o acervo, que outra leitura atualizou depois de a consulta abrir; `DIRECT_READ`, uma leitura sua do mesmo processo, que entregou e cobrou antes — a consulta fecha sem cobrar. Nulo enquanto não houve entrega.","type":"string","enum":["SOURCE","LAKE","DIRECT_READ"]},"creditsCharged":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"creditsRefunded":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"error":{"nullable":true,"type":"object","properties":{"class":{"type":"string","enum":["RETRYABLE","TERMINAL"]},"code":{"type":"string"},"message":{"type":"string","description":"O texto público fixo do código, o mesmo em toda consulta."},"retryable":{"type":"boolean"},"upstreamStatus":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["class","code","message","retryable"],"additionalProperties":false,"description":"Por que a consulta terminou sem o processo: o código da taxonomia de erros, como a leitura síncrona o daria."},"createdAt":{"type":"string","format":"date-time"},"finishedAt":{"nullable":true,"type":"string","format":"date-time"},"resultExpiresAt":{"nullable":true,"description":"Até quando o processo entregue é lido nesta consulta sem nova cobrança: 24 h depois da entrega.","type":"string","format":"date-time"},"resultExpired":{"type":"boolean","description":"O processo entregue já não é lido aqui: o prazo passou, ou o acervo já não sustenta a cópia. Uma leitura nova o traz."},"monitor":{"nullable":true,"type":"object","properties":{"monitorId":{"type":"string"},"lastCheckedAt":{"nullable":true,"type":"string","format":"date-time"},"nextCheckAt":{"nullable":true,"type":"string","format":"date-time"}},"required":["monitorId","lastCheckedAt","nextCheckAt"],"additionalProperties":false,"description":"A vigília que a conta já mantém sobre o processo: quando olhou pela última vez e quando olha de novo. Só para a chave que lê monitores (`MONITORS_READ`); nulo sem vigília."},"process":{"description":"A ficha entregue, na visão `PROCESS`, enquanto o resultado vale, com as instâncias do número em `instances`, como na leitura direta. Lida da consulta, ela passa de novo pelo controle de confidencialidade.","type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"djen":{"nullable":true,"type":"object","properties":{"publicationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"latestPublicationAt":{"nullable":true,"type":"string","format":"date-time"},"latestPublicationType":{"nullable":true,"type":"string"},"latestPublicationExcerpt":{"nullable":true,"type":"string","maxLength":12000},"latestPublicationUrl":{"nullable":true,"type":"string"}},"required":["publicationCount"],"additionalProperties":false},"instances":{"description":"Todos os documentos que o motor guarda deste número — em geral um por instância (1º grau, 2º grau, turma recursal…), às vezes dois do mesmo grau —, a principal primeiro, depois os que a fonte ainda traz e por fim os que ela deixou de trazer. O topo da resposta é a principal. Cada um leva a classificação do número inteiro: basta um documento em segredo de justiça para todos saírem marcados. Ausente na ficha que o controle de confidencialidade entrega retida, sem o teor.","type":"array","items":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"primary":{"type":"boolean","description":"A instância principal do número, a que o topo da resposta serve. É a mesma de uma leitura para a outra e só muda quando uma resposta completa da fonte pelo número deixa de trazê-la."},"origin":{"type":"string","enum":["SOURCE","LAKE"],"description":"`SOURCE`: veio da fonte nesta resposta. `LAKE`: servida do que o acervo guarda — a fonte não a trouxe nesta resposta, ou a resposta inteira saiu do acervo."},"fetchedAt":{"description":"Quando os dados desta instância foram buscados na fonte. No retrato, com os movimentos servidos do acervo, é a data da captura deles.","type":"string","format":"date-time"},"absentSince":{"nullable":true,"description":"Desde quando a resposta completa da fonte pelo número vem sem este documento; nulo enquanto ela o traz.","type":"string","format":"date-time"}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects","primary","origin","fetchedAt","absentSince"],"additionalProperties":false}}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects"],"additionalProperties":false},"snapshot":{"description":"O retrato entregue, na visão `SNAPSHOT`, enquanto o resultado vale: a instância principal no topo e cada instância do número em `instances`, como na leitura direta. Lido da consulta, ele é composto do que o acervo guarda da última captura de cada instância, e `sourcePayload` é nulo: o documento bruto da fonte não é guardado.","type":"object","properties":{"process":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"djen":{"nullable":true,"type":"object","properties":{"publicationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"latestPublicationAt":{"nullable":true,"type":"string","format":"date-time"},"latestPublicationType":{"nullable":true,"type":"string"},"latestPublicationExcerpt":{"nullable":true,"type":"string","maxLength":12000},"latestPublicationUrl":{"nullable":true,"type":"string"}},"required":["publicationCount"],"additionalProperties":false}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects"],"additionalProperties":false},"sourcePayload":{},"movements":{"type":"array","items":{"type":"object","properties":{"externalMovementKey":{"type":"string","minLength":12,"maxLength":64},"codigo":{"nullable":true,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"nome":{"type":"string","minLength":1,"maxLength":240},"dataHora":{"nullable":true,"type":"string","format":"date-time"},"complementos":{},"rawPayload":{}},"required":["externalMovementKey","nome","complementos","rawPayload"],"additionalProperties":false}},"instances":{"type":"array","items":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"primary":{"type":"boolean","description":"A instância principal do número, a que o topo da resposta serve. É a mesma de uma leitura para a outra e só muda quando uma resposta completa da fonte pelo número deixa de trazê-la."},"origin":{"type":"string","enum":["SOURCE","LAKE"],"description":"`SOURCE`: veio da fonte nesta resposta. `LAKE`: servida do que o acervo guarda — a fonte não a trouxe nesta resposta, ou a resposta inteira saiu do acervo."},"fetchedAt":{"description":"Quando os dados desta instância foram buscados na fonte. No retrato, com os movimentos servidos do acervo, é a data da captura deles.","type":"string","format":"date-time"},"absentSince":{"nullable":true,"description":"Desde quando a resposta completa da fonte pelo número vem sem este documento; nulo enquanto ela o traz.","type":"string","format":"date-time"},"movementsCaptured":{"type":"boolean","description":"Se o motor guarda os movimentos desta instância. Falso quando eles nunca foram capturados — o documento só veio numa ficha ou numa busca — ou quando o acervo já não guarda algum deles, e aí `movements` e `movementCount` são nulos."},"movementCount":{"nullable":true,"description":"Quantos movimentos a última captura desta instância trouxe; nulo quando eles nunca foram capturados.","type":"integer","minimum":0,"maximum":9007199254740991},"movements":{"nullable":true,"description":"Os movimentos da última captura desta instância, do mais recente ao mais antigo, sem o payload bruto da fonte; nulo quando eles nunca foram capturados.","type":"array","items":{"type":"object","properties":{"externalMovementKey":{"type":"string","minLength":12,"maxLength":64},"codigo":{"nullable":true,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"nome":{"type":"string","minLength":1,"maxLength":240},"dataHora":{"nullable":true,"type":"string","format":"date-time"},"complementos":{}},"required":["externalMovementKey","nome","complementos"],"additionalProperties":false}}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects","primary","origin","fetchedAt","absentSince","movementsCaptured","movementCount","movements"],"additionalProperties":false},"description":"Todos os documentos que o motor guarda deste número — em geral um por instância (1º grau, 2º grau, turma recursal…), às vezes dois do mesmo grau —, a principal primeiro, depois os que a fonte ainda traz e por fim os que ela deixou de trazer. O topo da resposta é a principal. Cada um leva a classificação do número inteiro: basta um documento em segredo de justiça para todos saírem marcados. `process` e `movements` são os da principal, e cada instância traz os movimentos dela."}},"required":["process","sourcePayload","movements","instances"],"additionalProperties":false},"stale":{"type":"object","properties":{"process":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"djen":{"nullable":true,"type":"object","properties":{"publicationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"latestPublicationAt":{"nullable":true,"type":"string","format":"date-time"},"latestPublicationType":{"nullable":true,"type":"string"},"latestPublicationExcerpt":{"nullable":true,"type":"string","maxLength":12000},"latestPublicationUrl":{"nullable":true,"type":"string"}},"required":["publicationCount"],"additionalProperties":false},"instances":{"description":"Todos os documentos que o motor guarda deste número — em geral um por instância (1º grau, 2º grau, turma recursal…), às vezes dois do mesmo grau —, a principal primeiro, depois os que a fonte ainda traz e por fim os que ela deixou de trazer. O topo da resposta é a principal. Cada um leva a classificação do número inteiro: basta um documento em segredo de justiça para todos saírem marcados. Ausente na ficha que o controle de confidencialidade entrega retida, sem o teor.","type":"array","items":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"primary":{"type":"boolean","description":"A instância principal do número, a que o topo da resposta serve. É a mesma de uma leitura para a outra e só muda quando uma resposta completa da fonte pelo número deixa de trazê-la."},"origin":{"type":"string","enum":["SOURCE","LAKE"],"description":"`SOURCE`: veio da fonte nesta resposta. `LAKE`: servida do que o acervo guarda — a fonte não a trouxe nesta resposta, ou a resposta inteira saiu do acervo."},"fetchedAt":{"description":"Quando os dados desta instância foram buscados na fonte. No retrato, com os movimentos servidos do acervo, é a data da captura deles.","type":"string","format":"date-time"},"absentSince":{"nullable":true,"description":"Desde quando a resposta completa da fonte pelo número vem sem este documento; nulo enquanto ela o traz.","type":"string","format":"date-time"}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects","primary","origin","fetchedAt","absentSince"],"additionalProperties":false}}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects"],"additionalProperties":false},"snapshot":{"type":"object","properties":{"process":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"djen":{"nullable":true,"type":"object","properties":{"publicationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"latestPublicationAt":{"nullable":true,"type":"string","format":"date-time"},"latestPublicationType":{"nullable":true,"type":"string"},"latestPublicationExcerpt":{"nullable":true,"type":"string","maxLength":12000},"latestPublicationUrl":{"nullable":true,"type":"string"}},"required":["publicationCount"],"additionalProperties":false}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects"],"additionalProperties":false},"sourcePayload":{},"movements":{"type":"array","items":{"type":"object","properties":{"externalMovementKey":{"type":"string","minLength":12,"maxLength":64},"codigo":{"nullable":true,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"nome":{"type":"string","minLength":1,"maxLength":240},"dataHora":{"nullable":true,"type":"string","format":"date-time"},"complementos":{},"rawPayload":{}},"required":["externalMovementKey","nome","complementos","rawPayload"],"additionalProperties":false}},"instances":{"type":"array","items":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"primary":{"type":"boolean","description":"A instância principal do número, a que o topo da resposta serve. É a mesma de uma leitura para a outra e só muda quando uma resposta completa da fonte pelo número deixa de trazê-la."},"origin":{"type":"string","enum":["SOURCE","LAKE"],"description":"`SOURCE`: veio da fonte nesta resposta. `LAKE`: servida do que o acervo guarda — a fonte não a trouxe nesta resposta, ou a resposta inteira saiu do acervo."},"fetchedAt":{"description":"Quando os dados desta instância foram buscados na fonte. No retrato, com os movimentos servidos do acervo, é a data da captura deles.","type":"string","format":"date-time"},"absentSince":{"nullable":true,"description":"Desde quando a resposta completa da fonte pelo número vem sem este documento; nulo enquanto ela o traz.","type":"string","format":"date-time"},"movementsCaptured":{"type":"boolean","description":"Se o motor guarda os movimentos desta instância. Falso quando eles nunca foram capturados — o documento só veio numa ficha ou numa busca — ou quando o acervo já não guarda algum deles, e aí `movements` e `movementCount` são nulos."},"movementCount":{"nullable":true,"description":"Quantos movimentos a última captura desta instância trouxe; nulo quando eles nunca foram capturados.","type":"integer","minimum":0,"maximum":9007199254740991},"movements":{"nullable":true,"description":"Os movimentos da última captura desta instância, do mais recente ao mais antigo, sem o payload bruto da fonte; nulo quando eles nunca foram capturados.","type":"array","items":{"type":"object","properties":{"externalMovementKey":{"type":"string","minLength":12,"maxLength":64},"codigo":{"nullable":true,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"nome":{"type":"string","minLength":1,"maxLength":240},"dataHora":{"nullable":true,"type":"string","format":"date-time"},"complementos":{}},"required":["externalMovementKey","nome","complementos"],"additionalProperties":false}}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects","primary","origin","fetchedAt","absentSince","movementsCaptured","movementCount","movements"],"additionalProperties":false},"description":"Todos os documentos que o motor guarda deste número — em geral um por instância (1º grau, 2º grau, turma recursal…), às vezes dois do mesmo grau —, a principal primeiro, depois os que a fonte ainda traz e por fim os que ela deixou de trazer. O topo da resposta é a principal. Cada um leva a classificação do número inteiro: basta um documento em segredo de justiça para todos saírem marcados. `process` e `movements` são os da principal, e cada instância traz os movimentos dela."}},"required":["process","sourcePayload","movements","instances"],"additionalProperties":false},"sourceFetchedAt":{"description":"Quando a cópia foi buscada na fonte.","type":"string","format":"date-time"},"cause":{"type":"string","enum":["UPSTREAM_TIMEOUT","UPSTREAM_UNAVAILABLE","UPSTREAM_RATE_LIMITED"],"description":"Por que a fonte não entregou nesta chamada."}},"required":["sourceFetchedAt","cause"],"additionalProperties":false,"description":"Presente só no 202 de uma chamada com `staleOnFailure: true`: a cópia que o acervo guarda, com a data, na visão pedida. Movimentos posteriores a essa data podem existir e não estão nela; é a versão atual que a consulta segue buscando."}},"required":["lookupId","status","view","tribunalAlias","processNumber","pollUrl","deduped","creditsReserved","alreadyCharged","attempts","nextAttemptAt","giveUpAt","lastAttempt","satisfiedBy","creditsCharged","creditsRefunded","error","createdAt","finishedAt","resultExpiresAt","resultExpired","monitor"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"},"sourceFetchedAt":{"description":"Quando os dados servidos foram buscados na fonte: agora, se ela respondeu; antes, se vieram do acervo. No retrato socorrido pelo acervo, é a data da captura dos movimentos servidos. Ausente na ficha que o controle de confidencialidade entrega retida, sem o teor.","type":"string","format":"date-time"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/processes/lookups/{lookupId}/cancel":{"post":{"operationId":"cancelProcessLookup","summary":"Cancelar uma consulta de processo em segundo plano","tags":["Processos"],"description":"Cancela uma consulta aberta da própria conta e escritório e devolve a retenção na mesma chamada; `refunded` diz se a devolução aconteceu AQUI, porque uma entrega em corrida pode já tê-la consumido. O que a mesma compra já cobrou pela cópia em `stale` fica cobrado: a cópia foi entregue. O cancelamento não gera `PROCESS_LOOKUP_COMPLETED`. Consulta terminada responde 409 `JOB_TERMINAL`; de outra conta, 404 `PROCESS_LOOKUP_NOT_FOUND`.\n\n**Escopo exigido na chave de API:** `PROCESSES_READ`","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"lookupId","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"lookupId":{"type":"string"},"canceled":{"type":"boolean","enum":[true]},"refunded":{"type":"boolean"}},"required":["lookupId","canceled","refunded"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/monitors":{"post":{"operationId":"createMonitor","summary":"Criar um monitor","tags":["Monitores"],"description":"Cria um monitor PROCESS, OAB, TERM, PARTY ou DOCUMENT. O motor varre as fontes na própria agenda: monitor OAB emite `PUBLICATION_CREATED` a cada publicação nova do advogado; monitor TERM vigia a edição diária do diário por um termo livre (mínimo 5 caracteres — piso da fonte —, casamento por palavra inteira, varredura nacional) e emite `PUBLICATION_CREATED` — com o campo `term` no payload — para cada menção compartilhável nova; monitor PARTY vigia pelo nome de parte no cadastro da publicação e emite `PUBLICATION_CREATED` com `partyName` e `partyRole`; monitor DOCUMENT vigia pelo CNPJ no TEOR (`partyDocument`, nos 14 dígitos ou pontuado — normalizado para a grafia pontuada, a única que o teor escreve) e emite `PUBLICATION_CREATED` com `partyDocument`, `includeBranches` e `matchedBy: \"document\"` — a empresa foi citada no ato, seja ou não parte, o que alcança a decisão que manda citá-la antes de ela figurar nos destinatários; `includeBranches: true` vigia a raiz de 8 dígitos e alcança matriz e filiais (muda a contagem; nunca é o padrão). TERM, PARTY e DOCUMENT dividem a mesma vaga do plano. Monitor PROCESS emite `MONITOR_SYNC_SUCCEEDED` (com o campo `changed`) a cada varredura — cadência de 15 minutos, até 96 por dia por monitor, quase todos sem novidade — e `MONITOR_SYNC_FAILED` quando a varredura falha. Para ser notificado de movimentação nova de um processo, use POST /v1/subscriptions. **Vigília de aparição:** um monitor PROCESS cujo alvo a fonte ainda não indexou é aceito e fica esperando — `targetSeenAt: null` na resposta marca a espera, a varredura em espera emite `MONITOR_SYNC_SUCCEEDED` com `awaitingAppearance: true`, e a primeira aparição chega com `firstAppearance: true`. Informe `distributedAt` (AAAA-MM-DD, nunca no futuro; imutável depois de criado — corrigir a data é recriar o monitor) para a espera ter critério de parada: enquanto a data-limite do índice da fonte não alcança a data, o alvo nem é consultado; quando a ultrapassa com folga de 3 dias e nada apareceu, o monitor entra em ERROR — cadastro provavelmente errado — sem deixar de tentar. **Alvo já vigiado:** o monitor é único por alvo dentro da conta e do projeto, e o segundo pedido responde 409 `MONITOR_ALREADY_EXISTS` com `error.details.monitorId` — o id do monitor existente, para você seguir, por exemplo criando a assinatura, sem procurar na lista.\n\n**Escopo exigido na chave de API:** `MONITORS_WRITE`","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["PROCESS","OAB","TERM","PARTY","DOCUMENT"]},"label":{"type":"string","maxLength":160},"tribunalAlias":{"type":"string","maxLength":64},"processNumber":{"type":"string","maxLength":40},"oabNumber":{"type":"string","maxLength":20},"oabState":{"type":"string","maxLength":2},"term":{"type":"string","maxLength":120},"partyName":{"type":"string","maxLength":120},"partyDocument":{"description":"CNPJ vigiado no teor, nos 14 dígitos ou pontuado; normalizado para NN.NNN.NNN/NNNN-NN. CPF é recusado.","type":"string","maxLength":18},"includeBranches":{"description":"Com true, busca pela raiz de 8 dígitos do CNPJ (NN.NNN.NNN) e alcança a matriz e todas as filiais; muda a contagem. Padrão false: só o estabelecimento informado.","type":"boolean"},"distributedAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["type"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["PROCESS","OAB","TERM","PARTY","DOCUMENT"]},"status":{"type":"string","enum":["ACTIVE","PAUSED","DISABLED","ERROR"]},"label":{"nullable":true,"type":"string"},"tribunalAlias":{"nullable":true,"type":"string"},"tribunalSigla":{"nullable":true,"type":"string"},"processNumber":{"nullable":true,"type":"string"},"oabNumber":{"nullable":true,"type":"string"},"oabState":{"nullable":true,"type":"string"},"term":{"nullable":true,"type":"string"},"partyName":{"nullable":true,"type":"string"},"partyDocument":{"nullable":true,"type":"string"},"lastCheckedAt":{"nullable":true,"type":"string","format":"date-time"},"lastSuccessfulCheckAt":{"nullable":true,"type":"string","format":"date-time"},"lastCheckStatus":{"nullable":true,"type":"string"},"lastCheckError":{"nullable":true,"type":"string"},"targetSeenAt":{"nullable":true,"type":"string","format":"date-time"},"retiredAt":{"nullable":true,"type":"string","format":"date-time"},"targetExpectedFrom":{"nullable":true,"type":"string","format":"date-time"},"sourceUpdatedAt":{"nullable":true,"type":"string","format":"date-time"},"latestMovementAt":{"nullable":true,"type":"string","format":"date-time"},"sourceMaintenance":{"description":"A manutenção declarada pela fonte de que este monitor depende, dita na lista e na leitura de um monitor. Enquanto ela dura, o monitor espera a fonte voltar, sem contar falha nem emitir `MONITOR_SYNC_FAILED`; quando ela volta, ele varre sozinho o período que ficou para trás. `lastCheckStatus` e `lastCheckError` continuam dizendo a última checagem que de fato aconteceu. Nulo fora da manutenção e no monitor pausado ou desativado.","nullable":true,"type":"object","properties":{"since":{"nullable":true,"description":"Quando a manutenção começou; nulo quando não se sabe.","type":"string","format":"date-time"},"message":{"type":"string","description":"A frase da manutenção, a mesma da recusa `SOURCE_MAINTENANCE`, para mostrar a quem acompanha a vigília."}},"required":["since","message"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"initialLookbackDays":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"historyHint":{"type":"string"},"partyNameReach":{"nullable":true,"type":"object","properties":{"containing":{"type":"integer","minimum":0,"maximum":9007199254740991},"confirmed":{"type":"integer","minimum":0,"maximum":9007199254740991},"sampled":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["containing","confirmed","sampled"],"additionalProperties":false}},"required":["id","type","status","createdAt","updatedAt","initialLookbackDays","historyHint"],"additionalProperties":{}},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"get":{"operationId":"listMonitors","summary":"Listar monitores","tags":["Monitores"],"description":"Paginação keyset: passe em `cursor` o `meta.nextCursor` da resposta anterior. `officeScoped=true` restringe aos monitores atribuídos ao `X-Office-Id` da chamada. Os campos de alvo (`tribunalAlias`, `processNumber`, `oabNumber`, `oabState`, `term`, `partyName`, `partyDocument`) filtram pelo que o monitor vigia, nas mesmas grafias que a criação aceita — para achar o monitor de um alvo sem paginar a conta inteira.\n\n**Escopo exigido na chave de API:** `MONITORS_READ`","parameters":[{"schema":{"type":"string","maxLength":64},"in":"query","name":"cursor","required":false},{"schema":{"default":50,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","enum":["ACTIVE","PAUSED","DISABLED","ERROR"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","enum":["PROCESS","OAB","TERM","PARTY","DOCUMENT"]},"in":"query","name":"type","required":false},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"officeScoped","required":false},{"schema":{"type":"string","maxLength":64},"in":"query","name":"tribunalAlias","required":false},{"schema":{"type":"string","maxLength":40},"in":"query","name":"processNumber","required":false},{"schema":{"type":"string","maxLength":20},"in":"query","name":"oabNumber","required":false},{"schema":{"type":"string","maxLength":2},"in":"query","name":"oabState","required":false},{"schema":{"type":"string","maxLength":120},"in":"query","name":"term","required":false},{"schema":{"type":"string","maxLength":120},"in":"query","name":"partyName","required":false},{"schema":{"type":"string","maxLength":18},"in":"query","name":"partyDocument","required":false},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["PROCESS","OAB","TERM","PARTY","DOCUMENT"]},"status":{"type":"string","enum":["ACTIVE","PAUSED","DISABLED","ERROR"]},"label":{"nullable":true,"type":"string"},"tribunalAlias":{"nullable":true,"type":"string"},"tribunalSigla":{"nullable":true,"type":"string"},"processNumber":{"nullable":true,"type":"string"},"oabNumber":{"nullable":true,"type":"string"},"oabState":{"nullable":true,"type":"string"},"term":{"nullable":true,"type":"string"},"partyName":{"nullable":true,"type":"string"},"partyDocument":{"nullable":true,"type":"string"},"lastCheckedAt":{"nullable":true,"type":"string","format":"date-time"},"lastSuccessfulCheckAt":{"nullable":true,"type":"string","format":"date-time"},"lastCheckStatus":{"nullable":true,"type":"string"},"lastCheckError":{"nullable":true,"type":"string"},"targetSeenAt":{"nullable":true,"type":"string","format":"date-time"},"retiredAt":{"nullable":true,"type":"string","format":"date-time"},"targetExpectedFrom":{"nullable":true,"type":"string","format":"date-time"},"sourceUpdatedAt":{"nullable":true,"type":"string","format":"date-time"},"latestMovementAt":{"nullable":true,"type":"string","format":"date-time"},"sourceMaintenance":{"description":"A manutenção declarada pela fonte de que este monitor depende, dita na lista e na leitura de um monitor. Enquanto ela dura, o monitor espera a fonte voltar, sem contar falha nem emitir `MONITOR_SYNC_FAILED`; quando ela volta, ele varre sozinho o período que ficou para trás. `lastCheckStatus` e `lastCheckError` continuam dizendo a última checagem que de fato aconteceu. Nulo fora da manutenção e no monitor pausado ou desativado.","nullable":true,"type":"object","properties":{"since":{"nullable":true,"description":"Quando a manutenção começou; nulo quando não se sabe.","type":"string","format":"date-time"},"message":{"type":"string","description":"A frase da manutenção, a mesma da recusa `SOURCE_MAINTENANCE`, para mostrar a quem acompanha a vigília."}},"required":["since","message"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","type","status","createdAt","updatedAt"],"additionalProperties":{}}},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/monitors/coverage-review":{"get":{"operationId":"reviewPartyCoverage","summary":"Conferir a cobertura de vigílias por nome de parte","tags":["Monitores"],"description":"Quem aparece no diário sob um padrão de nome, e quais desses a conta já vigia. O filtro de nome de parte da fonte casa por CONTINÊNCIA de palavras: consultar o prefixo comum de uma família de empresas (`partyName=CONSTRUTORA ALFA`) devolve as irmãs — inclusive as que não estão na sua lista. A resposta separa `covered` (já existe vigília para aquela razão social) de `uncovered` (aparece no diário e ninguém vigia), com a contagem de publicações de cada uma na janela. **Nada é criado por aqui:** a conferência aponta a diferença e quem decide o que vigiar é você. É a rotina que impede a lista de vigílias de envelhecer sozinha — incorporadora, holding e grupo econômico abrem empresa o tempo todo. A comparação usa a MESMA identidade de nome que a vigília aplica antes de anunciar, então `covered` significa exatamente 'esta razão social já chegaria a você'.\n\n**Escopo exigido na chave de API:** `PUBLICATIONS_READ`","parameters":[{"schema":{"type":"string","minLength":5,"maxLength":120},"in":"query","name":"partyName","required":true},{"schema":{"default":30,"type":"integer","minimum":1,"maximum":90},"in":"query","name":"days","required":false},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"partyName":{"type":"string"},"windowDays":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"publicationsScanned":{"type":"integer","minimum":0,"maximum":9007199254740991},"covered":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"publications":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"monitorId":{"type":"string"}},"required":["name","publications","monitorId"],"additionalProperties":false}},"uncovered":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"publications":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991}},"required":["name","publications"],"additionalProperties":false}}},"required":["partyName","windowDays","publicationsScanned","covered","uncovered"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/monitors/{monitorId}":{"get":{"operationId":"getMonitor","summary":"Ler um monitor","tags":["Monitores"],"description":"Retorna o monitor pelo id — tipo (PROCESS/OAB), alvo, status, resultado das últimas checagens e o projeto ao qual pertence. O escopo é a conta autenticada: monitor de outra conta responde 404, nunca 403.\n\n**Escopo exigido na chave de API:** `MONITORS_READ`","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"monitorId","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["PROCESS","OAB","TERM","PARTY","DOCUMENT"]},"status":{"type":"string","enum":["ACTIVE","PAUSED","DISABLED","ERROR"]},"label":{"nullable":true,"type":"string"},"tribunalAlias":{"nullable":true,"type":"string"},"tribunalSigla":{"nullable":true,"type":"string"},"processNumber":{"nullable":true,"type":"string"},"oabNumber":{"nullable":true,"type":"string"},"oabState":{"nullable":true,"type":"string"},"term":{"nullable":true,"type":"string"},"partyName":{"nullable":true,"type":"string"},"partyDocument":{"nullable":true,"type":"string"},"lastCheckedAt":{"nullable":true,"type":"string","format":"date-time"},"lastSuccessfulCheckAt":{"nullable":true,"type":"string","format":"date-time"},"lastCheckStatus":{"nullable":true,"type":"string"},"lastCheckError":{"nullable":true,"type":"string"},"targetSeenAt":{"nullable":true,"type":"string","format":"date-time"},"retiredAt":{"nullable":true,"type":"string","format":"date-time"},"targetExpectedFrom":{"nullable":true,"type":"string","format":"date-time"},"sourceUpdatedAt":{"nullable":true,"type":"string","format":"date-time"},"latestMovementAt":{"nullable":true,"type":"string","format":"date-time"},"sourceMaintenance":{"description":"A manutenção declarada pela fonte de que este monitor depende, dita na lista e na leitura de um monitor. Enquanto ela dura, o monitor espera a fonte voltar, sem contar falha nem emitir `MONITOR_SYNC_FAILED`; quando ela volta, ele varre sozinho o período que ficou para trás. `lastCheckStatus` e `lastCheckError` continuam dizendo a última checagem que de fato aconteceu. Nulo fora da manutenção e no monitor pausado ou desativado.","nullable":true,"type":"object","properties":{"since":{"nullable":true,"description":"Quando a manutenção começou; nulo quando não se sabe.","type":"string","format":"date-time"},"message":{"type":"string","description":"A frase da manutenção, a mesma da recusa `SOURCE_MAINTENANCE`, para mostrar a quem acompanha a vigília."}},"required":["since","message"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","type","status","createdAt","updatedAt"],"additionalProperties":{}},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"patch":{"operationId":"updateMonitor","summary":"Atualizar o status de um monitor","tags":["Monitores"],"description":"Altera o status do monitor: `ACTIVE` retoma a varredura, `PAUSED` a suspende sem descartar a configuração e `DISABLED` desativa em definitivo (monitor desativado não pode mais ser alterado — 409). Só monitores em varredura ocupam vaga no limite do plano, então reativar passa pela mesma checagem de limite da criação (403 `MONITOR_LIMIT_REACHED` quando o teto está cheio). O escopo é a conta autenticada: monitor de outra conta responde 404.\n\n**Escopo exigido na chave de API:** `MONITORS_WRITE`","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["ACTIVE","PAUSED","DISABLED"]}},"required":["status"]}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"monitorId","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["PROCESS","OAB","TERM","PARTY","DOCUMENT"]},"status":{"type":"string","enum":["ACTIVE","PAUSED","DISABLED","ERROR"]},"label":{"nullable":true,"type":"string"},"tribunalAlias":{"nullable":true,"type":"string"},"tribunalSigla":{"nullable":true,"type":"string"},"processNumber":{"nullable":true,"type":"string"},"oabNumber":{"nullable":true,"type":"string"},"oabState":{"nullable":true,"type":"string"},"term":{"nullable":true,"type":"string"},"partyName":{"nullable":true,"type":"string"},"partyDocument":{"nullable":true,"type":"string"},"lastCheckedAt":{"nullable":true,"type":"string","format":"date-time"},"lastSuccessfulCheckAt":{"nullable":true,"type":"string","format":"date-time"},"lastCheckStatus":{"nullable":true,"type":"string"},"lastCheckError":{"nullable":true,"type":"string"},"targetSeenAt":{"nullable":true,"type":"string","format":"date-time"},"retiredAt":{"nullable":true,"type":"string","format":"date-time"},"targetExpectedFrom":{"nullable":true,"type":"string","format":"date-time"},"sourceUpdatedAt":{"nullable":true,"type":"string","format":"date-time"},"latestMovementAt":{"nullable":true,"type":"string","format":"date-time"},"sourceMaintenance":{"description":"A manutenção declarada pela fonte de que este monitor depende, dita na lista e na leitura de um monitor. Enquanto ela dura, o monitor espera a fonte voltar, sem contar falha nem emitir `MONITOR_SYNC_FAILED`; quando ela volta, ele varre sozinho o período que ficou para trás. `lastCheckStatus` e `lastCheckError` continuam dizendo a última checagem que de fato aconteceu. Nulo fora da manutenção e no monitor pausado ou desativado.","nullable":true,"type":"object","properties":{"since":{"nullable":true,"description":"Quando a manutenção começou; nulo quando não se sabe.","type":"string","format":"date-time"},"message":{"type":"string","description":"A frase da manutenção, a mesma da recusa `SOURCE_MAINTENANCE`, para mostrar a quem acompanha a vigília."}},"required":["since","message"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","type","status","createdAt","updatedAt"],"additionalProperties":{}},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteMonitor","summary":"Excluir um monitor","tags":["Monitores"],"description":"Remove o monitor em definitivo: a varredura para, os webhooks dele cessam e a vaga ocupada no limite do plano é liberada na hora. O escopo é a conta autenticada: monitor de outra conta responde 404.\n\n**Escopo exigido na chave de API:** `MONITORS_WRITE`","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"monitorId","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean","enum":[true]}},"required":["id","deleted"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/monitors/{monitorId}/sync":{"post":{"operationId":"requestMonitorSync","summary":"Pedir uma varredura imediata do monitor","tags":["Monitores"],"description":"Põe o monitor na PRÓXIMA rodada de varreduras (em até ~60 segundos), em vez de esperar a agenda dele — a edição seguinte do diário, nos monitores de diário — ou o intervalo de espera depois de falhas, e zera a contagem de falhas seguidas, tirando o monitor desse intervalo. A varredura nunca roda dentro da requisição; o resultado chega pelo caminho de sempre (`MONITOR_SYNC_SUCCEEDED`/`MONITOR_SYNC_FAILED` e webhooks). Enquanto a fonte de que o monitor depende está em manutenção declarada — `sourceMaintenance` no monitor e `MAINTENANCE` em `GET /status` —, a varredura espera a fonte voltar, e nenhum dos dois eventos sai até lá. Monitor pausado ou desativado responde 409 — reative-o antes. Monitor de outra conta responde 404.\n\n**Escopo exigido na chave de API:** `MONITORS_WRITE`","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"monitorId","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"syncQueued":{"type":"boolean","enum":[true]},"expectedWithinSeconds":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"clearedFailures":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","syncQueued","expectedWithinSeconds","clearedFailures"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/search-jobs":{"get":{"operationId":"listSearchJobs","summary":"Listar os jobs de busca do chamador","tags":["Jobs de busca"],"description":"Lista com escopo de conta/office dos jobs de busca assíncronos (mais recentes primeiro, paginação keyset). Apenas metadados — os resultados ficam atrás do endpoint de consulta do job. Só a busca assíncrona de processos: a consulta de processo em segundo plano tem rota própria, `/v1/processes/lookups`.\n\n**Escopo exigido na chave de API:** `PROCESSES_READ`","parameters":[{"schema":{"type":"string","enum":["QUEUED","LEASED","SUCCEEDED","FAILED","CANCELED"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"cursor","required":false},{"schema":{"default":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"jobId":{"type":"string"},"kind":{"type":"string"},"source":{"nullable":true,"type":"string"},"status":{"type":"string","enum":["QUEUED","LEASED","SUCCEEDED","FAILED","CANCELED"]},"credits":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"traceId":{"nullable":true,"type":"string"},"startedAt":{"nullable":true,"type":"string","format":"date-time"},"finishedAt":{"nullable":true,"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"pollUrl":{"type":"string"},"error":{"type":"object","properties":{"class":{"nullable":true,"type":"string"},"code":{"nullable":true,"type":"string"},"message":{"nullable":true,"type":"string"},"retryable":{"type":"boolean"},"upstreamStatus":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false}},"required":["jobId","kind","status","createdAt","updatedAt","pollUrl"],"additionalProperties":{}}},"nextCursor":{"nullable":true,"type":"string"}},"required":["items"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/search-jobs/{jobId}":{"get":{"operationId":"getSearchJob","summary":"Consultar um job de busca","tags":["Jobs de busca"],"description":"Retorna o status do job; em SUCCEEDED, `result` carrega o mesmo formato da busca síncrona de processos — inclusive `sourceIndex.updatedThrough`, a data até onde o índice do tribunal está atualizado, que qualifica um `total: 0` como *ainda não chegou* em vez de *não existe*. O campo acompanha o resultado que consultou a fonte; um job servido do acervo não o traz. O processo que o controle de confidencialidade retém de quem consulta sai de `items`, conta em `redactedCount` e uma vez só em `total`, quantos documentos dele a busca tenha achado. Jobs são visíveis apenas para a conta/office que os submeteu (404 caso contrário). A submissão acontece via POST /v1/processes/search, que responde 202 + jobId quando o modo assíncrono está ativo. O job terminado fica 180 dias depois do desfecho, o prazo dos eventos que apontam para ele; passado esse prazo, o id responde 404. O id de uma consulta de processo em segundo plano responde 404 aqui: ela se lê em `GET /v1/processes/lookups/{lookupId}`.\n\n**Escopo exigido na chave de API:** `PROCESSES_READ`","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"jobId","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string","enum":["QUEUED","LEASED","SUCCEEDED","FAILED","CANCELED"]},"result":{"nullable":true,"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"relation":{"type":"string","enum":["eq","gte"]},"limit":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"items":{"type":"array","items":{"type":"object","properties":{"sourceId":{"nullable":true,"type":"string"},"number":{"type":"string","minLength":7,"maxLength":40},"formattedNumber":{"type":"string","minLength":7,"maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"type":"string","minLength":3,"maxLength":64},"code":{"type":"string","minLength":2,"maxLength":24}},"required":["alias","code"],"additionalProperties":false},"degree":{"nullable":true,"type":"string"},"sigiloLevel":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"confidentiality":{"description":"Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.","type":"string","enum":["PUBLIC","SEGREDO_DE_JUSTICA"]},"shareable":{"description":"Se o processo é compartilhável. Falso acompanha o segredo de justiça e também o processo retido por outro motivo: trate-o como restrito e não o exiba a um público.","type":"boolean"},"class":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"courtBody":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"},"municipalityIbgeCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"system":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"format":{"nullable":true,"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"nullable":true,"type":"string"}},"additionalProperties":false},"filedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"nullable":true,"type":"string","format":"date-time"},"indexedAt":{"nullable":true,"type":"string","format":"date-time"},"subjects":{"type":"array","items":{"type":"object","properties":{"code":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","minLength":1,"maxLength":240}},"required":["name"],"additionalProperties":false}},"djen":{"nullable":true,"type":"object","properties":{"publicationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"latestPublicationAt":{"nullable":true,"type":"string","format":"date-time"},"latestPublicationType":{"nullable":true,"type":"string"},"latestPublicationExcerpt":{"nullable":true,"type":"string","maxLength":12000},"latestPublicationUrl":{"nullable":true,"type":"string"}},"required":["publicationCount"],"additionalProperties":false}},"required":["number","formattedNumber","tribunal","class","courtBody","subjects"],"additionalProperties":false}},"redactedCount":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"nextCursor":{"nullable":true,"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"sourceIndex":{"nullable":true,"type":"object","properties":{"tribunalAlias":{"type":"string"},"updatedThrough":{"nullable":true,"description":"Última atualização presente no índice da fonte. Um processo distribuído depois desta data ainda não é encontrável — a ausência dele não significa que não exista. Null quando a fonte não respondeu à sondagem.","type":"string","format":"date-time"},"checkedAt":{"description":"Quando esta busca montou a resposta com a data-limite acima.","type":"string","format":"date-time"}},"required":["tribunalAlias","updatedThrough","checkedAt"],"additionalProperties":false}},"required":["total","relation","limit","items"],"additionalProperties":false},"error":{"nullable":true,"type":"object","properties":{"class":{"nullable":true,"type":"string"},"code":{"nullable":true,"type":"string"},"message":{"nullable":true,"type":"string"},"retryable":{"type":"boolean"},"upstreamStatus":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"creditsRefunded":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["jobId","status"],"additionalProperties":{}},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/search-jobs/{jobId}/cancel":{"post":{"operationId":"cancelSearchJob","summary":"Cancelar um job de busca ainda não concluído","tags":["Jobs de busca"],"description":"Cancela um job QUEUED/LEASED da própria conta/office e devolve a retenção de créditos na mesma chamada — job que não rodou não custa nada. `refunded` diz se a devolução aconteceu NESTA chamada: a execução do job, se já tiver começado, pode ter consumido ou devolvido a retenção antes. Job em estado terminal responde 409; job de outra conta, 404. A consulta de processo em segundo plano se cancela em `POST /v1/processes/lookups/{lookupId}/cancel`; o id dela aqui responde 404.\n\n**Escopo exigido na chave de API:** `PROCESSES_SEARCH`","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"jobId","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"canceled":{"type":"boolean","enum":[true]},"refunded":{"type":"boolean"}},"required":["id","canceled","refunded"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/subscriptions":{"post":{"operationId":"createSubscription","summary":"Registrar interesse durável em um processo","tags":["Assinaturas"],"description":"Concede uma assinatura CASE_LINK para que o motor mantenha o processo atualizado e emita `PROCESS_MOVEMENT_CREATED` aos endpoints da conta a cada movimentação nova, e `PROCESS_INSTANCE_DISCOVERED` quando outro grau do número aparece na fonte. Idempotente por (reason, externalRef).\n\n**Escopo exigido na chave de API:** `SUBSCRIPTIONS_WRITE`","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["CNJ_DATAJUD","DJEN_PUBLIC"]},"tribunalAlias":{"type":"string","minLength":3,"maxLength":64},"processNumber":{"type":"string","minLength":1,"maxLength":40},"reason":{"default":"CASE_LINK","type":"string","enum":["CASE_LINK"]},"externalRef":{"type":"string","minLength":1,"maxLength":128}},"required":["tribunalAlias","processNumber","externalRef"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"subscriptionId":{"type":"string"},"canonicalProcessId":{"nullable":true,"type":"string"},"reason":{"type":"string"},"isActive":{"type":"boolean"}},"required":["subscriptionId","canonicalProcessId","reason","isActive"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"get":{"operationId":"listSubscriptions","summary":"Listar os interesses declarados","tags":["Assinaturas"],"description":"Devolve as assinaturas CASE_LINK da conta (recortadas pelo `X-Office-Id`, quando enviado), da mais recente para a mais antiga. Sem esta leitura não há como conferir o que está assinado, auditar acesso nem desligar o que não se usa mais.\n\n**Escopo exigido na chave de API:** `SUBSCRIPTIONS_READ`","parameters":[{"schema":{"default":false,"type":"boolean"},"in":"query","name":"includeInactive","required":false},{"schema":{"type":"string","minLength":1,"maxLength":40},"in":"query","name":"processNumber","required":false},{"schema":{"type":"string","minLength":1,"maxLength":128},"in":"query","name":"externalRef","required":false},{"schema":{"default":50,"type":"integer","minimum":1,"maximum":200},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"cursor","required":false},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"subscriptionId":{"type":"string"},"canonicalProcessId":{"nullable":true,"type":"string"},"source":{"type":"string"},"tribunalAlias":{"type":"string"},"processNumber":{"type":"string"},"reason":{"type":"string"},"externalRef":{"nullable":true,"type":"string"},"officeId":{"nullable":true,"type":"string"},"isActive":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}},"required":["subscriptionId","canonicalProcessId","source","tribunalAlias","processNumber","reason","externalRef","officeId","isActive","createdAt"],"additionalProperties":false}},"nextCursor":{"nullable":true,"type":"string"}},"required":["items","nextCursor"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteSubscription","summary":"Desativar uma assinatura","tags":["Assinaturas"],"description":"Desativa a(s) assinatura(s) CASE_LINK que casam com (reason, externalRef) para a conta/office do chamador.\n\n**Escopo exigido na chave de API:** `SUBSCRIPTIONS_WRITE`","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"default":"CASE_LINK","type":"string","enum":["CASE_LINK"]},"externalRef":{"type":"string","minLength":1,"maxLength":128}},"required":["externalRef"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"deactivated":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["deactivated"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/subscriptions/{subscriptionId}":{"delete":{"operationId":"deleteSubscriptionById","summary":"Desativar uma assinatura pelo id","tags":["Assinaturas"],"description":"Desativa a assinatura pelo `subscriptionId` que a criação devolveu e a listagem repete. O caminho por `externalRef` continua valendo para quem desvincula pelo próprio identificador.\n\n**Escopo exigido na chave de API:** `SUBSCRIPTIONS_WRITE`","parameters":[{"schema":{"type":"string","minLength":8,"maxLength":64},"in":"path","name":"subscriptionId","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"deactivated":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["deactivated"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/publications":{"get":{"operationId":"listPublications","summary":"Listar publicações","tags":["Publicações"],"description":"Retorna as publicações que casam com os filtros informados. Uma consulta com escopo de processo é incremental: a primeira busca traz da fonte todas as publicações do processo e as guarda no acervo; as seguintes buscam na fonte só o que veio depois da publicação mais recente guardada e respondem com o acervo consolidado. `text`, `partyName`, `lawyerName` e `partyDocument` filtram na própria fonte; os matches de `text` são adicionalmente revalidados localmente com fronteira de palavra, então itens cujo conteúdo só casa por substring são descartados (`total` permanece a contagem reportada pela fonte). **Os três eixos de empresa se completam:** `partyName` casa por continência de palavras e acha as irmãs de uma família de razões sociais; `lawyerName` confirma quais pertencem ao mesmo grupo, porque o corpo de procuradores é compartilhado; `partyDocument` — o CNPJ nos 14 dígitos ou pontuado, normalizado para `NN.NNN.NNN/NNNN-NN` — casa o documento no TEOR e acha a empresa citada no ato (mandada citar, garantidora, penhorada) antes de ela figurar como parte. A reconfirmação local por documento é substring literal, e cada item assim casado vem com `matchedBy: \"document\"`; compare com `parties` para saber se a empresa já é parte. `includeBranches=true` busca pela raiz de 8 dígitos e alcança matriz e filiais — opção declarada, porque muda a contagem; nunca é o padrão. `partyDocument` não se combina com `text`. Um CPF em qualquer desses campos é recusado com `PERSONAL_DOCUMENT_QUERY_NOT_ALLOWED`. **Antes de concluir que uma publicação não existe, leia `sourceIndex.lastEditionDate`:** é a última edição do diário que o motor detectou no ar. O diário publica uma edição por dia útil, e `total: 0` sem a edição do dia detectada significa *ainda não saiu*, não *não existe*. A prova vale numa direção só: edição detectada NÃO garante o índice do dia completo — ele continua recebendo itens ao longo do dia, então um zero com a edição de hoje no ar ainda pode virar publicação horas depois. O campo acompanha toda resposta, sem custo adicional.\n\n**Escopo exigido na chave de API:** `PUBLICATIONS_READ`","parameters":[{"schema":{"type":"string","minLength":7,"maxLength":40},"in":"query","name":"processNumber","required":false},{"schema":{"type":"string","minLength":1,"maxLength":20},"in":"query","name":"oabNumber","required":false},{"schema":{"type":"string","minLength":2,"maxLength":2},"in":"query","name":"oabState","required":false},{"schema":{"type":"string","minLength":2,"maxLength":24},"in":"query","name":"tribunalCode","required":false},{"schema":{"type":"string","minLength":3,"maxLength":120},"in":"query","name":"text","required":false},{"schema":{"type":"string","minLength":3,"maxLength":120},"in":"query","name":"partyName","required":false},{"schema":{"type":"string","minLength":3,"maxLength":120},"in":"query","name":"lawyerName","required":false},{"schema":{"type":"string","minLength":14,"maxLength":18},"in":"query","name":"partyDocument","required":false,"description":"CNPJ citado no teor, nos 14 dígitos ou pontuado; normalizado para NN.NNN.NNN/NNNN-NN. Acha a empresa citada no ato antes de ela ser parte. CPF é recusado."},{"schema":{"type":"boolean"},"in":"query","name":"includeBranches","required":false,"description":"Com true, busca pela raiz de 8 dígitos do CNPJ (NN.NNN.NNN) e alcança a matriz e todas as filiais; muda a contagem. Padrão false: só o estabelecimento informado."},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"in":"query","name":"availableFrom","required":false},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"in":"query","name":"availableTo","required":false},{"schema":{"default":1,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"in":"query","name":"page","required":false},{"schema":{"default":20,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100},"in":"query","name":"pageSize","required":false},{"schema":{"default":false,"type":"boolean"},"in":"query","name":"includeRaw","required":false},{"schema":{"type":"integer","minimum":200,"maximum":200000},"in":"query","name":"maxTextChars","required":false},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"pageSize":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"items":{"type":"array","items":{"type":"object","properties":{"publicationKey":{"type":"string","minLength":12,"maxLength":64},"processNumber":{"type":"string","maxLength":40},"formattedProcessNumber":{"type":"string","maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"nullable":true,"type":"string"},"code":{"nullable":true,"type":"string"}},"additionalProperties":false},"source":{"type":"string","enum":["DJEN_PUBLIC","STJ_OPEN_DATA","CARF_OPEN_DATA","TJDFT_OPEN_DATA"]},"documentKind":{"type":"string","enum":["ACORDAO","ESPELHO","INTIMACAO"]},"sourceReference":{"nullable":true,"type":"string"},"sourceUrl":{"nullable":true,"type":"string"},"type":{"type":"string","minLength":1,"maxLength":240},"typeLabel":{"type":"string","minLength":1,"maxLength":240},"availableAt":{"nullable":true,"type":"string","format":"date-time"},"text":{"nullable":true,"type":"string"},"textUnavailable":{"type":"string","enum":["OBJECT_MISSING"]},"suspensionSignal":{"nullable":true,"type":"object","properties":{"confidence":{"type":"string","enum":["HIGH","MEDIUM","LOW"]},"keywords":{"type":"array","items":{"type":"string","maxLength":120}},"excerpt":{"type":"string","maxLength":400}},"required":["confidence","keywords","excerpt"],"additionalProperties":false},"metadata":{},"parties":{"description":"Quem a publicação nomeia, com o polo declarado na origem. Vem do eixo do diário; o acervo estruturado de jurisprudência não nomeia partes e devolve lista vazia. Publicação sob segredo sai sem partes.","type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":400},"polo":{"nullable":true,"type":"string"}},"required":["name","polo"],"additionalProperties":false}},"lawyers":{"description":"Advogados nomeados na publicação, com número e UF da inscrição quando a fonte os traz. Nome e inscrição são independentes — a fonte às vezes entrega só um dos dois. Publicação sob segredo sai sem advogados.","type":"array","items":{"type":"object","properties":{"name":{"nullable":true,"type":"string"},"oabNumber":{"nullable":true,"type":"string"},"oabState":{"nullable":true,"type":"string"}},"required":["name","oabNumber","oabState"],"additionalProperties":false}},"courtBody":{"description":"Órgão julgador da publicação, como a fonte o escreve. Presente nos dois eixos; `null` quando a fonte não o declara.","nullable":true,"type":"string"},"shareable":{"type":"boolean"},"matchedBy":{"description":"Como o item casou a consulta por documento: `document` = o CNPJ consta no teor, a empresa foi citada no ato. Compare com `parties` para saber se ela já figura como parte.","type":"string","enum":["document"]},"rawPayload":{}},"required":["publicationKey","processNumber","formattedProcessNumber","tribunal","source","documentKind","type","typeLabel","suspensionSignal","metadata"],"additionalProperties":false}},"sourceItemCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"sourceIndex":{"type":"object","properties":{"lastEditionDate":{"nullable":true,"description":"AAAA-MM-DD da última edição do diário detectada no ar; null = nenhuma detecção registrada.","type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"detectedAt":{"nullable":true,"type":"string","format":"date-time"},"checkedAt":{"type":"string","format":"date-time"}},"required":["lastEditionDate","detectedAt","checkedAt"],"additionalProperties":false}},"required":["total","page","pageSize","items","sourceIndex"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/publications/text-searches":{"post":{"operationId":"createPublicationTextSearch","summary":"Executar uma busca textual congelada de jurisprudência","tags":["Jurisprudência"],"description":"Executa uma busca textual síncrona sobre a camada de jurisprudência indexada localmente (ementa + tese extraídas de publicações do diário oficial; stemming em português insensível a acentos) e congela o resultado ranqueado: posição, score (com decomposição explicável por fator) e trecho destacado são imutáveis depois de gravados. `totalIndexed` é exato para o índice local e sempre `gte` em relação ao universo real. Reexecutar a mesma consulta depois cria uma busca NOVA, mas reenviar com o MESMO `X-Request-Id` reapresenta a busca já congelada a custo zero de créditos (idempotente por conta). Com `requestHarvest: true` (e um tribunal + janela de datas nos filtros), o motor adicionalmente enfileira a colheita da fatia do diário oficial correspondente à busca e a ecoa em `harvest` — cada fatia nova custa 1 crédito extra. Reabra uma busca congelada via GET /v1/publications/text-searches/{searchId}. Por padrão esta resposta traz o ranking e a citação, não o teor: com `hydrate: true` o teor de cada acerto vem já aqui — é exatamente a mesma reabertura (mesmo controle de confidencialidade, mesma redação da publicação que passou a segredo) feita na mesma chamada, e **não custa crédito adicional**. A resposta então ganha `redactedCount` e, em cada item, `publication` e `redacted`.\n\n**Escopo exigido na chave de API:** `PUBLICATIONS_READ`","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":3,"maxLength":300},"tribunalCodes":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":2,"maxLength":24}},"availableFrom":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"availableTo":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"attribution":{"minItems":1,"type":"array","items":{"type":"string","enum":["FIRST_PARTY","CITED_PRECEDENT","UNKNOWN"]}},"onlyStructured":{"default":false,"type":"boolean"},"collegiateOnly":{"default":false,"type":"boolean"},"limit":{"default":20,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100},"freezeLimit":{"default":100,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":500},"requestHarvest":{"default":false,"type":"boolean"},"hydrate":{"default":false,"type":"boolean"}},"required":["query"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"searchId":{"type":"string"},"executedAt":{"type":"string","format":"date-time"},"totalIndexed":{"type":"integer","minimum":0,"maximum":9007199254740991},"relation":{"type":"string","enum":["gte"]},"rankerVersion":{"type":"string"},"extractorVersion":{"type":"string"},"corpusWatermark":{"nullable":true,"type":"string","format":"date-time"},"frozenHits":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"publicationKey":{"type":"string","minLength":1,"maxLength":256},"contentHash":{"type":"string","minLength":1},"score":{"type":"number"},"scoreBreakdown":{"type":"object","properties":{"base":{"type":"number"},"lengthFactor":{"type":"number"},"structuredBoost":{"type":"number"},"collegiateBoost":{"type":"number"},"recencyBonus":{"type":"number"}},"required":["base","lengthFactor","structuredBoost","collegiateBoost","recencyBonus"],"additionalProperties":false},"headline":{"nullable":true,"type":"string"},"attribution":{"type":"string","enum":["FIRST_PARTY","CITED_PRECEDENT","UNKNOWN"]},"attributionConfidence":{"type":"string","enum":["HIGH","MEDIUM","LOW"]},"tribunalSigla":{"nullable":true,"type":"string"},"publicationDate":{"nullable":true,"type":"string","format":"date-time"},"structured":{"type":"boolean"},"courtBodyKind":{"type":"string"},"judgmentClass":{"nullable":true,"type":"string"},"rapporteur":{"nullable":true,"type":"string"},"courtBody":{"nullable":true,"type":"string"},"judgedAt":{"nullable":true,"type":"string","format":"date-time"},"ementaChars":{"type":"integer","minimum":0,"maximum":9007199254740991},"redacted":{"type":"boolean"},"publication":{"nullable":true,"type":"object","properties":{"publicationKey":{"type":"string","minLength":12,"maxLength":64},"processNumber":{"type":"string","maxLength":40},"formattedProcessNumber":{"type":"string","maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"nullable":true,"type":"string"},"code":{"nullable":true,"type":"string"}},"additionalProperties":false},"source":{"type":"string","enum":["DJEN_PUBLIC","STJ_OPEN_DATA","CARF_OPEN_DATA","TJDFT_OPEN_DATA"]},"documentKind":{"type":"string","enum":["ACORDAO","ESPELHO","INTIMACAO"]},"sourceReference":{"nullable":true,"type":"string"},"sourceUrl":{"nullable":true,"type":"string"},"type":{"type":"string","minLength":1,"maxLength":240},"typeLabel":{"type":"string","minLength":1,"maxLength":240},"availableAt":{"nullable":true,"type":"string","format":"date-time"},"text":{"nullable":true,"type":"string"},"textUnavailable":{"type":"string","enum":["OBJECT_MISSING"]},"suspensionSignal":{"nullable":true,"type":"object","properties":{"confidence":{"type":"string","enum":["HIGH","MEDIUM","LOW"]},"keywords":{"type":"array","items":{"type":"string","maxLength":120}},"excerpt":{"type":"string","maxLength":400}},"required":["confidence","keywords","excerpt"],"additionalProperties":false},"metadata":{},"parties":{"description":"Quem a publicação nomeia, com o polo declarado na origem. Vem do eixo do diário; o acervo estruturado de jurisprudência não nomeia partes e devolve lista vazia. Publicação sob segredo sai sem partes.","type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":400},"polo":{"nullable":true,"type":"string"}},"required":["name","polo"],"additionalProperties":false}},"lawyers":{"description":"Advogados nomeados na publicação, com número e UF da inscrição quando a fonte os traz. Nome e inscrição são independentes — a fonte às vezes entrega só um dos dois. Publicação sob segredo sai sem advogados.","type":"array","items":{"type":"object","properties":{"name":{"nullable":true,"type":"string"},"oabNumber":{"nullable":true,"type":"string"},"oabState":{"nullable":true,"type":"string"}},"required":["name","oabNumber","oabState"],"additionalProperties":false}},"courtBody":{"description":"Órgão julgador da publicação, como a fonte o escreve. Presente nos dois eixos; `null` quando a fonte não o declara.","nullable":true,"type":"string"},"shareable":{"type":"boolean"},"matchedBy":{"description":"Como o item casou a consulta por documento: `document` = o CNPJ consta no teor, a empresa foi citada no ato. Compare com `parties` para saber se ela já figura como parte.","type":"string","enum":["document"]}},"required":["publicationKey","processNumber","formattedProcessNumber","tribunal","source","documentKind","type","typeLabel","suspensionSignal","metadata"],"additionalProperties":{}}},"required":["position","publicationKey","contentHash","score","scoreBreakdown","headline","attribution","attributionConfidence","tribunalSigla","publicationDate","structured","courtBodyKind","judgmentClass","rapporteur","ementaChars"],"additionalProperties":false}},"coverage":{"type":"object","properties":{"overallState":{"type":"string","enum":["NONE","PARTIAL","INDEXED","UNAVAILABLE"],"description":"NONE = nada indexado nem colheita registrada; PARTIAL = há fatia de colheita pendente (o indexado pode crescer); INDEXED = há documento pesquisável indexado e nenhuma colheita pendente. UNAVAILABLE = a cobertura do recorte não coube no prazo da busca: `byTribunalMonth` vem vazio, o ranking vem inteiro e a busca custa o preço de sempre. O valor congelado não muda depois; a cobertura do mesmo recorte sai em GET /v1/publications/corpus/coverage, a 0 crédito, com os tribunais da busca num só `tribunalCodes`, separados por vírgula (`tribunalCodes=STJ,TJSP`), e a janela dela em `from` e `to`."},"byTribunalMonth":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string"},"tribunalSigla":{"type":"string"},"period":{"type":"string"},"state":{"type":"string","enum":["NONE","PARTIAL","INDEXED"],"description":"NONE = nada indexado nem colheita registrada; PARTIAL = há fatia de colheita pendente (o indexado pode crescer); INDEXED = há documento pesquisável indexado e nenhuma colheita pendente."},"documentCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"indexableCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"slicesTotal":{"type":"integer","minimum":0,"maximum":9007199254740991},"slicesComplete":{"type":"integer","minimum":0,"maximum":9007199254740991},"slicesPending":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tribunalSigla","period","state","documentCount","indexableCount"],"additionalProperties":false}}},"required":["overallState","byTribunalMonth"],"additionalProperties":false},"harvest":{"type":"object","properties":{"enqueuedSlices":{"type":"integer","minimum":0,"maximum":9007199254740991},"dedupedSlices":{"type":"integer","minimum":0,"maximum":9007199254740991},"budgetRemaining":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["enqueuedSlices","dedupedSlices","budgetRemaining"],"additionalProperties":false},"redactedCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["searchId","executedAt","totalIndexed","relation","rankerVersion","extractorVersion","corpusWatermark","frozenHits","items","coverage"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"get":{"operationId":"listPublicationTextSearches","summary":"Listar as buscas textuais congeladas do chamador","tags":["Jurisprudência"],"description":"Lista com escopo de conta/office das buscas textuais congeladas (mais recentes primeiro, paginação keyset — passe em `cursor` o `nextCursor` da resposta anterior).\n\n**Escopo exigido na chave de API:** `PUBLICATIONS_READ`","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"in":"query","name":"from","required":false},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"in":"query","name":"to","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"cursor","required":false},{"schema":{"default":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"searchId":{"type":"string"},"query":{"type":"string"},"executedAt":{"type":"string","format":"date-time"},"totalIndexed":{"type":"integer","minimum":0,"maximum":9007199254740991},"relation":{"type":"string"},"frozenHits":{"type":"integer","minimum":0,"maximum":9007199254740991},"rankerVersion":{"type":"string"},"extractorVersion":{"type":"string"}},"required":["searchId","query","executedAt","totalIndexed","relation","frozenHits","rankerVersion","extractorVersion"],"additionalProperties":false}},"nextCursor":{"nullable":true,"type":"string"}},"required":["items"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/publications/text-searches/{searchId}":{"get":{"operationId":"getPublicationTextSearch","summary":"Reabrir uma busca textual congelada","tags":["Jurisprudência"],"description":"Retorna os hits na ordem congelada de `position` (a paginação por offset é estável porque a ordem é imutável), relendo no acervo o conteúdo ATUAL de cada publicação, pela chave. Publicação que deixou de ser compartilhável desde a busca volta redigida (sem conteúdo e sem o trecho congelado) e é contada em `redactedCount`. Buscas são visíveis apenas para a conta/office que as executou (404 caso contrário).\n\n**Escopo exigido na chave de API:** `PUBLICATIONS_READ`","parameters":[{"schema":{"default":1,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"in":"query","name":"page","required":false},{"schema":{"default":20,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100},"in":"query","name":"pageSize","required":false},{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"searchId","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"searchId":{"type":"string"},"query":{"type":"string"},"filters":{},"executedAt":{"type":"string","format":"date-time"},"totalIndexed":{"type":"integer","minimum":0,"maximum":9007199254740991},"relation":{"type":"string"},"rankerVersion":{"type":"string"},"extractorVersion":{"type":"string"},"corpusWatermark":{"nullable":true,"type":"string","format":"date-time"},"coverage":{"type":"object","properties":{"overallState":{"type":"string","enum":["NONE","PARTIAL","INDEXED","UNAVAILABLE"],"description":"NONE = nada indexado nem colheita registrada; PARTIAL = há fatia de colheita pendente (o indexado pode crescer); INDEXED = há documento pesquisável indexado e nenhuma colheita pendente. UNAVAILABLE = a cobertura do recorte não coube no prazo da busca: `byTribunalMonth` vem vazio, o ranking vem inteiro e a busca custa o preço de sempre. O valor congelado não muda depois; a cobertura do mesmo recorte sai em GET /v1/publications/corpus/coverage, a 0 crédito, com os tribunais da busca num só `tribunalCodes`, separados por vírgula (`tribunalCodes=STJ,TJSP`), e a janela dela em `from` e `to`."},"byTribunalMonth":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string"},"tribunalSigla":{"type":"string"},"period":{"type":"string"},"state":{"type":"string","enum":["NONE","PARTIAL","INDEXED"],"description":"NONE = nada indexado nem colheita registrada; PARTIAL = há fatia de colheita pendente (o indexado pode crescer); INDEXED = há documento pesquisável indexado e nenhuma colheita pendente."},"documentCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"indexableCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"slicesTotal":{"type":"integer","minimum":0,"maximum":9007199254740991},"slicesComplete":{"type":"integer","minimum":0,"maximum":9007199254740991},"slicesPending":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tribunalSigla","period","state","documentCount","indexableCount"],"additionalProperties":false}}},"required":["overallState","byTribunalMonth"],"additionalProperties":false},"frozenHits":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"pageSize":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"redactedCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"publicationKey":{"type":"string","minLength":1,"maxLength":256},"contentHash":{"type":"string","minLength":1},"score":{"type":"number"},"scoreBreakdown":{"type":"object","properties":{"base":{"type":"number"},"lengthFactor":{"type":"number"},"structuredBoost":{"type":"number"},"collegiateBoost":{"type":"number"},"recencyBonus":{"type":"number"}},"required":["base","lengthFactor","structuredBoost","collegiateBoost","recencyBonus"],"additionalProperties":false},"headline":{"nullable":true,"type":"string"},"attribution":{"type":"string","enum":["FIRST_PARTY","CITED_PRECEDENT","UNKNOWN"]},"attributionConfidence":{"type":"string","enum":["HIGH","MEDIUM","LOW"]},"judgedAt":{"nullable":true,"type":"string","format":"date-time"},"courtBody":{"nullable":true,"type":"string"},"rapporteur":{"nullable":true,"type":"string"},"judgmentClass":{"nullable":true,"type":"string"},"structured":{"nullable":true,"type":"boolean"},"courtBodyKind":{"nullable":true,"type":"string"},"redacted":{"type":"boolean"},"publication":{"nullable":true,"type":"object","properties":{"publicationKey":{"type":"string","minLength":12,"maxLength":64},"processNumber":{"type":"string","maxLength":40},"formattedProcessNumber":{"type":"string","maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"nullable":true,"type":"string"},"code":{"nullable":true,"type":"string"}},"additionalProperties":false},"source":{"type":"string","enum":["DJEN_PUBLIC","STJ_OPEN_DATA","CARF_OPEN_DATA","TJDFT_OPEN_DATA"]},"documentKind":{"type":"string","enum":["ACORDAO","ESPELHO","INTIMACAO"]},"sourceReference":{"nullable":true,"type":"string"},"sourceUrl":{"nullable":true,"type":"string"},"type":{"type":"string","minLength":1,"maxLength":240},"typeLabel":{"type":"string","minLength":1,"maxLength":240},"availableAt":{"nullable":true,"type":"string","format":"date-time"},"text":{"nullable":true,"type":"string"},"textUnavailable":{"type":"string","enum":["OBJECT_MISSING"]},"suspensionSignal":{"nullable":true,"type":"object","properties":{"confidence":{"type":"string","enum":["HIGH","MEDIUM","LOW"]},"keywords":{"type":"array","items":{"type":"string","maxLength":120}},"excerpt":{"type":"string","maxLength":400}},"required":["confidence","keywords","excerpt"],"additionalProperties":false},"metadata":{},"parties":{"description":"Quem a publicação nomeia, com o polo declarado na origem. Vem do eixo do diário; o acervo estruturado de jurisprudência não nomeia partes e devolve lista vazia. Publicação sob segredo sai sem partes.","type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":400},"polo":{"nullable":true,"type":"string"}},"required":["name","polo"],"additionalProperties":false}},"lawyers":{"description":"Advogados nomeados na publicação, com número e UF da inscrição quando a fonte os traz. Nome e inscrição são independentes — a fonte às vezes entrega só um dos dois. Publicação sob segredo sai sem advogados.","type":"array","items":{"type":"object","properties":{"name":{"nullable":true,"type":"string"},"oabNumber":{"nullable":true,"type":"string"},"oabState":{"nullable":true,"type":"string"}},"required":["name","oabNumber","oabState"],"additionalProperties":false}},"courtBody":{"description":"Órgão julgador da publicação, como a fonte o escreve. Presente nos dois eixos; `null` quando a fonte não o declara.","nullable":true,"type":"string"},"shareable":{"type":"boolean"},"matchedBy":{"description":"Como o item casou a consulta por documento: `document` = o CNPJ consta no teor, a empresa foi citada no ato. Compare com `parties` para saber se ela já figura como parte.","type":"string","enum":["document"]}},"required":["publicationKey","processNumber","formattedProcessNumber","tribunal","source","documentKind","type","typeLabel","suspensionSignal","metadata"],"additionalProperties":{}}},"required":["position","publicationKey","contentHash","score","scoreBreakdown","headline","attribution","attributionConfidence","redacted","publication"],"additionalProperties":false}}},"required":["searchId","query","filters","executedAt","totalIndexed","relation","rankerVersion","extractorVersion","corpusWatermark","coverage","frozenHits","page","pageSize","redactedCount","items"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/publications/corpus/coverage":{"get":{"operationId":"getPublicationCorpusCoverage","summary":"Consultar a cobertura do corpus indexado","tags":["Jurisprudência"],"description":"Cobertura agregada do corpus de jurisprudência indexado localmente: documentos indexáveis por fonte × tribunal × mês (a mesma agregação que cada busca textual congela no snapshot de cobertura — lá marcado `UNAVAILABLE`, sem grupos, quando ela não coube no prazo da busca), combinada com o estado das fatias de colheita do diário oficial — grupo com fatia pendente reporta `PARTIAL` (o conjunto indexado ainda pode crescer), grupo totalmente colhido/indexado reporta `INDEXED`, e `NONE` significa nada indexado nem colheita solicitada. Inclui totais por fonte com as datas da publicação indexada mais antiga e mais recente, e a cobertura por matéria em `areas` — cada área do direito com estado, contagens e tribunais indexados, inclusive as matérias fora do acervo (`covered: false`), para que resultado vazio nunca se confunda com matéria não coberta. As fontes são reportadas separadamente — um corpus estruturado espelhado do tribunal e menções no diário oficial são ativos diferentes. Leitura local, zero créditos.\n\n**Escopo exigido na chave de API:** `PUBLICATIONS_READ`","parameters":[{"schema":{"type":"string","minLength":2,"maxLength":200},"in":"query","name":"tribunalCodes","required":false,"description":"Tribunais do recorte num só valor, separados por vírgula, pela sigla (`tribunalCodes=STJ,TJSP`); o apelido continua aceito. Sem ele, a cobertura é a de todos os tribunais do acervo."},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"in":"query","name":"from","required":false},{"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"in":"query","name":"to","required":false},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"overallState":{"type":"string","enum":["NONE","PARTIAL","INDEXED"],"description":"NONE = nada indexado nem colheita registrada; PARTIAL = há fatia de colheita pendente (o indexado pode crescer); INDEXED = há documento pesquisável indexado e nenhuma colheita pendente."},"byTribunalMonth":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string"},"tribunalSigla":{"type":"string"},"period":{"type":"string"},"state":{"type":"string","enum":["NONE","PARTIAL","INDEXED"],"description":"NONE = nada indexado nem colheita registrada; PARTIAL = há fatia de colheita pendente (o indexado pode crescer); INDEXED = há documento pesquisável indexado e nenhuma colheita pendente."},"documentCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"indexableCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"slicesTotal":{"type":"integer","minimum":0,"maximum":9007199254740991},"slicesComplete":{"type":"integer","minimum":0,"maximum":9007199254740991},"slicesPending":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tribunalSigla","period","state","documentCount","indexableCount"],"additionalProperties":false}},"sources":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string"},"documentCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"indexableCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"oldestPublicationDate":{"nullable":true,"type":"string","format":"date-time"},"newestPublicationDate":{"nullable":true,"type":"string","format":"date-time"}},"required":["source","documentCount","indexableCount","oldestPublicationDate","newestPublicationDate"],"additionalProperties":false}},"areas":{"type":"array","items":{"type":"object","properties":{"area":{"type":"string","enum":["STATE_JUSTICE","FEDERAL_JUSTICE","SUPERIOR_INFRACONSTITUTIONAL","LABOR","ELECTORAL","MILITARY","TAX_ADMINISTRATIVE","CONSTITUTIONAL","SOCIAL_SECURITY_ADMINISTRATIVE","JUDICIARY_NORMATIVE","EXTERNAL_CONTROL"]},"label":{"type":"string"},"description":{"type":"string"},"covered":{"type":"boolean","description":"Se alguma fonte integrada alimenta a matéria. false = fora do acervo — declarado, para que resultado vazio nunca se confunda com matéria não coberta."},"state":{"type":"string","enum":["NONE","PARTIAL","INDEXED"],"description":"NONE = nada indexado nem colheita registrada; PARTIAL = há fatia de colheita pendente (o indexado pode crescer); INDEXED = há documento pesquisável indexado e nenhuma colheita pendente."},"documentCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"indexableCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"tribunalSiglas":{"type":"array","items":{"type":"string"},"description":"Tribunais com documento indexado na matéria, do maior volume para o menor."}},"required":["area","label","description","covered","state","documentCount","indexableCount","tribunalSiglas"],"additionalProperties":false},"description":"Cobertura por matéria, na ordem do catálogo, incluindo as não cobertas — para que resultado vazio seja distinguível de matéria fora do acervo."}},"required":["overallState","byTribunalMonth","sources","areas"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/publications/corpus/harvest-requests":{"post":{"operationId":"createPublicationHarvestRequest","summary":"Solicitar colheita do diário oficial para uma fatia do corpus","tags":["Jurisprudência"],"description":"Enfileira a colheita seletiva de publicações do diário oficial para os tribunais × janela de dias solicitados. O motor resolve o pedido em fatias tribunal × dia × termo-semente, deduplicadas globalmente: fatia que alguém já pediu é reportada em `deduped` e não custa nada — só fatias NOVAS são cobradas (1 crédito cada). A colheita roda de forma assíncrona sob um orçamento global diário de requisições/bytes compartilhado por todas as contas (`budgetRemaining` ecoa o que resta hoje); acompanhe o progresso via GET neste mesmo caminho ou pelo endpoint de cobertura do corpus. Fatias que excedem o teto por chamada ou a cota diária da conta são reportadas em `rejected` por motivo, nunca como erro.\n\n**Escopo exigido na chave de API:** `PUBLICATIONS_READ`","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tribunalCodes":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":2,"maxLength":24}},"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"seedTerms":{"minItems":1,"type":"array","items":{"type":"string","enum":["acordam","acordao"]}}},"required":["tribunalCodes","from","to"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"enqueued":{"type":"integer","minimum":0,"maximum":9007199254740991},"deduped":{"type":"integer","minimum":0,"maximum":9007199254740991},"rejected":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"count":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991}},"required":["reason","count"],"additionalProperties":false}},"budgetRemaining":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["enqueued","deduped","rejected","budgetRemaining"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"get":{"operationId":"listPublicationHarvestRequests","summary":"Listar os pedidos de colheita do chamador","tags":["Jurisprudência"],"description":"Progresso, com escopo de conta/office, das fatias de colheita solicitadas por este chamador (mais recentes primeiro, paginação keyset — passe em `cursor` o `nextCursor` da resposta anterior). Os contadores são por fatia: páginas buscadas, itens vistos, escritas executadas no acervo (`itemsPersisted`), itens que passaram a EXISTIR no acervo (`itemsNew` — a distinção importa porque duas colheitas podem escrever o mesmo item) e itens com expectativa de se tornarem indexáveis.\n\n**Escopo exigido na chave de API:** `PUBLICATIONS_READ`","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"cursor","required":false},{"schema":{"default":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"sliceId":{"type":"string"},"tribunalSigla":{"type":"string"},"harvestDate":{"type":"string","format":"date-time"},"seedTerm":{"type":"string"},"status":{"type":"string","enum":["QUEUED","LEASED","SUCCEEDED","FAILED","CANCELED"]},"pagesFetched":{"type":"integer","minimum":0,"maximum":9007199254740991},"itemsSeen":{"type":"integer","minimum":0,"maximum":9007199254740991},"itemsPersisted":{"type":"integer","minimum":0,"maximum":9007199254740991},"itemsNew":{"type":"integer","minimum":0,"maximum":9007199254740991},"itemsIndexable":{"type":"integer","minimum":0,"maximum":9007199254740991},"demandCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditsCharged":{"type":"integer","minimum":0,"maximum":9007199254740991},"requestedAt":{"type":"string","format":"date-time"},"startedAt":{"nullable":true,"type":"string","format":"date-time"},"completedAt":{"nullable":true,"type":"string","format":"date-time"},"lastError":{"nullable":true,"type":"string"}},"required":["sliceId","tribunalSigla","harvestDate","seedTerm","status","pagesFetched","itemsSeen","itemsPersisted","itemsNew","itemsIndexable","demandCount","priority","creditsCharged","requestedAt","startedAt","completedAt","lastError"],"additionalProperties":false}},"nextCursor":{"nullable":true,"type":"string"}},"required":["items"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/publications/text-alerts":{"post":{"operationId":"createPublicationTextAlert","summary":"Salvar um alerta textual (consulta permanente)","tags":["Jurisprudência"],"description":"Salva uma consulta textual permanente sobre a camada de jurisprudência indexada localmente. O motor reexecuta periodicamente exatamente a mesma busca que atende POST /v1/publications/text-searches e emite o evento de webhook assinado `PUBLICATION_TEXT_ALERT_MATCHED` sempre que publicações NOVAS (chaves nunca vistas por nenhuma execução anterior) casam — uma notificação por conjunto distinto de matches novos, carregando até 10 prévias de match mais o total. A primeira execução após a criação apenas estabelece a linha de base (o que já existia nunca notifica). A criação custa 0 créditos — um alerta é uma assinatura, não uma consulta: nenhuma busca é executada aqui e as execuções recorrentes são leituras do índice local. Salvar de novo a mesma consulta+filtros retorna o alerta existente com `deduped: true`. Cada conta pode manter no máximo 50 alertas; no teto, salvar uma consulta NOVA responde 409 (`TEXT_ALERT_LIMIT_EXCEEDED`). `externalRef` é uma referência sua, de formato livre, devolvida no payload do evento.\n\n**Escopo exigido na chave de API:** `PUBLICATIONS_READ`","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":3,"maxLength":300},"tribunalCodes":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":2,"maxLength":24}},"availableFrom":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"availableTo":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"attribution":{"minItems":1,"type":"array","items":{"type":"string","enum":["FIRST_PARTY","CITED_PRECEDENT","UNKNOWN"]}},"onlyStructured":{"default":false,"type":"boolean"},"collegiateOnly":{"default":false,"type":"boolean"},"externalRef":{"type":"string","minLength":1,"maxLength":128}},"required":["query"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"alert":{"type":"object","properties":{"alertId":{"type":"string"},"externalRef":{"nullable":true,"type":"string"},"query":{"type":"string"},"filters":{},"queryHash":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","PAUSED","DISABLED","ERROR"]},"consecutiveFailures":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastCheckedAt":{"nullable":true,"type":"string","format":"date-time"},"lastMatchedAt":{"nullable":true,"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"}},"required":["alertId","externalRef","query","filters","queryHash","status","consecutiveFailures","lastCheckedAt","lastMatchedAt","createdAt"],"additionalProperties":false},"deduped":{"type":"boolean"}},"required":["alert","deduped"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"get":{"operationId":"listPublicationTextAlerts","summary":"Listar os alertas textuais do chamador","tags":["Jurisprudência"],"description":"Lista com escopo de conta/office dos alertas textuais salvos (mais recentes primeiro, paginação keyset — passe em `cursor` o `nextCursor` da resposta anterior). `status` segue o ciclo de vida de monitor: ERROR significa que as últimas execuções falharam, mas o alerta continua agendado; a primeira execução bem-sucedida o devolve a ACTIVE.\n\n**Escopo exigido na chave de API:** `PUBLICATIONS_READ`","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"query","name":"cursor","required":false},{"schema":{"default":25,"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"alertId":{"type":"string"},"externalRef":{"nullable":true,"type":"string"},"query":{"type":"string"},"filters":{},"queryHash":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","PAUSED","DISABLED","ERROR"]},"consecutiveFailures":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastCheckedAt":{"nullable":true,"type":"string","format":"date-time"},"lastMatchedAt":{"nullable":true,"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"}},"required":["alertId","externalRef","query","filters","queryHash","status","consecutiveFailures","lastCheckedAt","lastMatchedAt","createdAt"],"additionalProperties":false}},"nextCursor":{"nullable":true,"type":"string"}},"required":["items"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/publications/text-alerts/{alertId}":{"delete":{"operationId":"deletePublicationTextAlert","summary":"Excluir um alerta textual","tags":["Jurisprudência"],"description":"Exclui um alerta textual salvo. Alertas são visíveis apenas para a conta/office que os criou (404 caso contrário).\n\n**Escopo exigido na chave de API:** `PUBLICATIONS_READ`","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"alertId","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"alertId":{"type":"string"},"deleted":{"type":"boolean","enum":[true]}},"required":["alertId","deleted"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/publications/{publicationKey}":{"get":{"operationId":"getPublicationByKey","summary":"Ler uma publicação pela chave","tags":["Publicações"],"description":"Retorna a publicação completa (texto + metadados) de uma chave listada antes por uma busca, servida do acervo, sem consultar a fonte. Chave não compartilhável (segredo de justiça) ou desconhecida responde 404.\n\n**Escopo exigido na chave de API:** `PUBLICATIONS_READ`","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":256},"in":"path","name":"publicationKey","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"item":{"type":"object","properties":{"publicationKey":{"type":"string","minLength":12,"maxLength":64},"processNumber":{"type":"string","maxLength":40},"formattedProcessNumber":{"type":"string","maxLength":40},"tribunal":{"type":"object","properties":{"alias":{"nullable":true,"type":"string"},"code":{"nullable":true,"type":"string"}},"additionalProperties":false},"source":{"type":"string","enum":["DJEN_PUBLIC","STJ_OPEN_DATA","CARF_OPEN_DATA","TJDFT_OPEN_DATA"]},"documentKind":{"type":"string","enum":["ACORDAO","ESPELHO","INTIMACAO"]},"sourceReference":{"nullable":true,"type":"string"},"sourceUrl":{"nullable":true,"type":"string"},"type":{"type":"string","minLength":1,"maxLength":240},"typeLabel":{"type":"string","minLength":1,"maxLength":240},"availableAt":{"nullable":true,"type":"string","format":"date-time"},"text":{"nullable":true,"type":"string"},"textUnavailable":{"type":"string","enum":["OBJECT_MISSING"]},"suspensionSignal":{"nullable":true,"type":"object","properties":{"confidence":{"type":"string","enum":["HIGH","MEDIUM","LOW"]},"keywords":{"type":"array","items":{"type":"string","maxLength":120}},"excerpt":{"type":"string","maxLength":400}},"required":["confidence","keywords","excerpt"],"additionalProperties":false},"metadata":{},"parties":{"description":"Quem a publicação nomeia, com o polo declarado na origem. Vem do eixo do diário; o acervo estruturado de jurisprudência não nomeia partes e devolve lista vazia. Publicação sob segredo sai sem partes.","type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":400},"polo":{"nullable":true,"type":"string"}},"required":["name","polo"],"additionalProperties":false}},"lawyers":{"description":"Advogados nomeados na publicação, com número e UF da inscrição quando a fonte os traz. Nome e inscrição são independentes — a fonte às vezes entrega só um dos dois. Publicação sob segredo sai sem advogados.","type":"array","items":{"type":"object","properties":{"name":{"nullable":true,"type":"string"},"oabNumber":{"nullable":true,"type":"string"},"oabState":{"nullable":true,"type":"string"}},"required":["name","oabNumber","oabState"],"additionalProperties":false}},"courtBody":{"description":"Órgão julgador da publicação, como a fonte o escreve. Presente nos dois eixos; `null` quando a fonte não o declara.","nullable":true,"type":"string"},"shareable":{"type":"boolean"},"matchedBy":{"description":"Como o item casou a consulta por documento: `document` = o CNPJ consta no teor, a empresa foi citada no ato. Compare com `parties` para saber se ela já figura como parte.","type":"string","enum":["document"]}},"required":["publicationKey","processNumber","formattedProcessNumber","tribunal","source","documentKind","type","typeLabel","suspensionSignal","metadata"],"additionalProperties":{}},"caseLaw":{"nullable":true,"type":"object","properties":{"ementa":{"type":"string","description":"Ementa isolada do teor, já redigida. Em fonte estruturada que não publica ementa para o julgado, o dispositivo faz as vezes de resumo."},"tese":{"nullable":true,"description":"Tese jurídica, quando destacável.","type":"string"},"secoes":{"nullable":true,"description":"Seções da ementa no padrão da Resolução CNJ 522/2023.","type":"object","properties":{"casoEmExame":{"nullable":true,"type":"string"},"questaoEmDiscussao":{"nullable":true,"type":"string"},"razoesDeDecidir":{"nullable":true,"type":"string"},"dispositivoETese":{"nullable":true,"type":"string"}},"required":["casoEmExame","questaoEmDiscussao","razoesDeDecidir","dispositivoETese"],"additionalProperties":false},"relator":{"nullable":true,"type":"string"},"orgaoJulgador":{"nullable":true,"type":"string"},"classeJulgado":{"nullable":true,"type":"string"},"julgadoEm":{"nullable":true,"type":"string","format":"date-time"},"extractorVersion":{"type":"string"}},"required":["ementa","tese","secoes","relator","orgaoJulgador","classeJulgado","julgadoEm","extractorVersion"],"additionalProperties":false},"text":{"type":"object","properties":{"chars":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"truncated":{"type":"boolean"}},"required":["chars","truncated"],"additionalProperties":false}},"required":["item","caseLaw"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/precedents":{"get":{"operationId":"searchPrecedents","summary":"Buscar precedentes qualificados","tags":["Jurisprudência"],"description":"Busca temas de precedente qualificado do STJ — recursos repetitivos, controvérsias, IAC, SIRDR e PUIL — pela questão submetida a julgamento e pela tese firmada, sem sensibilidade a acento. A situação de cada tema é a declarada pela fonte e acompanha o julgamento (afetado, em julgamento, trânsito em julgado…), então saber se a questão de um recurso já tem tema afetado ou tese firmada é uma chamada. A citação usual também funciona como busca (`query=Tema 1234`) ou como filtro exato (`type=TEMA&number=1234`). Leitura do acervo local, atualizado semanalmente a partir dos dados abertos do STJ (licença CC-BY).\n\n**Escopo exigido na chave de API:** `PUBLICATIONS_READ`","parameters":[{"schema":{"type":"string","minLength":2,"maxLength":300},"in":"query","name":"query","required":false,"description":"Busca textual sem sensibilidade a acento sobre a questão submetida a julgamento, a tese firmada e a citação usual (\"Tema 1234\")."},{"schema":{"type":"string","enum":["TEMA","CONTROVERSIA","IAC","SIRDR","PUIL"]},"in":"query","name":"type","required":false},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991},"in":"query","name":"number","required":false},{"schema":{"type":"string","minLength":2,"maxLength":80},"in":"query","name":"situation","required":false,"description":"Recorte por situação declarada pela fonte, por substring sem caixa (\"afetado\", \"trânsito\")."},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"hasThesis","required":false,"description":"true = só temas com tese firmada; false = só os ainda sem."},{"schema":{"default":20,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":50},"in":"query","name":"limit","required":false},{"schema":{"default":0,"type":"integer","minimum":0,"maximum":5000},"in":"query","name":"offset","required":false},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["TEMA","CONTROVERSIA","IAC","SIRDR","PUIL"]},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"situation":{"type":"string"},"judgingBody":{"nullable":true,"type":"string"},"question":{"type":"string"},"thesis":{"nullable":true,"type":"string"},"firstAffectedAt":{"nullable":true,"type":"string","format":"date-time"},"judgedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","type","number","situation","judgingBody","question","thesis","firstAffectedAt","judgedAt","updatedAt"],"additionalProperties":false}}},"required":["total","items"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/precedents/{id}":{"get":{"operationId":"getPrecedent","summary":"Detalhar um precedente qualificado","tags":["Jurisprudência"],"description":"Retorna um tema de precedente qualificado por id (obtido na busca), com os campos completos — delimitação do julgado, referências legislativas e sumulares, súmula originada, repercussões gerais correlatas do STF — e os processos paradigma do grupo (leading case primeiro), incluindo o quantitativo de processos sobrestados na origem.\n\n**Escopo exigido na chave de API:** `PUBLICATIONS_READ`","parameters":[{"schema":{"type":"string","minLength":10,"maxLength":40},"in":"path","name":"id","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["TEMA","CONTROVERSIA","IAC","SIRDR","PUIL"]},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"situation":{"type":"string"},"judgingBody":{"nullable":true,"type":"string"},"question":{"type":"string"},"thesis":{"nullable":true,"type":"string"},"firstAffectedAt":{"nullable":true,"type":"string","format":"date-time"},"judgedAt":{"nullable":true,"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"complementaryNotes":{"nullable":true,"type":"string"},"nugepnacNotes":{"nullable":true,"type":"string"},"delimitation":{"nullable":true,"type":"string"},"previousUnderstanding":{"nullable":true,"type":"string"},"legislativeReferences":{"nullable":true,"type":"string"},"summaryReferences":{"nullable":true,"type":"string"},"originatedSummary":{"nullable":true,"type":"string"},"subjects":{"nullable":true,"type":"string"},"generalRepercussions":{"type":"array","items":{"type":"object","properties":{"themeNumber":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"description":{"nullable":true,"type":"string"}},"required":["themeNumber","description"],"additionalProperties":false}},"processes":{"type":"array","items":{"type":"object","properties":{"processLabel":{"type":"string"},"registryNumber":{"nullable":true,"type":"string"},"rapporteur":{"nullable":true,"type":"string"},"leadingCase":{"type":"boolean"},"originCourtAcronym":{"nullable":true,"type":"string"},"affectedAt":{"nullable":true,"type":"string","format":"date-time"},"judgedAt":{"nullable":true,"type":"string","format":"date-time"},"suspendedAtOriginCount":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"stfProcess":{"nullable":true,"type":"string"},"stfStatus":{"nullable":true,"type":"string"},"originCourt":{"nullable":true,"type":"string"},"affectationObservation":{"nullable":true,"type":"string"},"disaffected":{"nullable":true,"type":"string"}},"required":["processLabel","registryNumber","rapporteur","leadingCase","originCourtAcronym","affectedAt","judgedAt","suspendedAtOriginCount","stfProcess","stfStatus","originCourt","affectationObservation","disaffected"],"additionalProperties":false}}},"required":["id","type","number","situation","judgingBody","question","thesis","firstAffectedAt","judgedAt","updatedAt","complementaryNotes","nugepnacNotes","delimitation","previousUnderstanding","legislativeReferences","summaryReferences","originatedSummary","subjects","generalRepercussions","processes"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/legal-norms/resolve":{"post":{"operationId":"resolveLegalNorm","summary":"Resolver uma norma federal no registro oficial","tags":["Legislação"],"description":"Entende a citação como ela é escrita (ou aceita tipo, número e ano já separados), pergunta o ato ao registro oficial de normas federais e devolve o que ele declara. Custa crédito só quando há consulta: citação não entendida (`UNRECOGNIZED`) e tipo de ato fora do registro (`OUT_OF_REACH`) são decididos antes da rede e saem a zero. `NOT_FOUND` significa que o ato não consta do registro — não é prova de que ele não exista. A chave de teste recusa esta porta: não há acervo a reler.\n\n**Escopo exigido na chave de API:** `PUBLICATIONS_READ`","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"citation":{"description":"A citação como ela aparece no texto: \"Lei 8.078/1990, art. 6º, VIII\", \"CDC art. 6\", \"art. 5º, LXXVIII, da CF\", \"Decreto-Lei 5.452/43\", \"LC 123/2006\", \"MP 1.172/2023\".","type":"string","minLength":3,"maxLength":300},"type":{"description":"Alternativa à citação livre: o tipo do ato. CF dispensa número e ano.","type":"string","enum":["LEI","LCP","DEL","DEC","MPV","EMC","CF"]},"number":{"type":"string","pattern":"^\\d{1,3}(?:\\.\\d{3})*(?:-\\d{1,2})?$|^\\d{1,7}(?:-\\d{1,2})?$"},"year":{"type":"integer","minimum":1800,"maximum":2200}}}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"status":{"type":"string","enum":["FOUND","NOT_FOUND","OUT_OF_REACH","UNRECOGNIZED"],"description":"FOUND: o ato consta do registro. NOT_FOUND: não consta — o que não é prova de que não exista. OUT_OF_REACH: o tipo de ato citado está fora do registro, que cobre lei, lei complementar, decreto-lei, decreto, medida provisória, emenda constitucional e a Constituição da República. UNRECOGNIZED: a citação não foi entendida; reenvie com tipo, número e ano."},"reason":{"nullable":true,"type":"string"},"parsed":{"nullable":true,"type":"object","properties":{"type":{"type":"string","enum":["LEI","LCP","DEL","DEC","MPV","EMC","CF"]},"number":{"nullable":true,"type":"string"},"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"yearAssumed":{"type":"boolean","description":"O ano veio com dois dígitos e foi completado pela janela do presente; `checked` diz qual ano foi de fato perguntado."},"alias":{"nullable":true,"type":"string"},"article":{"nullable":true,"type":"string"},"paragraph":{"nullable":true,"type":"string"},"item":{"nullable":true,"type":"string"}},"required":["type","number","year","yearAssumed","alias","article","paragraph","item"],"additionalProperties":false},"checked":{"nullable":true,"description":"O ato que foi de fato perguntado ao registro.","type":"object","properties":{"type":{"type":"string","enum":["LEI","LCP","DEL","DEC","MPV","EMC","CF"]},"number":{"nullable":true,"type":"string"},"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["type","number","year"],"additionalProperties":false},"norm":{"nullable":true,"type":"object","properties":{"name":{"type":"string"},"number":{"nullable":true,"type":"string"},"aliases":{"type":"array","items":{"type":"string"}},"ementa":{"nullable":true,"type":"string"},"signedAt":{"nullable":true,"type":"string"},"url":{"nullable":true,"description":"Página oficial da norma no registro.","type":"string"},"standing":{"type":"string","enum":["REVOKED","CONVERTED","REJECTED","UNKNOWN"],"description":"O que o registro DECLARA sobre a norma. Não há `IN_FORCE`: ausência de declaração de revogação não é afirmação de vigência."},"standingBy":{"nullable":true,"description":"A norma posterior que revogou, converteu ou rejeitou esta.","type":"string"},"standingNote":{"type":"string"},"amendments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Alterações PERMANENTES que o registro associa à norma. Reedição de medida provisória não é contada."},"lastAmendedAt":{"nullable":true,"type":"string"},"editions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Quantos documentos o registro guarda sob este número e ano. Acima de 1 são reedições, e a resposta descreve a última."}},"required":["name","number","aliases","ementa","signedAt","url","standing","standingBy","standingNote","amendments","lastAmendedAt","editions"],"additionalProperties":false},"article":{"nullable":true,"type":"object","properties":{"cited":{"type":"string"},"references":{"type":"array","items":{"type":"object","properties":{"norm":{"type":"string"},"comment":{"type":"string"}},"required":["norm","comment"],"additionalProperties":false},"description":"O que o registro prende a este dispositivo — alteração, acréscimo, regulamentação, revogação. O `comment` de cada item diz qual."},"note":{"type":"string"}},"required":["cited","references","note"],"additionalProperties":false},"checkedAt":{"nullable":true,"type":"string"},"disclaimer":{"type":"string"}},"required":["status","reason","parsed","checked","norm","article","checkedAt","disclaimer"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/usage":{"get":{"operationId":"getUsage","summary":"Consultar o uso do projeto da API key atual","tags":["Uso"],"description":"Retorna o uso do período, os créditos restantes, métricas de uso agrupadas e os eventos de uso recentes da conta e do projeto autenticados. `byOffice` reparte o consumo pelos valores de `X-Office-Id` que as requisições informaram — é o recorte para repassar custo a sub-contas. A entrada com `officeId: null` reúne o que nenhuma requisição atribuiu mais o trabalho recorrente (varredura de monitor, entrega de webhook), então a soma das partes fecha com o total. `subTenantLimit` é quantos sub-tenants o plano admite por período (nulo é sem teto) e `subTenantsUsed` quantos já receberam requisição no período da conta inteira — um office novo além do teto é recusado com 403 `SUB_TENANT_LIMIT_EXCEEDED`; os já atendidos passam sempre.\n\n**Escopo exigido na chave de API:** `USAGE_READ`","parameters":[{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"periodStart":{"type":"string","format":"date-time"},"periodEnd":{"type":"string","format":"date-time"},"monthlyCredits":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"topupCredits":{"type":"integer","minimum":0,"maximum":9007199254740991},"usedCredits":{"type":"integer","minimum":0,"maximum":9007199254740991},"remainingCredits":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"requestCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"byKind":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","minLength":1},"requests":{"type":"integer","minimum":0,"maximum":9007199254740991},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["kind","requests","credits"],"additionalProperties":false}},"byOffice":{"type":"array","items":{"type":"object","properties":{"officeId":{"nullable":true,"type":"string"},"requests":{"type":"integer","minimum":0,"maximum":9007199254740991},"backgroundWork":{"type":"integer","minimum":0,"maximum":9007199254740991},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["officeId","requests","backgroundWork","credits"],"additionalProperties":false}},"subTenantLimit":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"subTenantsUsed":{"type":"integer","minimum":0,"maximum":9007199254740991},"recentEvents":{"type":"array","items":{"type":"object","properties":{"requestId":{"type":"string","minLength":1},"kind":{"type":"string","minLength":1},"method":{"type":"string","minLength":1},"path":{"type":"string","minLength":1},"statusCode":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time"},"errorCode":{"description":"O código do erro que recusou a requisição ou o trabalho de fundo. Ausente quando foi servido.","type":"string","minLength":1},"fieldPaths":{"description":"Num 400 de validação, os campos recusados em notação de ponto (`root` é o corpo ou a query inteira). Só o nome do campo, nunca o valor enviado.","type":"array","items":{"type":"string","minLength":1}}},"required":["requestId","kind","method","path","credits","createdAt"],"additionalProperties":false}}},"required":["periodStart","periodEnd","monthlyCredits","topupCredits","usedCredits","remainingCredits","requestCount","byKind","byOffice","subTenantLimit","subTenantsUsed","recentEvents"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/webhooks/health":{"get":{"operationId":"getWebhookHealth","summary":"Saúde de entrega dos webhooks por endpoint","tags":["Webhooks"],"description":"Profundidade da fila e contadores de entregas/falhas das últimas 24h por endpoint de webhook da conta — com ela, a sua integração detecta pela API um receptor com falha, sem depender do portal.\n\n**Escopo exigido na chave de API:** `USAGE_READ`","parameters":[{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"endpoints":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"isActive":{"type":"boolean"},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"retrying":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"delivered24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastDeliveredAt":{"nullable":true,"type":"string","format":"date-time"},"lastError":{"nullable":true,"type":"string"},"consecutiveFailures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"retryPausedUntil":{"nullable":true,"type":"string","format":"date-time"},"suspendedAt":{"nullable":true,"type":"string","format":"date-time"},"oldestPendingAt":{"nullable":true,"type":"string","format":"date-time"},"lastTestAt":{"nullable":true,"type":"string","format":"date-time"},"lastTestStatus":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastTestError":{"nullable":true,"type":"string"}},"required":["id","url","isActive","pending","retrying","failed24h","delivered24h","lastDeliveredAt","lastError","consecutiveFailures","retryPausedUntil","suspendedAt","oldestPendingAt","lastTestAt","lastTestStatus","lastTestError"],"additionalProperties":{}}}},"required":["endpoints"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/webhooks/deliveries":{"get":{"operationId":"listWebhookDeliveries","summary":"Listar entregas de webhook","tags":["Webhooks"],"description":"Entregas da conta com paginação keyset (passe em `cursor` o `meta.nextCursor` da resposta anterior).\n\n**Escopo exigido na chave de API:** `USAGE_READ`","parameters":[{"schema":{"type":"string","maxLength":64},"in":"query","name":"cursor","required":false},{"schema":{"default":50,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","enum":["PENDING","RETRYING","DELIVERED","FAILED","CANCELED"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","maxLength":64},"in":"query","name":"endpointId","required":false},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"endpointId":{"type":"string"},"eventId":{"type":"string"},"status":{"type":"string"},"attemptCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nextAttemptAt":{"nullable":true,"type":"string","format":"date-time"},"deliveredAt":{"nullable":true,"type":"string","format":"date-time"},"lastError":{"nullable":true,"type":"string"},"responseStatus":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"string","format":"date-time"},"event":{"nullable":true,"type":"object","properties":{"type":{"type":"string"},"occurredAt":{"type":"string","format":"date-time"}},"required":["type","occurredAt"],"additionalProperties":false}},"required":["id","endpointId","eventId","status","attemptCount","nextAttemptAt","deliveredAt","lastError","responseStatus","createdAt"],"additionalProperties":{}}},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/webhooks/unsubscribed-event-types":{"get":{"operationId":"listUnsubscribedEventTypes","summary":"Tipos de evento que a conta produz e nenhum receptor assina","tags":["Webhooks"],"description":"Os tipos de evento que a conta produziu nos últimos 30 dias e que nenhum endpoint ativo assina — com a contagem, o último instante e a classe: `DATA` é o produto (movimentação, publicação, achado, busca ou colheita concluída) e `OPERATIONAL` é sinal sobre a operação (`MONITOR_SYNC_FAILED` e os avisos comerciais). Um evento nasce como registro mesmo sem assinante e fica disponível por 180 dias: para fechar a lacuna, assine o tipo no endpoint (`PATCH /v1/webhooks/endpoints/{endpointId}`) e reenvie a janela (`POST /v1/webhooks/endpoints/{endpointId}/replay`) — nada é assinado nem reenviado sozinho. `MONITOR_SYNC_SUCCEEDED` nunca aparece aqui: é o sinal de vida da vigília, sai a cada varredura e não assiná-lo é a escolha esperada. O endpoint suspenso pelo motor conta como assinante; o pausado pelo dono, não. Os tipos operacionais dispensados no portal vêm em `dismissed`. A lacuna é medida por conta: qualquer endpoint ativo da conta conta como assinante, independentemente do projeto a que ele se limite. Custa 0 créditos.\n\n**Escopo exigido na chave de API:** `EVENTS_READ`","parameters":[{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"windowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"items":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["PROCESS_MOVEMENT_CREATED","PROCESS_INSTANCE_DISCOVERED","PUBLICATION_CREATED","MONITOR_SYNC_SUCCEEDED","MONITOR_SYNC_FAILED","SEARCH_JOB_COMPLETED","PUBLICATION_TEXT_ALERT_MATCHED","PUBLICATION_HARVEST_COMPLETED","PROCESS_LOOKUP_COMPLETED","QUOTA_LOW","PERIOD_ENDING","SUBSCRIPTION_PAST_DUE"]},"class":{"type":"string","enum":["DATA","OPERATIONAL"]},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastOccurredAt":{"type":"string","format":"date-time"}},"required":["type","class","count","lastOccurredAt"],"additionalProperties":{}}},"dismissed":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["PROCESS_MOVEMENT_CREATED","PROCESS_INSTANCE_DISCOVERED","PUBLICATION_CREATED","MONITOR_SYNC_SUCCEEDED","MONITOR_SYNC_FAILED","SEARCH_JOB_COMPLETED","PUBLICATION_TEXT_ALERT_MATCHED","PUBLICATION_HARVEST_COMPLETED","PROCESS_LOOKUP_COMPLETED","QUOTA_LOW","PERIOD_ENDING","SUBSCRIPTION_PAST_DUE"]},"dismissedAt":{"type":"string","format":"date-time"}},"required":["type","dismissedAt"],"additionalProperties":{}}}},"required":["windowDays","items","dismissed"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/events":{"get":{"operationId":"listEvents","summary":"Listar os eventos da conta","tags":["Webhooks"],"description":"Lista os eventos que o motor produziu para a conta, do mais recente ao mais antigo, com o estado de entrega de cada um. É por aqui que se descobre um `eventId` sem depender de ter recebido a entrega dele — inclusive para eventos anteriores ao cadastro do endpoint. Com `undeliveredOnly=true` a lista traz só o que nunca foi entregue a endpoint nenhum; para reenviar, use POST /v1/webhooks/events/{eventId}/replay. Custa 0 créditos.\n\n**Escopo exigido na chave de API:** `EVENTS_READ`","parameters":[{"schema":{"type":"string","maxLength":64},"in":"query","name":"cursor","required":false},{"schema":{"default":50,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","enum":["PROCESS_MOVEMENT_CREATED","PROCESS_INSTANCE_DISCOVERED","PUBLICATION_CREATED","MONITOR_SYNC_SUCCEEDED","MONITOR_SYNC_FAILED","SEARCH_JOB_COMPLETED","PUBLICATION_TEXT_ALERT_MATCHED","PUBLICATION_HARVEST_COMPLETED","PROCESS_LOOKUP_COMPLETED","QUOTA_LOW","PERIOD_ENDING","SUBSCRIPTION_PAST_DUE"]},"in":"query","name":"type","required":false},{"schema":{"type":"string","maxLength":64},"in":"query","name":"monitorId","required":false},{"schema":{},"in":"query","name":"since","required":false},{"schema":{},"in":"query","name":"until","required":false},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"undeliveredOnly","required":false},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"occurredAt":{"type":"string","format":"date-time"},"projectId":{"nullable":true,"type":"string"},"monitorId":{"nullable":true,"type":"string"},"payload":{},"deliveries":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"delivered":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","delivered","failed","pending"],"additionalProperties":false}},"required":["id","type","occurredAt","projectId","monitorId","payload","deliveries"],"additionalProperties":{}}},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/events/{eventId}":{"get":{"operationId":"getEvent","summary":"Ler um evento","tags":["Webhooks"],"description":"Devolve um evento da conta com o payload íntegro — exatamente o que o receptor teria lido no corpo da entrega. Custa 0 créditos.\n\n**Escopo exigido na chave de API:** `EVENTS_READ`","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"eventId","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"occurredAt":{"type":"string","format":"date-time"},"projectId":{"nullable":true,"type":"string"},"monitorId":{"nullable":true,"type":"string"},"payload":{},"deliveries":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"delivered":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","delivered","failed","pending"],"additionalProperties":false}},"required":["id","type","occurredAt","projectId","monitorId","payload","deliveries"],"additionalProperties":{}},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/webhooks/endpoints":{"get":{"operationId":"listWebhookEndpoints","summary":"Listar endpoints de webhook","tags":["Webhooks"],"description":"Retorna os endpoints de webhook da conta, com eventos assinados e projeto de escopo. O signing secret nunca aparece em listagem — ele é devolvido uma única vez na criação ou na rotação.\n\n**Escopo exigido na chave de API:** `WEBHOOKS_WRITE`","parameters":[{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"description":{"nullable":true,"type":"string"},"eventTypes":{"type":"array","items":{"type":"string"}},"isActive":{"type":"boolean"},"suspendedAt":{"nullable":true,"type":"string","format":"date-time"},"lastTestAt":{"nullable":true,"type":"string","format":"date-time"},"lastTestStatus":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastTestError":{"nullable":true,"type":"string"},"project":{"nullable":true,"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"reach":{"type":"object","properties":{"scope":{"type":"string","enum":["ACCOUNT","PROJECT"]},"projects":{"type":"integer","minimum":0,"maximum":9007199254740991},"includesFutureProjects":{"type":"boolean"}},"required":["scope","projects","includesFutureProjects"],"additionalProperties":false}},"required":["id","url","description","eventTypes","isActive","suspendedAt","lastTestAt","lastTestStatus","lastTestError","project","reach"],"additionalProperties":false}},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"operationId":"createWebhookEndpoint","summary":"Criar endpoint de webhook","tags":["Webhooks"],"description":"Cadastra um endpoint receptor: URL, eventos assinados e, opcionalmente, o projeto de escopo. A resposta devolve o signing secret UMA única vez — guarde-o; depois disso ele só muda pela rotação. Requer o escopo WEBHOOKS_WRITE na chave.\n\n**Escopo exigido na chave de API:** `WEBHOOKS_WRITE`","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"nullable":true,"type":"string","minLength":8,"maxLength":64},"url":{"type":"string","maxLength":500,"format":"uri"},"description":{"type":"string","maxLength":240},"eventTypes":{"minItems":1,"type":"array","items":{"type":"string","enum":["PROCESS_MOVEMENT_CREATED","PROCESS_INSTANCE_DISCOVERED","PUBLICATION_CREATED","MONITOR_SYNC_SUCCEEDED","MONITOR_SYNC_FAILED","SEARCH_JOB_COMPLETED","PUBLICATION_TEXT_ALERT_MATCHED","PUBLICATION_HARVEST_COMPLETED","PROCESS_LOOKUP_COMPLETED","QUOTA_LOW","PERIOD_ENDING","SUBSCRIPTION_PAST_DUE"]}},"isActive":{"default":true,"type":"boolean"}},"required":["url","eventTypes"]}}}},"parameters":[{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"endpoint":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"description":{"nullable":true,"type":"string"},"eventTypes":{"type":"array","items":{"type":"string"}},"isActive":{"type":"boolean"},"suspendedAt":{"nullable":true,"type":"string","format":"date-time"},"lastTestAt":{"nullable":true,"type":"string","format":"date-time"},"lastTestStatus":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastTestError":{"nullable":true,"type":"string"},"project":{"nullable":true,"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"reach":{"type":"object","properties":{"scope":{"type":"string","enum":["ACCOUNT","PROJECT"]},"projects":{"type":"integer","minimum":0,"maximum":9007199254740991},"includesFutureProjects":{"type":"boolean"}},"required":["scope","projects","includesFutureProjects"],"additionalProperties":false}},"required":["id","url","description","eventTypes","isActive","suspendedAt","lastTestAt","lastTestStatus","lastTestError","project","reach"],"additionalProperties":false},"signingSecret":{"type":"string"}},"required":["endpoint","signingSecret"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/webhooks/endpoints/{endpointId}":{"patch":{"operationId":"updateWebhookEndpoint","summary":"Atualizar endpoint de webhook","tags":["Webhooks"],"description":"Atualização PARCIAL: envie só os campos a mudar (por exemplo, `{ \"isActive\": false }`); campo omitido permanece como está. Desativar o endpoint cancela as entregas pendentes dele; reativar não as ressuscita — reenvie um evento específico via POST /v1/webhooks/events/{eventId}/replay. Endpoint de outra conta responde 404.\n\n**Escopo exigido na chave de API:** `WEBHOOKS_WRITE`","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"nullable":true,"type":"string","minLength":8,"maxLength":64},"url":{"type":"string","maxLength":500,"format":"uri"},"description":{"type":"string","maxLength":240},"eventTypes":{"minItems":1,"type":"array","items":{"type":"string","enum":["PROCESS_MOVEMENT_CREATED","PROCESS_INSTANCE_DISCOVERED","PUBLICATION_CREATED","MONITOR_SYNC_SUCCEEDED","MONITOR_SYNC_FAILED","SEARCH_JOB_COMPLETED","PUBLICATION_TEXT_ALERT_MATCHED","PUBLICATION_HARVEST_COMPLETED","PROCESS_LOOKUP_COMPLETED","QUOTA_LOW","PERIOD_ENDING","SUBSCRIPTION_PAST_DUE"]}},"isActive":{"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"endpointId","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"description":{"nullable":true,"type":"string"},"eventTypes":{"type":"array","items":{"type":"string"}},"isActive":{"type":"boolean"},"suspendedAt":{"nullable":true,"type":"string","format":"date-time"},"lastTestAt":{"nullable":true,"type":"string","format":"date-time"},"lastTestStatus":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastTestError":{"nullable":true,"type":"string"},"project":{"nullable":true,"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"reach":{"type":"object","properties":{"scope":{"type":"string","enum":["ACCOUNT","PROJECT"]},"projects":{"type":"integer","minimum":0,"maximum":9007199254740991},"includesFutureProjects":{"type":"boolean"}},"required":["scope","projects","includesFutureProjects"],"additionalProperties":false}},"required":["id","url","description","eventTypes","isActive","suspendedAt","lastTestAt","lastTestStatus","lastTestError","project","reach"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"operationId":"deleteWebhookEndpoint","summary":"Excluir endpoint de webhook","tags":["Webhooks"],"description":"Exclui o endpoint e o histórico de entregas dele. Endpoint de outra conta responde 404.\n\n**Escopo exigido na chave de API:** `WEBHOOKS_WRITE`","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"endpointId","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean","enum":[true]}},"required":["id","deleted"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/webhooks/endpoints/{endpointId}/test":{"post":{"operationId":"testWebhookEndpoint","summary":"Disparar uma entrega de teste","tags":["Webhooks"],"description":"Envia na hora, de forma síncrona, uma entrega sintética assinada (type `WEBHOOK_TEST`) ao endpoint e responde com o resultado: alcançou o receptor? Qual status HTTP voltou? Nada é gravado na fila e nada conta como entrega: o desfecho fica carimbado no próprio receptor (`lastTestAt`, `lastTestStatus`, `lastTestError`, visíveis em `GET /v1/webhooks/endpoints` e `GET /v1/webhooks/health`), sem tocar na série de recusas nem na suspensão. É a forma de validar conectividade e verificação de assinatura antes do primeiro evento real. Endpoint de outra conta responde 404.\n\n**Escopo exigido na chave de API:** `WEBHOOKS_WRITE`","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"endpointId","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"delivered":{"type":"boolean"},"responseStatus":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"error":{"nullable":true,"type":"string"}},"required":["id","url","delivered","responseStatus","error"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/webhooks/events/{eventId}/replay":{"post":{"operationId":"replayWebhookEvent","summary":"Reenviar um evento (replay)","tags":["Webhooks"],"description":"Reenfileira as entregas de um evento para tentativa imediata: cria as entregas que faltam (endpoint cadastrado depois do evento) e zera as FAILED/CANCELED/DELIVERED — só nos endpoints que recebem entrega; o pausado pelo titular e o com push suspenso são pulados. O eventId vem de GET /v1/webhooks/deliveries. Evento de outra conta responde 404.\n\n**Escopo exigido na chave de API:** `WEBHOOKS_WRITE`","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"eventId","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"replayQueued":{"type":"boolean","enum":[true]},"queued":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["replayQueued","queued"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/webhooks/endpoints/{endpointId}/replay":{"post":{"operationId":"replayWebhookWindow","summary":"Reenviar uma janela de eventos ao endpoint","tags":["Webhooks"],"description":"O \"reenvie tudo de sábado para cá\": reenfileira, para UM endpoint, os eventos assinados que ocorreram na janela `from`..`to` — cria as entregas que faltam e devolve à fila as FAILED/CANCELED (com `includeDelivered: true`, também as já entregues). O teto por chamada é dito na resposta: quando `skipped > 0`, repita a chamada com `from = nextFrom` para continuar. Endpoint desativado ou com o push suspenso responde 409; endpoint de outra conta responde 404.\n\n**Escopo exigido na chave de API:** `WEBHOOKS_WRITE`","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"from":{},"to":{},"type":{"type":"string","enum":["PROCESS_MOVEMENT_CREATED","PROCESS_INSTANCE_DISCOVERED","PUBLICATION_CREATED","MONITOR_SYNC_SUCCEEDED","MONITOR_SYNC_FAILED","SEARCH_JOB_COMPLETED","PUBLICATION_TEXT_ALERT_MATCHED","PUBLICATION_HARVEST_COMPLETED","PROCESS_LOOKUP_COMPLETED","QUOTA_LOW","PERIOD_ENDING","SUBSCRIPTION_PAST_DUE"]},"includeDelivered":{"default":false,"type":"boolean"}},"required":["from"]}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"endpointId","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"matchedEvents":{"type":"integer","minimum":0,"maximum":9007199254740991},"queued":{"type":"integer","minimum":0,"maximum":9007199254740991},"reset":{"type":"integer","minimum":0,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":0,"maximum":9007199254740991},"nextFrom":{"nullable":true,"type":"string","format":"date-time"}},"required":["id","matchedEvents","queued","reset","skipped","nextFrom"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/webhooks/endpoints/{endpointId}/resume":{"post":{"operationId":"resumeWebhookEndpointDeliveries","summary":"Retomar as entregas de um endpoint espaçado ou suspenso","tags":["Webhooks"],"description":"Devolve a fila do endpoint ao ritmo normal, zerando a contagem de recusas seguidas, o espaçamento e a suspensão do push. O espaçamento se desfaz sozinho na primeira resposta 2xx — use esta rota quando acabou de consertar o receptor e não quer esperar a próxima tentativa, que no espaçamento máximo sai a cada 6 horas. A suspensão (depois de 7 dias de recusa contínua) só se desfaz aqui ou pelo portal. A resposta traz `replayFrom` sempre que havia uma série de recusas — o início dela, de onde reenviar (`POST …/replay`) para repor o que falhou na série e, se o push esteve suspenso, o que nasceu sem entrega — e `suspendedSince` quando o push estava suspenso. Não ressuscita entrega já esgotada: para isso é o replay. Endpoint pausado pelo titular responde 409; endpoint de outra conta responde 404.\n\n**Escopo exigido na chave de API:** `WEBHOOKS_WRITE`","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"endpointId","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"clearedFailures":{"type":"integer","minimum":0,"maximum":9007199254740991},"pendingDeliveries":{"type":"integer","minimum":0,"maximum":9007199254740991},"suspendedSince":{"nullable":true,"type":"string","format":"date-time"},"replayFrom":{"nullable":true,"type":"string","format":"date-time"}},"required":["id","url","clearedFailures","pendingDeliveries","suspendedSince","replayFrom"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/webhooks/endpoints/{endpointId}/rotate-secret":{"post":{"operationId":"rotateWebhookEndpointSecret","summary":"Rotacionar o signing secret do endpoint","tags":["Webhooks"],"description":"Gera um novo signing secret e o devolve UMA única vez, invalidando o anterior imediatamente — atualize o receiver antes de rotacionar em produção. Endpoint de outra conta responde 404.\n\n**Escopo exigido na chave de API:** `WEBHOOKS_WRITE`","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"in":"path","name":"endpointId","required":true},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-request-id","required":false,"description":"Identificador da requisição, escolhido por você e ecoado em meta.requestId e no corpo de erro. Tem DOIS papéis: (1) rastreio, em toda rota — é por ele que o suporte encontra a chamada; (2) idempotência por conta em POST /v1/publications/text-searches, onde reenviar o mesmo valor reapresenta a busca já congelada, sem nova cobrança. Fora dessa rota o valor não deduplica nada: para fazer de novo uma chamada já feita, mande um valor novo. A busca assíncrona (POST /v1/processes/search) deduplica pelo corpo, não por este valor: a mesma busca, da mesma conta e do mesmo X-Office-Id, devolve o job que já existe, em aberto ou concluído há menos de 180 dias, sem nova cobrança; depois de um job que falhou, foi cancelado ou passou desse prazo, ela abre um job novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio."},{"schema":{"type":"string","minLength":1},"in":"header","name":"x-office-id","required":false,"description":"Atribui a chamada a um sub-tenant seu (por exemplo, um escritório) na medição de uso e no roteamento de eventos. Opcional."}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"signingSecret":{"type":"string"}},"required":["id","signingSecret"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"credits":{"type":"integer","minimum":0,"maximum":9007199254740991},"cacheHit":{"type":"boolean"}},"required":["requestId"],"additionalProperties":{}}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Resposta padrão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Código estável da taxonomia (VALIDATION_ERROR, QUOTA_EXCEEDED, UPSTREAM_TIMEOUT…). É por ele que se programa, não pela mensagem."},"message":{"type":"string","description":"Descrição legível, sujeita a mudança."},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,200}$","description":"Identificador da requisição, para suporte e rastreamento. É o X-Request-Id que você enviou, quando há um; senão, um req_<uuid> cunhado pelo motor."},"class":{"type":"string","enum":["RETRYABLE","TERMINAL"],"description":"Classificação da falha. TERMINAL não melhora com nova tentativa; RETRYABLE sim."},"retryable":{"type":"boolean","description":"Atalho booleano de `class`, para quem só precisa decidir se repete."},"upstreamStatus":{"description":"Status HTTP real devolvido pela fonte externa, quando a falha veio dela. Preservado sem tradução.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"details":{"type":"object","additionalProperties":{}}},"required":["code","message","requestId","class","retryable","details"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}}},"tags":[{"name":"Sistema","description":"Endpoints operacionais e de descoberta do serviço."},{"name":"Catálogo","description":"Dados de referência expostos pela API."},{"name":"Processos","description":"Capacidades de busca de processos."},{"name":"Publicações","description":"Capacidades de consulta de publicações."},{"name":"Jurisprudência","description":"Pesquisa de acórdãos e decisões no acervo indexado, com ranking e citação completa (relator, órgão julgador, data de julgamento e classe).\n\n**Percurso recomendado:** consulte a cobertura (`GET /v1/publications/corpus/coverage`, 0 créditos) para saber se o recorte já está indexado; execute a busca (`POST /v1/publications/text-searches`), que **congela** o resultado num recurso persistente; e reabra quando quiser (`GET /v1/publications/text-searches/{searchId}`, 0 créditos) para obter o teor de cada acerto. Reabrir uma busca congelada não cobra e devolve sempre o mesmo resultado — é o que torna a citação reproduzível.\n\nSe a cobertura vier parcial, peça a colheita da fatia que falta (`POST /v1/publications/corpus/harvest-requests`) e aguarde o evento `PUBLICATION_HARVEST_COMPLETED`. Para acompanhar um tema ao longo do tempo, salve uma vigília (`POST /v1/publications/text-alerts`) e receba `PUBLICATION_TEXT_ALERT_MATCHED` a cada novidade."},{"name":"Legislação","description":"Resolução de norma federal no registro oficial de normas, sob demanda e sem acervo local: a resposta é sempre a de agora.\n\nA porta responde o que o registro DECLARA sobre um ato — que ele consta, seus apelidos, a ementa, as alterações permanentes e a situação que o registro publica. Ela **não** confere o teor do artigo citado nem afirma vigência: ausência de declaração de revogação não é prova de que a norma esteja em vigor, e a lista de alterações de um dispositivo é evidência, nunca veredito sobre a existência dele.\n\nO alcance é o do registro: lei, lei complementar, decreto-lei, decreto, medida provisória, emenda constitucional e a Constituição. Portaria, instrução normativa, resolução, provimento, súmula e norma estadual ou municipal ficam fora, e a resposta diz isso em `status: OUT_OF_REACH` em vez de devolver ausência — essas duas coisas se parecem e significam o oposto."},{"name":"Uso","description":"Visibilidade autenticada de uso e cotas."},{"name":"Jobs de busca","description":"Jobs assíncronos de busca de processos (submeta via POST /v1/processes/search e acompanhe aqui)."},{"name":"Assinaturas","description":"Interesse durável em um processo — é o que dispara o envio de webhooks."},{"name":"Monitores","description":"Monitores nativos PROCESS/OAB gerenciados por API key."},{"name":"Webhooks","description":"Entrega de eventos por HTTP POST assinado, gestão dos endpoints e observabilidade das entregas. Cadastre um receiver pelo portal ou por `POST /v1/webhooks/endpoints` (escopo WEBHOOKS_WRITE). Eventos assináveis: `PROCESS_MOVEMENT_CREATED`, `PROCESS_INSTANCE_DISCOVERED`, `PUBLICATION_CREATED`, `PUBLICATION_TEXT_ALERT_MATCHED`, `MONITOR_SYNC_SUCCEEDED`, `MONITOR_SYNC_FAILED`, `SEARCH_JOB_COMPLETED`, `PUBLICATION_HARVEST_COMPLETED` e `PROCESS_LOOKUP_COMPLETED`; e os comerciais, que avisam antes de a porta fechar: `QUOTA_LOW`, `PERIOD_ENDING` e `SUBSCRIPTION_PAST_DUE`. `PROCESS_MOVEMENT_CREATED` sai uma vez por assinante e por captura do processo, descrito pelo movimento novo mais recente; no processo compartilhável traz também o grau dele (`degree`), o documento da fonte que o trouxe (`instanceSourceId`) e, em `instances`, quantos movimentos novos vieram de cada grau. `PROCESS_INSTANCE_DISCOVERED` sai quando outro grau de um processo assinado aparece na fonte (1º grau, 2º grau, turma recursal…): o histórico desse grau entra no acervo sem virar `PROCESS_MOVEMENT_CREATED`, e o evento diz o grau, o órgão julgador e quantos movimentos ele trouxe — os movimentos estão no retrato do processo, em `data.instances`. No processo não compartilhável os dois eventos saem sem grau e sem o que aconteceu, com `contentWithheld: true`. `MONITOR_SYNC_SUCCEEDED` sai a cada varredura do monitor de processo, com novidade ou não — a cadência é de 15 minutos, teto de 96 por dia por monitor, quase todos com `changed: false`; assine-o só se quiser o sinal de vida da vigília. Quando o controle de confidencialidade deixa o dono do monitor ler o número inteiro, ele lista os graus do número em `instances` e os que a varredura reconheceu como novos em `instancesDiscovered`. Todo evento nasce como registro mesmo sem endpoint que o assine e fica disponível por 180 dias: `GET /v1/webhooks/unsubscribed-event-types` diz quais tipos a conta produz sem assinante, e assinar o tipo depois mais o reenvio por janela recupera o que já nasceu. Cada entrega envia os headers `x-lexnode-event`, `x-lexnode-timestamp` e `x-lexnode-signature` no formato `t=<unix>,v1=<hex>`, onde v1 é o HMAC-SHA256 do secret sobre `<timestamp>.<corpo bruto>`. O corpo é `{ id, type, occurredAt, projectId, monitorId, payload }` — deduplique pelo `id`. Tentativas: até 6 por entrega com backoff exponencial de 10 minutos a 6 horas e timeout de 15 segundos; qualquer resposta 2xx confirma o recebimento. A ordem de chegada não é garantida. Guia completo com exemplos: https://www.lexnode.com.br/docs/webhooks"}],"servers":[{"url":"https://api.lexnode.com.br","description":"Deploy atual"}]}