@lexnode/legal-data-sdk 1.25.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 +169 -23
- package/dist/client.js +7 -3
- package/dist/freshness.d.ts +40 -1
- package/dist/freshness.js +85 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -1
- package/dist/types.d.ts +5 -1
- package/dist/webhooks.d.ts +102 -4
- package/dist/webhooks.js +1 -0
- package/package.json +1 -1
- package/schema.d.ts +272 -17
package/README.md
CHANGED
|
@@ -51,7 +51,7 @@ Toda chamada manda `Authorization: Bearer`, `X-Request-Id`, `X-Trace-Id` e,
|
|
|
51
51
|
quando há um, `X-Office-Id`; respeita o prazo do cliente **combinado** com o
|
|
52
52
|
`signal` de quem chamou; e devolve `{ data, meta }` tipados pela rota. O `meta`
|
|
53
53
|
é o do contrato mais `status` (o código HTTP) e `rateLimit` (os cabeçalhos
|
|
54
|
-
`RateLimit
|
|
54
|
+
`RateLimit-*`, lidos **inclusive no sucesso**, e o `Retry-After` da recusa).
|
|
55
55
|
|
|
56
56
|
Em `rateLimit`, use `remaining` para desacelerar: `resetSeconds` repete o que o
|
|
57
57
|
cabeçalho `RateLimit-Reset` trouxe, e o motor lhe dá dois sentidos — segundos
|
|
@@ -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,13 +264,101 @@ 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
|
|
262
|
-
processo fresco; o retrato (`processes.snapshot`) vai sempre
|
|
263
|
-
acervo quando a fonte falha. A fonte às vezes leva
|
|
264
|
-
consulta. `waitSeconds` diz quanto o motor espera por
|
|
265
|
-
segundos, padrão 20 na API.
|
|
358
|
+
processo fresco; o retrato (`processes.snapshot`) vai sempre. Os dois só
|
|
359
|
+
recorrem ao acervo quando a fonte falha (seção seguinte). A fonte às vezes leva
|
|
360
|
+
perto de um minuto por consulta. `waitSeconds` diz quanto o motor espera por
|
|
361
|
+
ela: de 10 a 180 segundos, padrão 20 na API.
|
|
266
362
|
|
|
267
363
|
```ts
|
|
268
364
|
const { data, meta } = await lexnode.processes.get(numero, {
|
|
@@ -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
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
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
|
|
397
|
+
// Outro grau deste número que o acervo não conhece pode não ter vindo.
|
|
302
398
|
}
|
|
303
399
|
```
|
|
304
400
|
|
|
@@ -306,24 +402,74 @@ 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
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
405
|
+
**Agentes têm a espera deles.** No canal para agentes (MCP), as tools
|
|
406
|
+
`ler_processo` e `consultar_processo` escolhem a espera em `maxWaitSeconds`, na
|
|
407
|
+
mesma faixa e com padrão de 120 s; esse canal não passa pelo SDK.
|
|
408
|
+
|
|
409
|
+
## Quando a fonte falha: o retrato guardado
|
|
410
|
+
|
|
411
|
+
Quando a fonte processual falha — não responde dentro de `waitSeconds`, fica
|
|
412
|
+
indisponível, responde com parte do índice sem poder servir o processo ou pede
|
|
413
|
+
para esperar por volume — e o acervo guarda uma cópia do processo, a ficha
|
|
414
|
+
(`processes.get`) e o retrato (`processes.snapshot`) respondem com essa cópia em
|
|
415
|
+
vez do erro. A resposta diz que é cópia, e de quando:
|
|
416
|
+
|
|
417
|
+
- `meta.lakeRescue.cause` diz por que a fonte não entregou: `UPSTREAM_TIMEOUT`,
|
|
418
|
+
`UPSTREAM_UNAVAILABLE` ou `UPSTREAM_RATE_LIMITED`;
|
|
419
|
+
- `meta.lakeRescue.retryAfterSeconds`, repetido no header `Retry-After`, diz na
|
|
420
|
+
recusa por volume quanto esperar antes de consultar a fonte de novo. É a
|
|
421
|
+
espera da fonte, não do teto do motor: `meta.rateLimit.retryAfterSeconds`
|
|
422
|
+
fica `null` no sucesso;
|
|
423
|
+
- `meta.sourceFetchedAt` diz quando a cópia foi buscada na fonte. Esse campo
|
|
424
|
+
acompanha toda resposta das duas leituras, socorrida ou não, menos a ficha
|
|
425
|
+
que o controle de confidencialidade entrega retida, sem o teor.
|
|
426
|
+
|
|
427
|
+
A cópia custa 1 crédito, na ficha e no retrato. O retrato confere o saldo pelo
|
|
428
|
+
preço cheio, 8, antes de ir à fonte; a ficha confere pelo preço do que
|
|
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.
|
|
436
|
+
|
|
437
|
+
**Até que idade.** Sem pedir nada, só a cópia de até 24 h socorre a leitura —
|
|
438
|
+
nessas duas rotas, uma resposta de sucesso já podia ser cópia do acervo dentro
|
|
439
|
+
desse prazo. A cópia de qualquer idade vem com `staleOnFailure: true`:
|
|
317
440
|
|
|
318
441
|
```ts
|
|
319
|
-
|
|
320
|
-
|
|
442
|
+
import { describeFreshness, lakeRescueOf } from "@lexnode/legal-data-sdk";
|
|
443
|
+
|
|
444
|
+
const retrato = await lexnode.processes.snapshot(numero, {
|
|
445
|
+
tribunalAlias: "api_publica_tjsp",
|
|
446
|
+
staleOnFailure: true,
|
|
447
|
+
});
|
|
448
|
+
|
|
449
|
+
const socorro = lakeRescueOf(retrato);
|
|
450
|
+
if (socorro) {
|
|
451
|
+
// A fonte falhou e isto é a cópia guardada: o que andou depois de
|
|
452
|
+
// socorro.sourceFetchedAt não está aqui.
|
|
453
|
+
mostrar(describeFreshness(retrato));
|
|
454
|
+
// "cópia guardada em 26/09/2026, servida porque a fonte não respondeu a tempo"
|
|
321
455
|
}
|
|
322
456
|
```
|
|
323
457
|
|
|
324
|
-
|
|
325
|
-
`
|
|
326
|
-
|
|
458
|
+
`lakeRescueOf` devolve `{ cause, sourceFetchedAt, retryAfterSeconds }` ou
|
|
459
|
+
`null` — `sourceFetchedAt` é nulo na ficha retida —, e `sourceFetchedAtOf`
|
|
460
|
+
devolve a data de qualquer resposta dessas leituras. As duas aceitam o envelope
|
|
461
|
+
inteiro e o item do lote.
|
|
462
|
+
|
|
463
|
+
**O que não é socorrido.** A resposta da fonte que não traz o processo segue
|
|
464
|
+
404 `PROCESS_NOT_FOUND`, com cópia guardada ou sem ela: é a fonte dizendo que
|
|
465
|
+
não tem o número, e não uma falha dela. A cópia passa pelo mesmo controle de
|
|
466
|
+
confidencialidade da leitura; além de 24 h, só a recebe quem já tem interesse
|
|
467
|
+
registrado no processo — de uma leitura anterior dele ou de uma assinatura
|
|
468
|
+
ativa —, e os demais recebem a falha da fonte, como se não houvesse cópia.
|
|
469
|
+
|
|
470
|
+
**No lote.** `processes.snapshotBatch` socorre só com a cópia de até 24 h. O
|
|
471
|
+
item socorrido traz `lakeRescue` com a causa e a data, e custa 1 crédito em vez
|
|
472
|
+
de 8.
|
|
327
473
|
|
|
328
474
|
## Frescor: o `total: 0` qualificado
|
|
329
475
|
|
package/dist/client.js
CHANGED
|
@@ -66,12 +66,16 @@ function readHeaderNumber(headers, name) {
|
|
|
66
66
|
/**
|
|
67
67
|
* O teto por minuto sai em TODA resposta autenticada, não só na recusa. Lê-lo
|
|
68
68
|
* no sucesso é o que permite ao consumidor desacelerar ANTES de bater no 429.
|
|
69
|
+
* O `Retry-After` só conta na recusa: no sucesso ele é a espera que a fonte
|
|
70
|
+
* pediu a uma leitura socorrida pelo acervo, e sai em `meta.lakeRescue`.
|
|
69
71
|
*/
|
|
70
|
-
function readRateLimit(headers) {
|
|
72
|
+
function readRateLimit(headers, succeeded) {
|
|
71
73
|
const limit = readHeaderNumber(headers, "RateLimit-Limit");
|
|
72
74
|
const remaining = readHeaderNumber(headers, "RateLimit-Remaining");
|
|
73
75
|
const resetSeconds = readHeaderNumber(headers, "RateLimit-Reset");
|
|
74
|
-
const retryAfterSeconds =
|
|
76
|
+
const retryAfterSeconds = succeeded
|
|
77
|
+
? null
|
|
78
|
+
: readHeaderNumber(headers, "Retry-After");
|
|
75
79
|
if (limit === null &&
|
|
76
80
|
remaining === null &&
|
|
77
81
|
resetSeconds === null &&
|
|
@@ -272,7 +276,7 @@ export function createLexNodeClient(options) {
|
|
|
272
276
|
// corpo de outro host como se fosse a resposta do motor.
|
|
273
277
|
redirect: "error",
|
|
274
278
|
});
|
|
275
|
-
rateLimit = readRateLimit(response.headers);
|
|
279
|
+
rateLimit = readRateLimit(response.headers, response.ok);
|
|
276
280
|
// A leitura do corpo fica DENTRO do prazo: um corpo que trava depois dos
|
|
277
281
|
// cabeçalhos pendura a chamada por tempo indefinido se o vínculo já tiver
|
|
278
282
|
// sido desfeito aqui.
|
package/dist/freshness.d.ts
CHANGED
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
* publica a data-limite do índice em dois eixos — `updatedThrough` na busca de
|
|
8
8
|
* processo, `lastEditionDate` na leitura do diário — e este módulo é a leitura
|
|
9
9
|
* dos dois pelo mesmo nome.
|
|
10
|
+
*
|
|
11
|
+
* A leitura de UM processo diz também de quando são os dados servidos
|
|
12
|
+
* (`meta.sourceFetchedAt`) e, quando a fonte falhou e o acervo socorreu, que a
|
|
13
|
+
* resposta é a cópia guardada (`meta.lakeRescue`).
|
|
10
14
|
*/
|
|
11
15
|
export type FreshnessAxis = "PROCESS" | "PUBLICATION";
|
|
12
16
|
export type FreshnessState =
|
|
@@ -44,5 +48,40 @@ export interface NotYetIndexedOptions {
|
|
|
44
48
|
* data-limite que cobre o que se perguntou: aí o vazio é resposta.
|
|
45
49
|
*/
|
|
46
50
|
export declare function isNotYetIndexed(result: unknown, options?: NotYetIndexedOptions): boolean;
|
|
47
|
-
/**
|
|
51
|
+
/** Por que a fonte não entregou o processo que o acervo socorreu. */
|
|
52
|
+
export type LakeRescueCause = "UPSTREAM_TIMEOUT" | "UPSTREAM_UNAVAILABLE" | "UPSTREAM_RATE_LIMITED";
|
|
53
|
+
/**
|
|
54
|
+
* A leitura de UM processo cuja fonte falhou e que o motor serviu com a cópia
|
|
55
|
+
* que o acervo guarda.
|
|
56
|
+
*/
|
|
57
|
+
export interface LakeRescue {
|
|
58
|
+
/**
|
|
59
|
+
* A causa, pelo código público da taxonomia. Valor novo pode entrar no
|
|
60
|
+
* contrato; trate o desconhecido como "a fonte falhou".
|
|
61
|
+
*/
|
|
62
|
+
cause: LakeRescueCause | (string & {});
|
|
63
|
+
/**
|
|
64
|
+
* Quando a cópia servida foi buscada na fonte; nulo na ficha que o controle
|
|
65
|
+
* de confidencialidade entrega retida, que sai sem a data.
|
|
66
|
+
*/
|
|
67
|
+
sourceFetchedAt: Date | null;
|
|
68
|
+
/** A espera que a fonte pediu, na recusa por volume. */
|
|
69
|
+
retryAfterSeconds: number | null;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* O socorro pelo acervo, ou `null` quando a resposta veio da fonte ou do
|
|
73
|
+
* acervo em dia. Aceita o envelope inteiro (`{ data, meta }`) ou o item do
|
|
74
|
+
* lote de retratos; só o `data` não traz a marca.
|
|
75
|
+
*/
|
|
76
|
+
export declare function lakeRescueOf(result: unknown): LakeRescue | null;
|
|
77
|
+
/**
|
|
78
|
+
* Quando os dados servidos foram buscados na fonte: `meta.sourceFetchedAt` das
|
|
79
|
+
* leituras de um processo, ou a data do item socorrido do lote.
|
|
80
|
+
*/
|
|
81
|
+
export declare function sourceFetchedAtOf(result: unknown): Date | null;
|
|
82
|
+
/**
|
|
83
|
+
* Uma frase em pt-BR sobre o frescor da resposta, pronta para a tela: a cópia
|
|
84
|
+
* guardada e o porquê, quando o acervo socorreu a fonte; senão, até onde a
|
|
85
|
+
* fonte foi lida.
|
|
86
|
+
*/
|
|
48
87
|
export declare function describeFreshness(result: unknown): string;
|
package/dist/freshness.js
CHANGED
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
* publica a data-limite do índice em dois eixos — `updatedThrough` na busca de
|
|
8
8
|
* processo, `lastEditionDate` na leitura do diário — e este módulo é a leitura
|
|
9
9
|
* dos dois pelo mesmo nome.
|
|
10
|
+
*
|
|
11
|
+
* A leitura de UM processo diz também de quando são os dados servidos
|
|
12
|
+
* (`meta.sourceFetchedAt`) e, quando a fonte falhou e o acervo socorreu, que a
|
|
13
|
+
* resposta é a cópia guardada (`meta.lakeRescue`).
|
|
10
14
|
*/
|
|
11
15
|
function asRecord(value) {
|
|
12
16
|
return value && typeof value === "object" && !Array.isArray(value)
|
|
@@ -96,8 +100,88 @@ function ddmmaaaa(date) {
|
|
|
96
100
|
const mes = String(date.getUTCMonth() + 1).padStart(2, "0");
|
|
97
101
|
return `${dia}/${mes}/${date.getUTCFullYear()}`;
|
|
98
102
|
}
|
|
99
|
-
|
|
103
|
+
function toInstant(value) {
|
|
104
|
+
if (value instanceof Date) {
|
|
105
|
+
return Number.isNaN(value.getTime()) ? null : value;
|
|
106
|
+
}
|
|
107
|
+
return toDate(value);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* A marca do socorro e a data da cópia, onde quer que elas venham: no `meta`
|
|
111
|
+
* do envelope das leituras de um processo, ou no item do lote de retratos,
|
|
112
|
+
* que leva as duas em `lakeRescue`.
|
|
113
|
+
*/
|
|
114
|
+
function rescueFieldsOf(result) {
|
|
115
|
+
const record = asRecord(result);
|
|
116
|
+
const meta = asRecord(record?.meta);
|
|
117
|
+
if (meta) {
|
|
118
|
+
return {
|
|
119
|
+
rescue: asRecord(meta.lakeRescue),
|
|
120
|
+
fetchedAt: meta.sourceFetchedAt,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
const itemRescue = asRecord(record?.lakeRescue);
|
|
124
|
+
return { rescue: itemRescue, fetchedAt: itemRescue?.sourceFetchedAt };
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* O socorro pelo acervo, ou `null` quando a resposta veio da fonte ou do
|
|
128
|
+
* acervo em dia. Aceita o envelope inteiro (`{ data, meta }`) ou o item do
|
|
129
|
+
* lote de retratos; só o `data` não traz a marca.
|
|
130
|
+
*/
|
|
131
|
+
export function lakeRescueOf(result) {
|
|
132
|
+
const { rescue, fetchedAt } = rescueFieldsOf(result);
|
|
133
|
+
if (!rescue || typeof rescue.cause !== "string")
|
|
134
|
+
return null;
|
|
135
|
+
return {
|
|
136
|
+
cause: rescue.cause,
|
|
137
|
+
sourceFetchedAt: toInstant(fetchedAt),
|
|
138
|
+
retryAfterSeconds: typeof rescue.retryAfterSeconds === "number"
|
|
139
|
+
? rescue.retryAfterSeconds
|
|
140
|
+
: null,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Quando os dados servidos foram buscados na fonte: `meta.sourceFetchedAt` das
|
|
145
|
+
* leituras de um processo, ou a data do item socorrido do lote.
|
|
146
|
+
*/
|
|
147
|
+
export function sourceFetchedAtOf(result) {
|
|
148
|
+
return toInstant(rescueFieldsOf(result).fetchedAt);
|
|
149
|
+
}
|
|
150
|
+
const BRASILIA_DATE = new Intl.DateTimeFormat("pt-BR", {
|
|
151
|
+
day: "2-digit",
|
|
152
|
+
month: "2-digit",
|
|
153
|
+
year: "numeric",
|
|
154
|
+
timeZone: "America/Sao_Paulo",
|
|
155
|
+
});
|
|
156
|
+
/** O dia de um instante no horário de Brasília, montado pelas partes. */
|
|
157
|
+
function ddmmaaaaBrasilia(date) {
|
|
158
|
+
const parts = Object.fromEntries(BRASILIA_DATE.formatToParts(date).map((part) => [part.type, part.value]));
|
|
159
|
+
return `${parts.day}/${parts.month}/${parts.year}`;
|
|
160
|
+
}
|
|
161
|
+
const RESCUE_REASON = {
|
|
162
|
+
UPSTREAM_TIMEOUT: "não respondeu a tempo",
|
|
163
|
+
UPSTREAM_UNAVAILABLE: "não conseguiu entregar o processo",
|
|
164
|
+
UPSTREAM_RATE_LIMITED: "pediu para esperar por volume",
|
|
165
|
+
};
|
|
166
|
+
function rescueReason(cause) {
|
|
167
|
+
return cause in RESCUE_REASON
|
|
168
|
+
? RESCUE_REASON[cause]
|
|
169
|
+
: "falhou";
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Uma frase em pt-BR sobre o frescor da resposta, pronta para a tela: a cópia
|
|
173
|
+
* guardada e o porquê, quando o acervo socorreu a fonte; senão, até onde a
|
|
174
|
+
* fonte foi lida.
|
|
175
|
+
*/
|
|
100
176
|
export function describeFreshness(result) {
|
|
177
|
+
const rescue = lakeRescueOf(result);
|
|
178
|
+
if (rescue) {
|
|
179
|
+
const date = rescue.sourceFetchedAt
|
|
180
|
+
? ` em ${ddmmaaaaBrasilia(rescue.sourceFetchedAt)}`
|
|
181
|
+
: "";
|
|
182
|
+
const reason = rescueReason(rescue.cause);
|
|
183
|
+
return `cópia guardada${date}, servida porque a fonte ${reason}`;
|
|
184
|
+
}
|
|
101
185
|
const { readThrough: limite } = freshnessOf(result);
|
|
102
186
|
return limite
|
|
103
187
|
? `fonte lida até ${ddmmaaaa(limite)}`
|
package/dist/index.d.ts
CHANGED
|
@@ -15,12 +15,12 @@ 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";
|
|
22
22
|
export type { ProcessSearchOutcome, ProcessSearchResult, QueuedSearchJob, SearchJob, SearchJobState, WaitForSearchJobOptions, } from "./search.js";
|
|
23
|
-
export { describeFreshness, freshnessOf, isNotYetIndexed, readThrough, } from "./freshness.js";
|
|
24
|
-
export type { Freshness, FreshnessAxis, FreshnessState, NotYetIndexedOptions, } from "./freshness.js";
|
|
23
|
+
export { describeFreshness, freshnessOf, isNotYetIndexed, lakeRescueOf, readThrough, sourceFetchedAtOf, } from "./freshness.js";
|
|
24
|
+
export type { Freshness, FreshnessAxis, FreshnessState, LakeRescue, LakeRescueCause, NotYetIndexedOptions, } from "./freshness.js";
|
|
25
25
|
export { isFirstAppearance, resubscribeOnFirstAppearance, unwatchProcess, watchProcess, } from "./watch.js";
|
|
26
26
|
export type { FirstAppearanceEvent, ResubscribeSubscriber, UnwatchProcessInput, WatchProcessInput, WatchProcessResult, } from "./watch.js";
|
package/dist/index.js
CHANGED
|
@@ -13,5 +13,5 @@ export { LEXNODE_ERROR_CODES, LexNodeError, isLexNodeError } from "./errors.js";
|
|
|
13
13
|
export { DEFAULT_WEBHOOK_TOLERANCE_SECONDS, LEXNODE_WEBHOOK_HEADERS, WEBHOOK_EVENT_TYPES, WEBHOOK_TEST_EVENT_TYPE, isKnownWebhookEventType, isReceiverFault, isWebhookTest, parseWebhookEvent, verifyWebhookSignature, webhookRejectionStatus, } from "./webhooks.js";
|
|
14
14
|
export { paginate } from "./paginate.js";
|
|
15
15
|
export { searchProcesses, waitForSearchJob } from "./search.js";
|
|
16
|
-
export { describeFreshness, freshnessOf, isNotYetIndexed, readThrough, } from "./freshness.js";
|
|
16
|
+
export { describeFreshness, freshnessOf, isNotYetIndexed, lakeRescueOf, readThrough, sourceFetchedAtOf, } from "./freshness.js";
|
|
17
17
|
export { isFirstAppearance, resubscribeOnFirstAppearance, unwatchProcess, watchProcess, } from "./watch.js";
|
package/dist/types.d.ts
CHANGED
|
@@ -89,7 +89,11 @@ export interface RateLimitSnapshot {
|
|
|
89
89
|
* dormir a janela inteira — para desacelerar, olhe `remaining`.
|
|
90
90
|
*/
|
|
91
91
|
resetSeconds: number | null;
|
|
92
|
-
/**
|
|
92
|
+
/**
|
|
93
|
+
* O `Retry-After` da recusa, quando houve; `null` em todo sucesso. A espera
|
|
94
|
+
* que a fonte pediu a uma leitura socorrida pelo acervo sai em
|
|
95
|
+
* `meta.lakeRescue.retryAfterSeconds`.
|
|
96
|
+
*/
|
|
93
97
|
retryAfterSeconds: number | null;
|
|
94
98
|
}
|
|
95
99
|
/**
|
package/dist/webhooks.d.ts
CHANGED
|
@@ -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
|
|
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
|
|
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.
|
|
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);
|
|
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. `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
|
|
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
|
|
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.
|
|
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
|
*/
|
|
@@ -2043,6 +2043,8 @@ export interface operations {
|
|
|
2043
2043
|
since?: unknown;
|
|
2044
2044
|
/** @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. */
|
|
2045
2045
|
waitSeconds?: number;
|
|
2046
|
+
/** @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. */
|
|
2047
|
+
staleOnFailure?: boolean;
|
|
2046
2048
|
};
|
|
2047
2049
|
header?: {
|
|
2048
2050
|
/** @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. */
|
|
@@ -2116,13 +2118,91 @@ export interface operations {
|
|
|
2116
2118
|
latestPublicationExcerpt?: string | null;
|
|
2117
2119
|
latestPublicationUrl?: string | null;
|
|
2118
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
|
+
}[];
|
|
2119
2184
|
};
|
|
2120
2185
|
meta: {
|
|
2121
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. */
|
|
2122
2187
|
requestId: string;
|
|
2123
2188
|
credits?: number;
|
|
2124
2189
|
cacheHit?: boolean;
|
|
2125
|
-
/**
|
|
2190
|
+
/**
|
|
2191
|
+
* Format: date-time
|
|
2192
|
+
* @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.
|
|
2193
|
+
*/
|
|
2194
|
+
sourceFetchedAt?: string;
|
|
2195
|
+
/** @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. */
|
|
2196
|
+
lakeRescue?: {
|
|
2197
|
+
/**
|
|
2198
|
+
* @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).
|
|
2199
|
+
* @enum {string}
|
|
2200
|
+
*/
|
|
2201
|
+
cause: "UPSTREAM_TIMEOUT" | "UPSTREAM_UNAVAILABLE" | "UPSTREAM_RATE_LIMITED";
|
|
2202
|
+
/** @description A espera que a fonte pediu: não consulte a fonte de novo antes dela. */
|
|
2203
|
+
retryAfterSeconds?: number;
|
|
2204
|
+
};
|
|
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. */
|
|
2126
2206
|
partialIndex?: {
|
|
2127
2207
|
/** @description Partes do índice da fonte que não responderam. */
|
|
2128
2208
|
shardsFailed: number;
|
|
@@ -2131,7 +2211,7 @@ export interface operations {
|
|
|
2131
2211
|
/** @description A fonte estourou o próprio prazo interno e devolveu só o que deu tempo de olhar. */
|
|
2132
2212
|
timedOut: boolean;
|
|
2133
2213
|
};
|
|
2134
|
-
/** @description Presente só quando a resposta da fonte trouxe
|
|
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. */
|
|
2135
2215
|
otherInstances?: {
|
|
2136
2216
|
/** @description O grau deste documento na fonte: G1, G2, JE, TR… */
|
|
2137
2217
|
grau: string | null;
|
|
@@ -2676,6 +2756,8 @@ export interface operations {
|
|
|
2676
2756
|
since?: unknown;
|
|
2677
2757
|
/** @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. */
|
|
2678
2758
|
waitSeconds?: number;
|
|
2759
|
+
/** @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. */
|
|
2760
|
+
staleOnFailure?: boolean;
|
|
2679
2761
|
};
|
|
2680
2762
|
header?: {
|
|
2681
2763
|
/** @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. */
|
|
@@ -2761,13 +2843,104 @@ export interface operations {
|
|
|
2761
2843
|
complementos: unknown;
|
|
2762
2844
|
rawPayload: unknown;
|
|
2763
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
|
+
}[];
|
|
2764
2922
|
};
|
|
2765
2923
|
meta: {
|
|
2766
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. */
|
|
2767
2925
|
requestId: string;
|
|
2768
2926
|
credits?: number;
|
|
2769
2927
|
cacheHit?: boolean;
|
|
2770
|
-
/**
|
|
2928
|
+
/**
|
|
2929
|
+
* Format: date-time
|
|
2930
|
+
* @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.
|
|
2931
|
+
*/
|
|
2932
|
+
sourceFetchedAt?: string;
|
|
2933
|
+
/** @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. */
|
|
2934
|
+
lakeRescue?: {
|
|
2935
|
+
/**
|
|
2936
|
+
* @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).
|
|
2937
|
+
* @enum {string}
|
|
2938
|
+
*/
|
|
2939
|
+
cause: "UPSTREAM_TIMEOUT" | "UPSTREAM_UNAVAILABLE" | "UPSTREAM_RATE_LIMITED";
|
|
2940
|
+
/** @description A espera que a fonte pediu: não consulte a fonte de novo antes dela. */
|
|
2941
|
+
retryAfterSeconds?: number;
|
|
2942
|
+
};
|
|
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. */
|
|
2771
2944
|
partialIndex?: {
|
|
2772
2945
|
/** @description Partes do índice da fonte que não responderam. */
|
|
2773
2946
|
shardsFailed: number;
|
|
@@ -2776,7 +2949,7 @@ export interface operations {
|
|
|
2776
2949
|
/** @description A fonte estourou o próprio prazo interno e devolveu só o que deu tempo de olhar. */
|
|
2777
2950
|
timedOut: boolean;
|
|
2778
2951
|
};
|
|
2779
|
-
/** @description Presente só quando a resposta da fonte trouxe
|
|
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. */
|
|
2780
2953
|
otherInstances?: {
|
|
2781
2954
|
/** @description O grau deste documento na fonte: G1, G2, JE, TR… */
|
|
2782
2955
|
grau: string | null;
|
|
@@ -3011,6 +3184,8 @@ export interface operations {
|
|
|
3011
3184
|
query: {
|
|
3012
3185
|
tribunalAlias: string;
|
|
3013
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;
|
|
3014
3189
|
};
|
|
3015
3190
|
header?: {
|
|
3016
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. */
|
|
@@ -3040,6 +3215,8 @@ export interface operations {
|
|
|
3040
3215
|
formattedProcessNumber: string;
|
|
3041
3216
|
/** Format: date-time */
|
|
3042
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[];
|
|
3043
3220
|
code: number | null;
|
|
3044
3221
|
label?: string | null;
|
|
3045
3222
|
payload: unknown;
|
|
@@ -3361,6 +3538,84 @@ export interface operations {
|
|
|
3361
3538
|
} | null;
|
|
3362
3539
|
};
|
|
3363
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
|
+
}[];
|
|
3604
|
+
};
|
|
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. */
|
|
3606
|
+
lakeRescue?: {
|
|
3607
|
+
/**
|
|
3608
|
+
* @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).
|
|
3609
|
+
* @enum {string}
|
|
3610
|
+
*/
|
|
3611
|
+
cause: "UPSTREAM_TIMEOUT" | "UPSTREAM_UNAVAILABLE" | "UPSTREAM_RATE_LIMITED";
|
|
3612
|
+
/** @description A espera que a fonte pediu: não consulte a fonte de novo antes dela. */
|
|
3613
|
+
retryAfterSeconds?: number;
|
|
3614
|
+
/**
|
|
3615
|
+
* Format: date-time
|
|
3616
|
+
* @description Quando a cópia servida foi buscada na fonte.
|
|
3617
|
+
*/
|
|
3618
|
+
sourceFetchedAt: string;
|
|
3364
3619
|
};
|
|
3365
3620
|
error?: {
|
|
3366
3621
|
status?: number;
|
|
@@ -11838,7 +12093,7 @@ export interface operations {
|
|
|
11838
12093
|
windowDays: number;
|
|
11839
12094
|
items: ({
|
|
11840
12095
|
/** @enum {string} */
|
|
11841
|
-
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";
|
|
11842
12097
|
/** @enum {string} */
|
|
11843
12098
|
class: "DATA" | "OPERATIONAL";
|
|
11844
12099
|
count: number;
|
|
@@ -11849,7 +12104,7 @@ export interface operations {
|
|
|
11849
12104
|
})[];
|
|
11850
12105
|
dismissed: ({
|
|
11851
12106
|
/** @enum {string} */
|
|
11852
|
-
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";
|
|
11853
12108
|
/** Format: date-time */
|
|
11854
12109
|
dismissedAt: string;
|
|
11855
12110
|
} & {
|
|
@@ -12054,7 +12309,7 @@ export interface operations {
|
|
|
12054
12309
|
query?: {
|
|
12055
12310
|
cursor?: string;
|
|
12056
12311
|
limit?: number;
|
|
12057
|
-
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";
|
|
12058
12313
|
monitorId?: string;
|
|
12059
12314
|
since?: unknown;
|
|
12060
12315
|
until?: unknown;
|
|
@@ -12807,7 +13062,7 @@ export interface operations {
|
|
|
12807
13062
|
/** Format: uri */
|
|
12808
13063
|
url: string;
|
|
12809
13064
|
description?: string;
|
|
12810
|
-
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")[];
|
|
12811
13066
|
/** @default true */
|
|
12812
13067
|
isActive?: boolean;
|
|
12813
13068
|
};
|
|
@@ -13282,7 +13537,7 @@ export interface operations {
|
|
|
13282
13537
|
/** Format: uri */
|
|
13283
13538
|
url?: string;
|
|
13284
13539
|
description?: string;
|
|
13285
|
-
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")[];
|
|
13286
13541
|
isActive?: boolean;
|
|
13287
13542
|
};
|
|
13288
13543
|
};
|
|
@@ -13975,7 +14230,7 @@ export interface operations {
|
|
|
13975
14230
|
from: unknown;
|
|
13976
14231
|
to?: unknown;
|
|
13977
14232
|
/** @enum {string} */
|
|
13978
|
-
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";
|
|
13979
14234
|
/** @default false */
|
|
13980
14235
|
includeDelivered?: boolean;
|
|
13981
14236
|
};
|