@lexnode/legal-data-sdk 1.26.0 → 1.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -194,6 +194,14 @@ switch (resultado.event.type) {
194
194
  break;
195
195
  case "PROCESS_MOVEMENT_CREATED":
196
196
  resultado.event.payload.externalRef;
197
+ resultado.event.payload.degree; // o grau do movimento mais recente
198
+ break;
199
+ case "PROCESS_INSTANCE_DISCOVERED":
200
+ // Outro grau do processo apareceu na fonte; o histórico dele está no
201
+ // retrato, em `instances`. O processo retido vem sem o grau.
202
+ if (!resultado.event.payload.contentWithheld) {
203
+ resultado.event.payload.degree;
204
+ }
197
205
  break;
198
206
  case "SEARCH_JOB_COMPLETED":
199
207
  if (resultado.event.payload.status === "FAILED") {
@@ -256,6 +264,94 @@ if (desfecho.kind === "sync") {
256
264
  }
257
265
  ```
258
266
 
267
+ ## Um número, várias instâncias
268
+
269
+ A fonte processual guarda um documento por instância do processo — 1º grau, 2º
270
+ grau, turma recursal… —, às vezes dois do mesmo grau, e o motor guarda cada um
271
+ na sua instância.
272
+
273
+ **O topo não troca.** O topo da ficha (`data`) e do retrato (`data.process` e
274
+ `data.movements`) é sempre a instância principal do número, com o grau em
275
+ `degree`: a mesma de uma leitura para a outra, qualquer que seja a ordem em que
276
+ a fonte devolve os documentos. Ela só muda quando uma resposta completa da
277
+ fonte pelo número deixa de trazê-la. Quem compara movimentos pela chave não vê
278
+ o histórico de outro grau aparecer como novo no topo — e o topo pode não ser o
279
+ grau que anda: o 2º grau guardado primeiro continua no topo enquanto o 1º se
280
+ move.
281
+
282
+ **Todos os graus em `instances`.** A ficha e o retrato listam em `instances`
283
+ todos os documentos que o motor guarda do número, a principal primeiro
284
+ (`primary: true`). Cada um diz de onde veio nesta resposta (`origin`: `SOURCE`
285
+ quando a fonte o trouxe, `LAKE` quando saiu do acervo), quando foi buscado
286
+ (`fetchedAt`) e desde quando a resposta completa da fonte vem sem ele
287
+ (`absentSince`). No retrato, cada instância traz os movimentos da última captura
288
+ dela, do mais recente ao mais antigo e sem o payload bruto da fonte; a que o
289
+ motor nunca capturou vem com `movementsCaptured: false` e `movements` nulo, nunca
290
+ com lista vazia, que diria que o grau não andou. Todos os documentos levam a
291
+ classificação do número inteiro — basta um em segredo de justiça para todos
292
+ saírem marcados —, e a ficha retida pelo controle de confidencialidade sai sem a
293
+ lista.
294
+
295
+ ```ts
296
+ const { data } = await lexnode.processes.snapshot(numero, { tribunalAlias });
297
+
298
+ for (const instancia of data.instances) {
299
+ instancia.degree; // "G1", "G2", "TR"…
300
+ instancia.primary; // true só na do topo
301
+ instancia.movements ?? "movimentos nunca capturados";
302
+ }
303
+ ```
304
+
305
+ No lote (`processes.snapshotBatch`), `instances` traz só o cabeçalho de cada
306
+ documento; os movimentos de cada instância vêm no retrato de um processo. A
307
+ busca por número completo servida do acervo devolve um item por documento que a
308
+ fonte ainda traz do número, a principal primeiro; quando eles não cabem em
309
+ `limit`, a busca vai à fonte, que pagina.
310
+
311
+ **Recorte por grau.** A lista de movimentações aceita `degree` e devolve só os
312
+ movimentos que o documento daquele grau trouxe na última captura; cada item diz
313
+ em `degrees` o grau — ou os graus, quando o mesmo ato está nos dois documentos
314
+ — que o trouxe, e vem vazio no movimento que nenhuma captura atual traz.
315
+
316
+ ```ts
317
+ const { data } = await lexnode.processes.movements(numero, {
318
+ tribunalAlias,
319
+ degree: "G1",
320
+ });
321
+ data.items; // só o que o 1º grau trouxe
322
+ ```
323
+
324
+ **O grau novo chega num evento só.** Quando outro grau de um processo assinado
325
+ aparece na fonte, o histórico dele entra no acervo sem virar
326
+ `PROCESS_MOVEMENT_CREATED` movimento a movimento: chega um
327
+ `PROCESS_INSTANCE_DISCOVERED`, com o grau, o órgão julgador e as contagens —
328
+ `historyMovementCount` entrou sem aviso próprio, `announcedMovementCount` saiu
329
+ também como movimento novo. O `PROCESS_MOVEMENT_CREATED` diz o grau do
330
+ movimento mais recente (`degree`, `instanceSourceId`) e quantos movimentos novos
331
+ vieram de cada grau (`instances`). Assine os dois: quem assina só o movimento
332
+ não fica sabendo do grau que apareceu.
333
+
334
+ **`meta.otherInstances`: o resumo do que veio.** Quando a resposta da fonte traz
335
+ outros documentos do número além da principal, `meta.otherInstances` resume cada
336
+ um com o grau (`grau`), a data em que a fonte o atualizou (`updatedAt`) e o
337
+ órgão julgador (`courtBody`, quando vem). A lista não sai para processo restrito
338
+ e não inclui documento que o motor classificaria como segredo de justiça; os
339
+ documentos inteiros estão em `instances`.
340
+
341
+ ```ts
342
+ for (const outra of meta.otherInstances ?? []) {
343
+ // Ex.: { grau: "G1", updatedAt: "2026-04-15T12:00:00.000Z" }
344
+ }
345
+ ```
346
+
347
+ **Continuação.** Na API nada é cortado: o retrato traz os movimentos guardados
348
+ de cada instância, e a lista de movimentações lê do acervo, grau a grau, sem ir
349
+ à fonte. No canal para agentes (MCP), `consultar_processo` cabe no teto de uma
350
+ resposta: de cada grau vêm os movimentos mais recentes, o grau que se moveu por
351
+ último primeiro, e a mesma tool com `grau` e `pagina` traz os seguintes do que o
352
+ motor guardou, por 1 crédito e sem ir à fonte — só para quem já leu o processo
353
+ ou o acompanha.
354
+
259
355
  ## Ler um processo quando a fonte está lenta
260
356
 
261
357
  A ficha (`processes.get`) vai à fonte processual quando o acervo não tem o
@@ -290,15 +386,15 @@ ou a vigília do processo (`watchProcess`), que consulta em segundo plano.
290
386
  responde com só parte do índice e o processo estava na parte que respondeu, ele
291
387
  é servido, e `meta.partialIndex` diz quantas partes falharam (`shardsFailed`),
292
388
  de quantas (`shardsTotal`, nulo quando a fonte não as contou) e se o prazo
293
- interno dela estourou (`timedOut`). O processo servido é o que a fonte tem, mas
294
- outra instância do mesmo número — outro grau — pode estar na parte que não
295
- respondeu. A resposta parcial que não serve o processo — sem ele, ou com uma
296
- instância diferente da que o acervo já guarda — é 502 `UPSTREAM_UNAVAILABLE`
389
+ interno dela estourou (`timedOut`). O documento que o acervo já guardava e não
390
+ veio sai em `instances` do acervo (`origin: "LAKE"`), com a data dele, e outro
391
+ grau que o acervo não conhece, se existir, pode estar na parte que não
392
+ respondeu. A resposta parcial sem o processo é 502 `UPSTREAM_UNAVAILABLE`
297
393
  retentável, nunca 404.
298
394
 
299
395
  ```ts
300
396
  if (meta.partialIndex) {
301
- // Outro grau deste número, se existir, pode não ter vindo.
397
+ // Outro grau deste número que o acervo não conhece pode não ter vindo.
302
398
  }
303
399
  ```
304
400
 
@@ -306,21 +402,6 @@ Antes de recusar a resposta parcial que veio sem o processo porque partes do
306
402
  índice ficaram fora, o motor consulta a fonte de novo — até duas vezes, com uma
307
403
  pausa curta, enquanto a espera couber.
308
404
 
309
- **`meta.otherInstances`: o número tem outro documento na fonte.** A fonte pode
310
- guardar mais de um documento por número — em geral um por instância (1º grau,
311
- 2º grau, turma recursal…), às vezes dois no mesmo grau —, e o motor serve e
312
- guarda um só: o de `data`, cujo grau está em `degree`. Quando a resposta da
313
- fonte trouxe outros, `meta.otherInstances` lista cada um com o grau (`grau`), a
314
- data em que a fonte o atualizou (`updatedAt`) e o órgão julgador (`courtBody`,
315
- quando vem). A lista não sai para processo restrito e não inclui documento que o
316
- motor classificaria como segredo de justiça.
317
-
318
- ```ts
319
- for (const outra of meta.otherInstances ?? []) {
320
- // Ex.: { grau: "G1", updatedAt: "2026-04-15T12:00:00.000Z" }
321
- }
322
- ```
323
-
324
405
  **Agentes têm a espera deles.** No canal para agentes (MCP), as tools
325
406
  `ler_processo` e `consultar_processo` escolhem a espera em `maxWaitSeconds`, na
326
407
  mesma faixa e com padrão de 120 s; esse canal não passa pelo SDK.
@@ -345,10 +426,13 @@ vez do erro. A resposta diz que é cópia, e de quando:
345
426
 
346
427
  A cópia custa 1 crédito, na ficha e no retrato. O retrato confere o saldo pelo
347
428
  preço cheio, 8, antes de ir à fonte; a ficha confere pelo preço do que
348
- entregou, depois da leitura. No retrato guardado, os movimentos são os da
349
- última vez que o motor buscou o processo, e `sourcePayload` é nulo: o que andou
350
- depois dessa data não está na resposta. Na ficha guardada, a data vale para os
351
- dados do processo, e o resumo das publicações (`djen`) é relido na hora.
429
+ entregou, depois da leitura. No retrato guardado, cada instância traz os
430
+ movimentos da última vez que o motor a buscou, com a data em
431
+ `instances[].fetchedAt`, e `sourcePayload` é nulo: o que andou depois dessas
432
+ datas não está na resposta. O número que a resposta completa mais recente da
433
+ fonte já não trazia em documento nenhum não é socorrido. Na ficha guardada, a
434
+ data vale para os dados do processo, e o resumo das publicações (`djen`) é
435
+ relido na hora.
352
436
 
353
437
  **Até que idade.** Sem pedir nada, só a cópia de até 24 h socorre a leitura —
354
438
  nessas duas rotas, uma resposta de sucesso já podia ser cópia do acervo dentro
package/dist/index.d.ts CHANGED
@@ -15,7 +15,7 @@ export { LEXNODE_ERROR_CODES, LexNodeError, isLexNodeError } from "./errors.js";
15
15
  export type { LexNodeErrorClass, LexNodeErrorCode, LexNodeErrorInit, } from "./errors.js";
16
16
  export type { Body, CallOptions, Data, HttpMethod, LexNodeResult, Meta, MetaExtras, MethodOf, Operation, PathParams, Query, RateLimitSnapshot, RequestArgs, RetryPolicy, } from "./types.js";
17
17
  export { DEFAULT_WEBHOOK_TOLERANCE_SECONDS, LEXNODE_WEBHOOK_HEADERS, WEBHOOK_EVENT_TYPES, WEBHOOK_TEST_EVENT_TYPE, isKnownWebhookEventType, isReceiverFault, isWebhookTest, parseWebhookEvent, verifyWebhookSignature, webhookRejectionStatus, } from "./webhooks.js";
18
- export type { MonitorSyncFailedPayload, MonitorSyncSucceededPayload, PeriodEndingPayload, ProcessMovementCreatedPayload, ProcessSourceIndex, PublicationCreatedPayload, PublicationHarvestCompletedPayload, PublicationTextAlertMatch, PublicationTextAlertMatchedPayload, QuotaLowPayload, SubscribableWebhookEventType, SearchJobFailedPayload, SearchJobSucceededPayload, SubscriptionPastDuePayload, SuspensionSignal, UnknownWebhookEvent, VerifyWebhookOptions, WebhookEvent, WebhookEventEnvelope, WebhookEventType, WebhookHeaders, WebhookParseRejection, WebhookParseResult, WebhookRawBody, WebhookRejection, WebhookTestPayload, WebhookVerification, } from "./webhooks.js";
18
+ export type { MonitorSyncFailedPayload, MonitorSyncInstance, MonitorSyncSucceededPayload, PeriodEndingPayload, ProcessInstanceDiscoveredPayload, ProcessInstanceDiscoveredWithheldPayload, ProcessMovementCreatedPayload, ProcessMovementInstanceCount, ProcessSourceIndex, PublicationCreatedPayload, PublicationHarvestCompletedPayload, PublicationTextAlertMatch, PublicationTextAlertMatchedPayload, QuotaLowPayload, SubscribableWebhookEventType, SearchJobFailedPayload, SearchJobSucceededPayload, SubscriptionPastDuePayload, SuspensionSignal, UnknownWebhookEvent, VerifyWebhookOptions, WebhookEvent, WebhookEventEnvelope, WebhookEventType, WebhookHeaders, WebhookParseRejection, WebhookParseResult, WebhookRawBody, WebhookRejection, WebhookTestPayload, WebhookVerification, } from "./webhooks.js";
19
19
  export { paginate } from "./paginate.js";
20
20
  export type { PaginateOptions } from "./paginate.js";
21
21
  export { searchProcesses, waitForSearchJob } from "./search.js";
@@ -83,6 +83,19 @@ export interface ProcessSourceIndex {
83
83
  updatedThrough: string | null;
84
84
  checkedAt: string;
85
85
  }
86
+ /** Quantos movimentos novos de um grau a captura anunciou. */
87
+ export interface ProcessMovementInstanceCount {
88
+ /** A sigla do grau (G1, G2, JE, TR…); nula quando a fonte não a declara. */
89
+ degree: string | null;
90
+ newMovementCount: number;
91
+ /** A chave do movimento novo mais recente deste grau. */
92
+ latestMovementKey: string;
93
+ }
94
+ /**
95
+ * Um aviso por assinante e por captura do processo, descrito pelo movimento
96
+ * novo mais recente: o topo do payload é dele, e a chave dele é
97
+ * `latestMovementKey`.
98
+ */
86
99
  export interface ProcessMovementCreatedPayload {
87
100
  canonicalProcessId: string;
88
101
  tribunalAlias: string;
@@ -99,12 +112,82 @@ export interface ProcessMovementCreatedPayload {
99
112
  */
100
113
  latestMovementCode?: number | null;
101
114
  latestMovementLabel?: string | null;
115
+ /**
116
+ * O grau do movimento mais recente e o documento da fonte que o trouxe — o
117
+ * `sourceId` da instância na leitura do processo. Ausentes quando o processo
118
+ * não é compartilhável.
119
+ */
120
+ degree?: string | null;
121
+ instanceSourceId?: string | null;
122
+ /**
123
+ * Quantos movimentos novos vieram de cada grau nesta captura, o grau do mais
124
+ * recente primeiro. Ausente quando o processo não é compartilhável.
125
+ */
126
+ instances?: ProcessMovementInstanceCount[];
102
127
  /**
103
128
  * Presente quando o processo não é compartilhável: o aviso diz que ele andou
104
- * e não diz o quê, porque ali o nome do ato é teor.
129
+ * e não diz o quê nem em que grau, porque ali o nome do ato é teor.
105
130
  */
106
131
  contentWithheld?: true;
107
132
  }
133
+ /**
134
+ * Outro grau de um processo assinado apareceu na fonte (1º grau, 2º grau,
135
+ * turma recursal…). O histórico dele entrou no acervo sem virar
136
+ * `PROCESS_MOVEMENT_CREATED` movimento a movimento: este aviso é o que diz que
137
+ * ele chegou, e os movimentos estão no retrato do processo, em `instances`.
138
+ */
139
+ export interface ProcessInstanceDiscoveredPayload {
140
+ canonicalProcessId: string;
141
+ tribunalAlias: string;
142
+ processNumber: string;
143
+ /** O ponteiro que o consumidor informou ao assinar o processo. */
144
+ externalRef: string | null;
145
+ /** A sigla do grau novo; nula quando a fonte não a declara. */
146
+ degree: string | null;
147
+ /** O documento da fonte deste grau — o `sourceId` dele em `instances`. */
148
+ instanceSourceId: string;
149
+ courtBody: string | null;
150
+ /** Quantos movimentos o grau trouxe na captura que o descobriu. */
151
+ movementCount: number;
152
+ /** Quantos deles entraram no acervo sem aviso próprio. */
153
+ historyMovementCount: number;
154
+ /**
155
+ * Quantos deles saíram também em `PROCESS_MOVEMENT_CREATED`: os datados
156
+ * depois da primeira captura do número.
157
+ */
158
+ announcedMovementCount: number;
159
+ /** O movimento mais recente do grau novo. */
160
+ latestMovementAt: string | null;
161
+ latestMovementCode: number | null;
162
+ latestMovementLabel: string | null;
163
+ contentWithheld?: never;
164
+ }
165
+ /**
166
+ * O mesmo aviso sobre processo não compartilhável: diz que o número ganhou um
167
+ * grau e não diz qual, nem o órgão, nem quantos movimentos.
168
+ */
169
+ export interface ProcessInstanceDiscoveredWithheldPayload {
170
+ canonicalProcessId: string;
171
+ tribunalAlias: string;
172
+ processNumber: string;
173
+ externalRef: string | null;
174
+ contentWithheld: true;
175
+ }
176
+ /** Um grau do número como a varredura da vigília de processo o deixou. */
177
+ export interface MonitorSyncInstance {
178
+ degree: string | null;
179
+ /** O documento da fonte deste grau — o `sourceId` dele em `instances`. */
180
+ instanceSourceId: string;
181
+ /** A instância que o topo da leitura do processo serve. */
182
+ primary: boolean;
183
+ courtBody: string | null;
184
+ sourceUpdatedAt: string | null;
185
+ latestMovementAt: string | null;
186
+ /** Nulo quando os movimentos deste grau nunca foram capturados. */
187
+ movementCount: number | null;
188
+ /** Desde quando a resposta completa da fonte vem sem este documento. */
189
+ absentSince: string | null;
190
+ }
108
191
  export interface PublicationCreatedPayload {
109
192
  monitorId: string;
110
193
  officeId: string | null;
@@ -151,6 +234,21 @@ export interface MonitorSyncSucceededPayload {
151
234
  snapshotHash?: string;
152
235
  sourceUpdatedAt?: string | null;
153
236
  latestMovementAt?: string | null;
237
+ /**
238
+ * Vigília de processo: os graus do número e os que esta passada reconheceu
239
+ * como novos. Só quando o controle de confidencialidade deixa o dono do
240
+ * monitor ler o número inteiro.
241
+ */
242
+ instances?: MonitorSyncInstance[];
243
+ instancesDiscovered?: MonitorSyncInstance[];
244
+ /**
245
+ * Vigília de processo cujo número corre em segredo num grau que o dono do
246
+ * monitor não buscou: a passada sai sem o hash e sem as datas da fonte, e
247
+ * `changed` fica `false`. O dono que buscou o grau em segredo, numa conta
248
+ * que não aceita a proveniência, recebe a passada com `changed`, o hash e as
249
+ * datas, e sem `instances`.
250
+ */
251
+ contentWithheld?: true;
154
252
  /** O alvo que a fonte não indexava passou a existir nesta passada. */
155
253
  firstAppearance?: true;
156
254
  /** A vigília de aparição segue esperando o alvo entrar no índice. */
@@ -280,8 +378,8 @@ type Typed<T extends string, P> = WebhookEventEnvelope & {
280
378
  type: T;
281
379
  payload: P;
282
380
  };
283
- /** Os dez tipos do catálogo, discriminados por `type`. */
284
- export type WebhookEvent = Typed<"PROCESS_MOVEMENT_CREATED", ProcessMovementCreatedPayload> | Typed<"PUBLICATION_CREATED", PublicationCreatedPayload> | Typed<"MONITOR_SYNC_SUCCEEDED", MonitorSyncSucceededPayload> | Typed<"MONITOR_SYNC_FAILED", MonitorSyncFailedPayload> | Typed<"SEARCH_JOB_COMPLETED", SearchJobSucceededPayload | SearchJobFailedPayload> | Typed<"PUBLICATION_TEXT_ALERT_MATCHED", PublicationTextAlertMatchedPayload> | Typed<"PUBLICATION_HARVEST_COMPLETED", PublicationHarvestCompletedPayload> | Typed<"QUOTA_LOW", QuotaLowPayload> | Typed<"PERIOD_ENDING", PeriodEndingPayload> | Typed<"SUBSCRIPTION_PAST_DUE", SubscriptionPastDuePayload> | Typed<"WEBHOOK_TEST", WebhookTestPayload>;
381
+ /** Os tipos do catálogo e a entrega de teste, discriminados por `type`. */
382
+ export type WebhookEvent = Typed<"PROCESS_MOVEMENT_CREATED", ProcessMovementCreatedPayload> | Typed<"PROCESS_INSTANCE_DISCOVERED", ProcessInstanceDiscoveredPayload | ProcessInstanceDiscoveredWithheldPayload> | Typed<"PUBLICATION_CREATED", PublicationCreatedPayload> | Typed<"MONITOR_SYNC_SUCCEEDED", MonitorSyncSucceededPayload> | Typed<"MONITOR_SYNC_FAILED", MonitorSyncFailedPayload> | Typed<"SEARCH_JOB_COMPLETED", SearchJobSucceededPayload | SearchJobFailedPayload> | Typed<"PUBLICATION_TEXT_ALERT_MATCHED", PublicationTextAlertMatchedPayload> | Typed<"PUBLICATION_HARVEST_COMPLETED", PublicationHarvestCompletedPayload> | Typed<"QUOTA_LOW", QuotaLowPayload> | Typed<"PERIOD_ENDING", PeriodEndingPayload> | Typed<"SUBSCRIPTION_PAST_DUE", SubscriptionPastDuePayload> | Typed<"WEBHOOK_TEST", WebhookTestPayload>;
285
383
  /**
286
384
  * O evento que o catálogo ainda não descreve.
287
385
  *
@@ -304,7 +402,7 @@ export type WebhookEventType = WebhookEvent["type"];
304
402
  */
305
403
  export declare const WEBHOOK_TEST_EVENT_TYPE: "WEBHOOK_TEST";
306
404
  /** Os tipos que se pode ASSINAR ao cadastrar um endpoint. */
307
- export declare const WEBHOOK_EVENT_TYPES: readonly ["PROCESS_MOVEMENT_CREATED", "PUBLICATION_CREATED", "MONITOR_SYNC_SUCCEEDED", "MONITOR_SYNC_FAILED", "SEARCH_JOB_COMPLETED", "PUBLICATION_TEXT_ALERT_MATCHED", "PUBLICATION_HARVEST_COMPLETED", "QUOTA_LOW", "PERIOD_ENDING", "SUBSCRIPTION_PAST_DUE"];
405
+ export declare const WEBHOOK_EVENT_TYPES: readonly ["PROCESS_MOVEMENT_CREATED", "PROCESS_INSTANCE_DISCOVERED", "PUBLICATION_CREATED", "MONITOR_SYNC_SUCCEEDED", "MONITOR_SYNC_FAILED", "SEARCH_JOB_COMPLETED", "PUBLICATION_TEXT_ALERT_MATCHED", "PUBLICATION_HARVEST_COMPLETED", "QUOTA_LOW", "PERIOD_ENDING", "SUBSCRIPTION_PAST_DUE"];
308
406
  /**
309
407
  * O que entra em `eventTypes` ao cadastrar um endpoint. É subconjunto próprio
310
408
  * de `WebhookEventType`: mandar a entrega de teste nessa lista é recusa.
package/dist/webhooks.js CHANGED
@@ -117,6 +117,7 @@ export const WEBHOOK_TEST_EVENT_TYPE = "WEBHOOK_TEST";
117
117
  /** Os tipos que se pode ASSINAR ao cadastrar um endpoint. */
118
118
  export const WEBHOOK_EVENT_TYPES = [
119
119
  "PROCESS_MOVEMENT_CREATED",
120
+ "PROCESS_INSTANCE_DISCOVERED",
120
121
  "PUBLICATION_CREATED",
121
122
  "MONITOR_SYNC_SUCCEEDED",
122
123
  "MONITOR_SYNC_FAILED",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lexnode/legal-data-sdk",
3
- "version": "1.26.0",
3
+ "version": "1.27.0",
4
4
  "description": "Cliente TypeScript do LexNode, o motor de dados jur\u00eddicos do Brasil: transporte tipado, erros classificados, verifica\u00e7\u00e3o de webhook e os tipos gerados do contrato OpenAPI.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://www.lexnode.com.br/docs",
package/schema.d.ts CHANGED
@@ -139,7 +139,7 @@ export interface paths {
139
139
  put?: never;
140
140
  /**
141
141
  * Buscar processos
142
- * @description Executa uma busca estruturada de processos em um tribunal suportado. A consulta por número completo é atendida lake-first (sem chamada ao upstream enquanto o dado está fresco); todo hit vivo é gravado de volta no data lake. 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.
142
+ * @description Executa uma busca estruturada de processos em um tribunal suportado. A consulta por número completo é atendida lake-first (sem chamada ao upstream enquanto o dado está fresco), 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 hit vivo é gravado de volta no data lake, 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.
143
143
  *
144
144
  * **Escopo exigido na chave de API:** `PROCESSES_SEARCH`
145
145
  */
@@ -159,7 +159,7 @@ export interface paths {
159
159
  };
160
160
  /**
161
161
  * Obter um processo pelo número
162
- * @description Retorna o registro exato do processo para o tribunal e o número informados, com resolução cache-first quando disponível. `meta.sourceFetchedAt` diz quando os dados servidos foram buscados na fonte; a ficha retida pelo controle de confidencialidade, sem o teor, não o traz. `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`): outra instância do mesmo número, se existir, pode não ter vindo. A exceção é o processo que veio de uma instância diferente da que o acervo já guarda do número: a guardada pode estar na parte que não respondeu, e a resposta parcial não é servida. Resposta parcial que não serve o processo — sem ele, ou com a outra instância — é 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. Quando a resposta traz mais de um documento do número — em geral um por instância, mas dois podem ser do mesmo grau —, o motor serve e guarda um só, o de `data` (grau em `degree`), e `meta.otherInstances` lista os outros que vieram: 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. 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.
162
+ * @description Retorna o registro exato do processo para o tribunal e o número informados, com resolução cache-first quando disponível. **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.
163
163
  *
164
164
  * **Escopo exigido na chave de API:** `PROCESSES_READ`
165
165
  */
@@ -203,7 +203,7 @@ export interface paths {
203
203
  };
204
204
  /**
205
205
  * Obter um snapshot vivo do processo
206
- * @description Busca o processo na fonte processual e retorna o registro normalizado do processo, o payload bruto da fonte e as movimentações normalizadas. `meta.sourceFetchedAt` diz quando os dados servidos foram buscados na fonte; a ficha retida pelo controle de confidencialidade, sem o teor, não o traz. `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`): outra instância do mesmo número, se existir, pode não ter vindo. A exceção é o processo que veio de uma instância diferente da que o acervo já guarda do número: a guardada pode estar na parte que não respondeu, e a resposta parcial não é servida. Resposta parcial que não serve o processo — sem ele, ou com a outra instância — é 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. Quando a resposta traz mais de um documento do número — em geral um por instância, mas dois podem ser do mesmo grau —, o motor serve e guarda um só, o de `data` (grau em `degree`), e `meta.otherInstances` lista os outros que vieram: 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. 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. No retrato socorrido pelo acervo, os movimentos e o registro do processo são os da última captura guardada, e `sourcePayload` é nulo: o documento bruto da fonte não é guardado.
206
+ * @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.
207
207
  *
208
208
  * **Escopo exigido na chave de API:** `PROCESSES_READ`
209
209
  */
@@ -225,7 +225,7 @@ export interface paths {
225
225
  };
226
226
  /**
227
227
  * Listar as movimentações em cache do processo
228
- * @description Retorna as movimentações em cache de um número de processo no tribunal informado. Esta rota não busca movimentações no upstream sob demanda.
228
+ * @description Retorna as movimentações em cache de um número de processo no tribunal informado. Esta rota não busca movimentações no upstream sob demanda. 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.
229
229
  *
230
230
  * **Escopo exigido na chave de API:** `PROCESSES_READ`
231
231
  */
@@ -249,7 +249,7 @@ export interface paths {
249
249
  put?: never;
250
250
  /**
251
251
  * Snapshot em lote
252
- * @description Snapshot de até N processos em uma única ida e volta (elimina o N+1 noturno 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 é gravado de volta no data lake. 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.
252
+ * @description Snapshot de até N processos em uma única ida e volta (elimina o N+1 noturno 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 é gravado de volta no data lake. 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.
253
253
  *
254
254
  * **Escopo exigido na chave de API:** `PROCESSES_READ`
255
255
  */
@@ -397,7 +397,7 @@ export interface paths {
397
397
  };
398
398
  /**
399
399
  * Consultar um job de busca
400
- * @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. 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.
400
+ * @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.
401
401
  *
402
402
  * **Escopo exigido na chave de API:** `PROCESSES_READ`
403
403
  */
@@ -449,7 +449,7 @@ export interface paths {
449
449
  put?: never;
450
450
  /**
451
451
  * Registrar interesse durável em um processo
452
- * @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. Idempotente por (reason, externalRef).
452
+ * @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).
453
453
  *
454
454
  * **Escopo exigido na chave de API:** `SUBSCRIPTIONS_WRITE`
455
455
  */
@@ -2118,6 +2118,69 @@ export interface operations {
2118
2118
  latestPublicationExcerpt?: string | null;
2119
2119
  latestPublicationUrl?: string | null;
2120
2120
  } | null;
2121
+ /** @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. */
2122
+ instances?: {
2123
+ sourceId?: string | null;
2124
+ number: string;
2125
+ formattedNumber: string;
2126
+ tribunal: {
2127
+ alias: string;
2128
+ code: string;
2129
+ };
2130
+ degree?: string | null;
2131
+ sigiloLevel?: number | null;
2132
+ /**
2133
+ * @description Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.
2134
+ * @enum {string}
2135
+ */
2136
+ confidentiality?: "PUBLIC" | "SEGREDO_DE_JUSTICA";
2137
+ /** @description Se a linha pode ser amortizada entre consumidores. Falso acompanha o segredo e também a linha que o motor reteve por outro motivo. */
2138
+ shareable?: boolean;
2139
+ class: {
2140
+ code?: number | null;
2141
+ name?: string | null;
2142
+ } | null;
2143
+ courtBody: {
2144
+ code?: number | null;
2145
+ name?: string | null;
2146
+ municipalityIbgeCode?: number | null;
2147
+ } | null;
2148
+ system?: {
2149
+ code?: number | null;
2150
+ name?: string | null;
2151
+ } | null;
2152
+ format?: {
2153
+ code?: number | null;
2154
+ name?: string | null;
2155
+ } | null;
2156
+ /** Format: date-time */
2157
+ filedAt?: string | null;
2158
+ /** Format: date-time */
2159
+ updatedAt?: string | null;
2160
+ /** Format: date-time */
2161
+ indexedAt?: string | null;
2162
+ subjects: {
2163
+ code?: number | null;
2164
+ name: string;
2165
+ }[];
2166
+ /** @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. */
2167
+ primary: boolean;
2168
+ /**
2169
+ * @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.
2170
+ * @enum {string}
2171
+ */
2172
+ origin: "SOURCE" | "LAKE";
2173
+ /**
2174
+ * Format: date-time
2175
+ * @description Quando os dados desta instância foram buscados na fonte. No retrato, com os movimentos servidos do acervo, é a data da captura deles.
2176
+ */
2177
+ fetchedAt: string;
2178
+ /**
2179
+ * Format: date-time
2180
+ * @description Desde quando a resposta completa da fonte pelo número vem sem este documento; nulo enquanto ela o traz.
2181
+ */
2182
+ absentSince: string | null;
2183
+ }[];
2121
2184
  };
2122
2185
  meta: {
2123
2186
  /** @description Identificador da requisição, para suporte e rastreamento. É o X-Request-Id enviado pelo cliente quando há um; senão, um req_<uuid> cunhado pelo motor. */
@@ -2139,7 +2202,7 @@ export interface operations {
2139
2202
  /** @description A espera que a fonte pediu: não consulte a fonte de novo antes dela. */
2140
2203
  retryAfterSeconds?: number;
2141
2204
  };
2142
- /** @description Presente só quando a fonte respondeu com parte do índice e o processo estava na parte que respondeu: outra instância do mesmo número, se existir, pode não ter vindo. */
2205
+ /** @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. */
2143
2206
  partialIndex?: {
2144
2207
  /** @description Partes do índice da fonte que não responderam. */
2145
2208
  shardsFailed: number;
@@ -2148,7 +2211,7 @@ export interface operations {
2148
2211
  /** @description A fonte estourou o próprio prazo interno e devolveu só o que deu tempo de olhar. */
2149
2212
  timedOut: boolean;
2150
2213
  };
2151
- /** @description Presente só quando a resposta da fonte trouxe mais de um documento do número — em geral de instâncias diferentes, mas dois podem ter o mesmo `grau`. O motor serve e guarda um só (o de `data`, que diz o grau em `degree`); estes são os 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. */
2214
+ /** @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. */
2152
2215
  otherInstances?: {
2153
2216
  /** @description O grau deste documento na fonte: G1, G2, JE, TR… */
2154
2217
  grau: string | null;
@@ -2780,6 +2843,82 @@ export interface operations {
2780
2843
  complementos: unknown;
2781
2844
  rawPayload: unknown;
2782
2845
  }[];
2846
+ /** @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. */
2847
+ instances: {
2848
+ sourceId?: string | null;
2849
+ number: string;
2850
+ formattedNumber: string;
2851
+ tribunal: {
2852
+ alias: string;
2853
+ code: string;
2854
+ };
2855
+ degree?: string | null;
2856
+ sigiloLevel?: number | null;
2857
+ /**
2858
+ * @description Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.
2859
+ * @enum {string}
2860
+ */
2861
+ confidentiality?: "PUBLIC" | "SEGREDO_DE_JUSTICA";
2862
+ /** @description Se a linha pode ser amortizada entre consumidores. Falso acompanha o segredo e também a linha que o motor reteve por outro motivo. */
2863
+ shareable?: boolean;
2864
+ class: {
2865
+ code?: number | null;
2866
+ name?: string | null;
2867
+ } | null;
2868
+ courtBody: {
2869
+ code?: number | null;
2870
+ name?: string | null;
2871
+ municipalityIbgeCode?: number | null;
2872
+ } | null;
2873
+ system?: {
2874
+ code?: number | null;
2875
+ name?: string | null;
2876
+ } | null;
2877
+ format?: {
2878
+ code?: number | null;
2879
+ name?: string | null;
2880
+ } | null;
2881
+ /** Format: date-time */
2882
+ filedAt?: string | null;
2883
+ /** Format: date-time */
2884
+ updatedAt?: string | null;
2885
+ /** Format: date-time */
2886
+ indexedAt?: string | null;
2887
+ subjects: {
2888
+ code?: number | null;
2889
+ name: string;
2890
+ }[];
2891
+ /** @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. */
2892
+ primary: boolean;
2893
+ /**
2894
+ * @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.
2895
+ * @enum {string}
2896
+ */
2897
+ origin: "SOURCE" | "LAKE";
2898
+ /**
2899
+ * Format: date-time
2900
+ * @description Quando os dados desta instância foram buscados na fonte. No retrato, com os movimentos servidos do acervo, é a data da captura deles.
2901
+ */
2902
+ fetchedAt: string;
2903
+ /**
2904
+ * Format: date-time
2905
+ * @description Desde quando a resposta completa da fonte pelo número vem sem este documento; nulo enquanto ela o traz.
2906
+ */
2907
+ absentSince: string | null;
2908
+ /** @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. */
2909
+ movementsCaptured: boolean;
2910
+ /** @description Quantos movimentos a última captura desta instância trouxe; nulo quando eles nunca foram capturados. */
2911
+ movementCount: number | null;
2912
+ /** @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. */
2913
+ movements: {
2914
+ externalMovementKey: string;
2915
+ codigo?: number | null;
2916
+ nome: string;
2917
+ /** Format: date-time */
2918
+ dataHora?: string | null;
2919
+ complementos: unknown;
2920
+ }[] | null;
2921
+ }[];
2783
2922
  };
2784
2923
  meta: {
2785
2924
  /** @description Identificador da requisição, para suporte e rastreamento. É o X-Request-Id enviado pelo cliente quando há um; senão, um req_<uuid> cunhado pelo motor. */
@@ -2801,7 +2940,7 @@ export interface operations {
2801
2940
  /** @description A espera que a fonte pediu: não consulte a fonte de novo antes dela. */
2802
2941
  retryAfterSeconds?: number;
2803
2942
  };
2804
- /** @description Presente só quando a fonte respondeu com parte do índice e o processo estava na parte que respondeu: outra instância do mesmo número, se existir, pode não ter vindo. */
2943
+ /** @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. */
2805
2944
  partialIndex?: {
2806
2945
  /** @description Partes do índice da fonte que não responderam. */
2807
2946
  shardsFailed: number;
@@ -2810,7 +2949,7 @@ export interface operations {
2810
2949
  /** @description A fonte estourou o próprio prazo interno e devolveu só o que deu tempo de olhar. */
2811
2950
  timedOut: boolean;
2812
2951
  };
2813
- /** @description Presente só quando a resposta da fonte trouxe mais de um documento do número — em geral de instâncias diferentes, mas dois podem ter o mesmo `grau`. O motor serve e guarda um só (o de `data`, que diz o grau em `degree`); estes são os 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. */
2952
+ /** @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. */
2814
2953
  otherInstances?: {
2815
2954
  /** @description O grau deste documento na fonte: G1, G2, JE, TR… */
2816
2955
  grau: string | null;
@@ -3045,6 +3184,8 @@ export interface operations {
3045
3184
  query: {
3046
3185
  tribunalAlias: string;
3047
3186
  since?: unknown;
3187
+ /** @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. */
3188
+ degree?: string;
3048
3189
  };
3049
3190
  header?: {
3050
3191
  /** @description Identificador da requisição escolhido pelo cliente, 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 e POST /v1/search-jobs, onde reenviar o mesmo valor reapresenta o resultado já produzido, sem nova cobrança. Fora dessas duas rotas o valor não deduplica nada: para repetir uma chamada de propósito, mande um valor novo. Aceita [A-Za-z0-9_.:-], até 200 caracteres; valor fora disso é ignorado e o motor cunha o próprio. */
@@ -3074,6 +3215,8 @@ export interface operations {
3074
3215
  formattedProcessNumber: string;
3075
3216
  /** Format: date-time */
3076
3217
  movementDate?: string | null;
3218
+ /** @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. */
3219
+ degrees: string[];
3077
3220
  code: number | null;
3078
3221
  label?: string | null;
3079
3222
  payload: unknown;
@@ -3395,6 +3538,69 @@ export interface operations {
3395
3538
  } | null;
3396
3539
  };
3397
3540
  movements: unknown[];
3541
+ /** @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. */
3542
+ instances: {
3543
+ sourceId?: string | null;
3544
+ number: string;
3545
+ formattedNumber: string;
3546
+ tribunal: {
3547
+ alias: string;
3548
+ code: string;
3549
+ };
3550
+ degree?: string | null;
3551
+ sigiloLevel?: number | null;
3552
+ /**
3553
+ * @description Classificação do motor: PUBLIC ou SEGREDO_DE_JUSTICA. Linha em segredo nunca deve ser exibida a público.
3554
+ * @enum {string}
3555
+ */
3556
+ confidentiality?: "PUBLIC" | "SEGREDO_DE_JUSTICA";
3557
+ /** @description Se a linha pode ser amortizada entre consumidores. Falso acompanha o segredo e também a linha que o motor reteve por outro motivo. */
3558
+ shareable?: boolean;
3559
+ class: {
3560
+ code?: number | null;
3561
+ name?: string | null;
3562
+ } | null;
3563
+ courtBody: {
3564
+ code?: number | null;
3565
+ name?: string | null;
3566
+ municipalityIbgeCode?: number | null;
3567
+ } | null;
3568
+ system?: {
3569
+ code?: number | null;
3570
+ name?: string | null;
3571
+ } | null;
3572
+ format?: {
3573
+ code?: number | null;
3574
+ name?: string | null;
3575
+ } | null;
3576
+ /** Format: date-time */
3577
+ filedAt?: string | null;
3578
+ /** Format: date-time */
3579
+ updatedAt?: string | null;
3580
+ /** Format: date-time */
3581
+ indexedAt?: string | null;
3582
+ subjects: {
3583
+ code?: number | null;
3584
+ name: string;
3585
+ }[];
3586
+ /** @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. */
3587
+ primary: boolean;
3588
+ /**
3589
+ * @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.
3590
+ * @enum {string}
3591
+ */
3592
+ origin: "SOURCE" | "LAKE";
3593
+ /**
3594
+ * Format: date-time
3595
+ * @description Quando os dados desta instância foram buscados na fonte. No retrato, com os movimentos servidos do acervo, é a data da captura deles.
3596
+ */
3597
+ fetchedAt: string;
3598
+ /**
3599
+ * Format: date-time
3600
+ * @description Desde quando a resposta completa da fonte pelo número vem sem este documento; nulo enquanto ela o traz.
3601
+ */
3602
+ absentSince: string | null;
3603
+ }[];
3398
3604
  };
3399
3605
  /** @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. */
3400
3606
  lakeRescue?: {
@@ -11887,7 +12093,7 @@ export interface operations {
11887
12093
  windowDays: number;
11888
12094
  items: ({
11889
12095
  /** @enum {string} */
11890
- type: "PROCESS_MOVEMENT_CREATED" | "PUBLICATION_CREATED" | "MONITOR_SYNC_SUCCEEDED" | "MONITOR_SYNC_FAILED" | "SEARCH_JOB_COMPLETED" | "PUBLICATION_TEXT_ALERT_MATCHED" | "PUBLICATION_HARVEST_COMPLETED" | "QUOTA_LOW" | "PERIOD_ENDING" | "SUBSCRIPTION_PAST_DUE";
12096
+ type: "PROCESS_MOVEMENT_CREATED" | "PROCESS_INSTANCE_DISCOVERED" | "PUBLICATION_CREATED" | "MONITOR_SYNC_SUCCEEDED" | "MONITOR_SYNC_FAILED" | "SEARCH_JOB_COMPLETED" | "PUBLICATION_TEXT_ALERT_MATCHED" | "PUBLICATION_HARVEST_COMPLETED" | "QUOTA_LOW" | "PERIOD_ENDING" | "SUBSCRIPTION_PAST_DUE";
11891
12097
  /** @enum {string} */
11892
12098
  class: "DATA" | "OPERATIONAL";
11893
12099
  count: number;
@@ -11898,7 +12104,7 @@ export interface operations {
11898
12104
  })[];
11899
12105
  dismissed: ({
11900
12106
  /** @enum {string} */
11901
- type: "PROCESS_MOVEMENT_CREATED" | "PUBLICATION_CREATED" | "MONITOR_SYNC_SUCCEEDED" | "MONITOR_SYNC_FAILED" | "SEARCH_JOB_COMPLETED" | "PUBLICATION_TEXT_ALERT_MATCHED" | "PUBLICATION_HARVEST_COMPLETED" | "QUOTA_LOW" | "PERIOD_ENDING" | "SUBSCRIPTION_PAST_DUE";
12107
+ type: "PROCESS_MOVEMENT_CREATED" | "PROCESS_INSTANCE_DISCOVERED" | "PUBLICATION_CREATED" | "MONITOR_SYNC_SUCCEEDED" | "MONITOR_SYNC_FAILED" | "SEARCH_JOB_COMPLETED" | "PUBLICATION_TEXT_ALERT_MATCHED" | "PUBLICATION_HARVEST_COMPLETED" | "QUOTA_LOW" | "PERIOD_ENDING" | "SUBSCRIPTION_PAST_DUE";
11902
12108
  /** Format: date-time */
11903
12109
  dismissedAt: string;
11904
12110
  } & {
@@ -12103,7 +12309,7 @@ export interface operations {
12103
12309
  query?: {
12104
12310
  cursor?: string;
12105
12311
  limit?: number;
12106
- type?: "PROCESS_MOVEMENT_CREATED" | "PUBLICATION_CREATED" | "MONITOR_SYNC_SUCCEEDED" | "MONITOR_SYNC_FAILED" | "SEARCH_JOB_COMPLETED" | "PUBLICATION_TEXT_ALERT_MATCHED" | "PUBLICATION_HARVEST_COMPLETED" | "QUOTA_LOW" | "PERIOD_ENDING" | "SUBSCRIPTION_PAST_DUE";
12312
+ type?: "PROCESS_MOVEMENT_CREATED" | "PROCESS_INSTANCE_DISCOVERED" | "PUBLICATION_CREATED" | "MONITOR_SYNC_SUCCEEDED" | "MONITOR_SYNC_FAILED" | "SEARCH_JOB_COMPLETED" | "PUBLICATION_TEXT_ALERT_MATCHED" | "PUBLICATION_HARVEST_COMPLETED" | "QUOTA_LOW" | "PERIOD_ENDING" | "SUBSCRIPTION_PAST_DUE";
12107
12313
  monitorId?: string;
12108
12314
  since?: unknown;
12109
12315
  until?: unknown;
@@ -12856,7 +13062,7 @@ export interface operations {
12856
13062
  /** Format: uri */
12857
13063
  url: string;
12858
13064
  description?: string;
12859
- eventTypes: ("PROCESS_MOVEMENT_CREATED" | "PUBLICATION_CREATED" | "MONITOR_SYNC_SUCCEEDED" | "MONITOR_SYNC_FAILED" | "SEARCH_JOB_COMPLETED" | "PUBLICATION_TEXT_ALERT_MATCHED" | "PUBLICATION_HARVEST_COMPLETED" | "QUOTA_LOW" | "PERIOD_ENDING" | "SUBSCRIPTION_PAST_DUE")[];
13065
+ eventTypes: ("PROCESS_MOVEMENT_CREATED" | "PROCESS_INSTANCE_DISCOVERED" | "PUBLICATION_CREATED" | "MONITOR_SYNC_SUCCEEDED" | "MONITOR_SYNC_FAILED" | "SEARCH_JOB_COMPLETED" | "PUBLICATION_TEXT_ALERT_MATCHED" | "PUBLICATION_HARVEST_COMPLETED" | "QUOTA_LOW" | "PERIOD_ENDING" | "SUBSCRIPTION_PAST_DUE")[];
12860
13066
  /** @default true */
12861
13067
  isActive?: boolean;
12862
13068
  };
@@ -13331,7 +13537,7 @@ export interface operations {
13331
13537
  /** Format: uri */
13332
13538
  url?: string;
13333
13539
  description?: string;
13334
- eventTypes?: ("PROCESS_MOVEMENT_CREATED" | "PUBLICATION_CREATED" | "MONITOR_SYNC_SUCCEEDED" | "MONITOR_SYNC_FAILED" | "SEARCH_JOB_COMPLETED" | "PUBLICATION_TEXT_ALERT_MATCHED" | "PUBLICATION_HARVEST_COMPLETED" | "QUOTA_LOW" | "PERIOD_ENDING" | "SUBSCRIPTION_PAST_DUE")[];
13540
+ eventTypes?: ("PROCESS_MOVEMENT_CREATED" | "PROCESS_INSTANCE_DISCOVERED" | "PUBLICATION_CREATED" | "MONITOR_SYNC_SUCCEEDED" | "MONITOR_SYNC_FAILED" | "SEARCH_JOB_COMPLETED" | "PUBLICATION_TEXT_ALERT_MATCHED" | "PUBLICATION_HARVEST_COMPLETED" | "QUOTA_LOW" | "PERIOD_ENDING" | "SUBSCRIPTION_PAST_DUE")[];
13335
13541
  isActive?: boolean;
13336
13542
  };
13337
13543
  };
@@ -14024,7 +14230,7 @@ export interface operations {
14024
14230
  from: unknown;
14025
14231
  to?: unknown;
14026
14232
  /** @enum {string} */
14027
- type?: "PROCESS_MOVEMENT_CREATED" | "PUBLICATION_CREATED" | "MONITOR_SYNC_SUCCEEDED" | "MONITOR_SYNC_FAILED" | "SEARCH_JOB_COMPLETED" | "PUBLICATION_TEXT_ALERT_MATCHED" | "PUBLICATION_HARVEST_COMPLETED" | "QUOTA_LOW" | "PERIOD_ENDING" | "SUBSCRIPTION_PAST_DUE";
14233
+ type?: "PROCESS_MOVEMENT_CREATED" | "PROCESS_INSTANCE_DISCOVERED" | "PUBLICATION_CREATED" | "MONITOR_SYNC_SUCCEEDED" | "MONITOR_SYNC_FAILED" | "SEARCH_JOB_COMPLETED" | "PUBLICATION_TEXT_ALERT_MATCHED" | "PUBLICATION_HARVEST_COMPLETED" | "QUOTA_LOW" | "PERIOD_ENDING" | "SUBSCRIPTION_PAST_DUE";
14028
14234
  /** @default false */
14029
14235
  includeDelivered?: boolean;
14030
14236
  };