@lexnode/legal-data-sdk 1.29.0 → 1.31.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 +222 -183
- package/dist/client.d.ts +217 -24
- package/dist/client.js +6 -103
- package/dist/errors.d.ts +86 -41
- package/dist/errors.js +1 -49
- package/dist/freshness.d.ts +88 -41
- package/dist/freshness.js +0 -47
- package/dist/index.d.ts +12 -8
- package/dist/index.js +1 -11
- package/dist/lookup.d.ts +130 -37
- package/dist/lookup.js +63 -37
- package/dist/paginate.d.ts +15 -5
- package/dist/paginate.js +0 -30
- package/dist/search.d.ts +57 -23
- package/dist/search.js +0 -17
- package/dist/types.d.ts +77 -68
- package/dist/watch.d.ts +78 -43
- package/dist/watch.js +0 -35
- package/dist/webhooks.d.ts +184 -93
- package/dist/webhooks.js +0 -65
- package/package.json +6 -3
- package/schema.d.ts +558 -518
package/dist/webhooks.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* O motor assina cada entrega como `x-lexnode-signature: t=<unix>,v1=<hex>`,
|
|
5
|
-
* onde o HMAC-SHA256 cobre `${t}.${corpoCru}` com o segredo do endpoint. A
|
|
6
|
-
* conferência é sobre os BYTES CRUS recebidos: reserializar o JSON muda a
|
|
7
|
-
* ordem das chaves e o digest deixa de bater.
|
|
2
|
+
* Os cabeçalhos de uma entrega de webhook: o tipo do evento, o instante, a
|
|
3
|
+
* assinatura e o número da tentativa.
|
|
8
4
|
*/
|
|
9
5
|
export declare const LEXNODE_WEBHOOK_HEADERS: {
|
|
10
6
|
readonly event: "x-lexnode-event";
|
|
@@ -12,14 +8,20 @@ export declare const LEXNODE_WEBHOOK_HEADERS: {
|
|
|
12
8
|
readonly signature: "x-lexnode-signature";
|
|
13
9
|
readonly deliveryAttempt: "x-lexnode-delivery-attempt";
|
|
14
10
|
};
|
|
15
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* A tolerância padrão, em segundos, entre o instante da assinatura e o seu
|
|
13
|
+
* relógio. Entrega fora dela é recusada como `TIMESTAMP_OUT_OF_TOLERANCE`.
|
|
14
|
+
*/
|
|
16
15
|
export declare const DEFAULT_WEBHOOK_TOLERANCE_SECONDS = 300;
|
|
17
16
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
17
|
+
* O corpo da entrega como chegou, em texto ou bytes. Um objeto já convertido
|
|
18
|
+
* de JSON é recusado como `RAW_BODY_REQUIRED`: a assinatura vale para os bytes
|
|
19
|
+
* originais.
|
|
20
20
|
*/
|
|
21
21
|
export type WebhookRawBody = string | Uint8Array;
|
|
22
|
+
/** Por que `verifyWebhookSignature` recusou a entrega. */
|
|
22
23
|
export type WebhookRejection = "MISSING_SECRET" | "RAW_BODY_REQUIRED" | "MISSING_SIGNATURE" | "MALFORMED_SIGNATURE" | "TIMESTAMP_MISMATCH" | "TIMESTAMP_OUT_OF_TOLERANCE" | "SIGNATURE_MISMATCH";
|
|
24
|
+
/** O resultado de `verifyWebhookSignature`. */
|
|
23
25
|
export type WebhookVerification = {
|
|
24
26
|
ok: true;
|
|
25
27
|
timestamp: number;
|
|
@@ -27,14 +29,17 @@ export type WebhookVerification = {
|
|
|
27
29
|
ok: false;
|
|
28
30
|
reason: WebhookRejection;
|
|
29
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* Por que `parseWebhookEvent` recusou a entrega: a assinatura, o JSON ou o
|
|
34
|
+
* formato do evento.
|
|
35
|
+
*/
|
|
30
36
|
export type WebhookParseRejection = WebhookRejection | "INVALID_JSON" | "INVALID_ENVELOPE";
|
|
31
37
|
/**
|
|
32
|
-
* O
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* outros — `payload` viraria `unknown` mesmo no caso reconhecido.
|
|
38
|
+
* O resultado de `parseWebhookEvent`. Com `ok: true`, `known` diz se o tipo do
|
|
39
|
+
* evento está no catálogo deste pacote: com `known: true`, `event.type`
|
|
40
|
+
* estreita o `payload`; com `known: false`, o evento é um
|
|
41
|
+
* `UnknownWebhookEvent`. Com `ok: false`, `reason` diz por que a entrega foi
|
|
42
|
+
* recusada.
|
|
38
43
|
*/
|
|
39
44
|
export type WebhookParseResult = {
|
|
40
45
|
ok: true;
|
|
@@ -48,42 +53,68 @@ export type WebhookParseResult = {
|
|
|
48
53
|
ok: false;
|
|
49
54
|
reason: WebhookParseRejection;
|
|
50
55
|
};
|
|
51
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* Os cabeçalhos da entrega, como `Headers` do `fetch` ou como o objeto de
|
|
58
|
+
* cabeçalhos de um framework.
|
|
59
|
+
*/
|
|
52
60
|
export type WebhookHeaders = Headers | Record<string, string | string[] | undefined>;
|
|
61
|
+
/** As opções de `verifyWebhookSignature` e de `parseWebhookEvent`. */
|
|
53
62
|
export interface VerifyWebhookOptions {
|
|
54
|
-
/**
|
|
63
|
+
/** A tolerância do instante da entrega, em segundos. Padrão: 300. */
|
|
55
64
|
toleranceSeconds?: number;
|
|
56
|
-
/**
|
|
65
|
+
/**
|
|
66
|
+
* O instante atual, em segundos da época Unix — a mesma unidade do `t` da
|
|
67
|
+
* assinatura. Útil em testes.
|
|
68
|
+
*/
|
|
57
69
|
now?: number;
|
|
58
70
|
}
|
|
59
71
|
/**
|
|
60
|
-
* Confere a assinatura de uma entrega e diz
|
|
72
|
+
* Confere a assinatura de uma entrega de webhook e diz por que recusou.
|
|
61
73
|
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
74
|
+
* Recebe o corpo como chegou, os cabeçalhos e o segredo do endpoint. A
|
|
75
|
+
* assinatura, no cabeçalho `x-lexnode-signature: t=<unix>,v1=<hex>`, é um
|
|
76
|
+
* HMAC-SHA256 de `${t}.${corpo}` com o segredo. Devolve `{ ok: true,
|
|
77
|
+
* timestamp }` ou `{ ok: false, reason }`, sem lançar; responda à recusa com
|
|
78
|
+
* `webhookRejectionStatus(reason)`.
|
|
79
|
+
*
|
|
80
|
+
* Passe o corpo como chegou, nunca um JSON convertido e serializado de novo: a
|
|
81
|
+
* ordem das chaves muda e a assinatura deixa de conferir. O cabeçalho
|
|
82
|
+
* `x-lexnode-timestamp`, quando vem, precisa repetir o `t` da assinatura.
|
|
65
83
|
*/
|
|
66
84
|
export declare function verifyWebhookSignature(rawBody: WebhookRawBody, headers: WebhookHeaders, secret: string, options?: VerifyWebhookOptions): WebhookVerification;
|
|
67
|
-
/**
|
|
85
|
+
/** Os campos comuns a toda entrega. */
|
|
68
86
|
export interface WebhookEventEnvelope {
|
|
87
|
+
/**
|
|
88
|
+
* O id do evento. A mesma entrega pode chegar mais de uma vez: use o id para
|
|
89
|
+
* descartar a repetida.
|
|
90
|
+
*/
|
|
69
91
|
id: string;
|
|
92
|
+
/** Quando o evento ocorreu (ISO 8601). */
|
|
70
93
|
occurredAt: string;
|
|
94
|
+
/** O projeto da conta a que o evento pertence, quando houver. */
|
|
71
95
|
projectId: string | null;
|
|
96
|
+
/** O monitor que produziu o evento, quando houver. */
|
|
72
97
|
monitorId: string | null;
|
|
73
98
|
}
|
|
74
|
-
/**
|
|
99
|
+
/**
|
|
100
|
+
* O indício de suspensão de prazo no teor da publicação: o nível de
|
|
101
|
+
* confiança, os termos encontrados e o trecho.
|
|
102
|
+
*/
|
|
75
103
|
export interface SuspensionSignal {
|
|
76
104
|
confidence: "HIGH" | "MEDIUM" | "LOW";
|
|
77
105
|
keywords: string[];
|
|
78
106
|
excerpt: string;
|
|
79
107
|
}
|
|
80
|
-
/**
|
|
108
|
+
/**
|
|
109
|
+
* Até quando o índice da fonte processual foi lido no tribunal: a data com
|
|
110
|
+
* que um `total: 0` se distingue de um atraso.
|
|
111
|
+
*/
|
|
81
112
|
export interface ProcessSourceIndex {
|
|
82
113
|
tribunalAlias: string;
|
|
83
114
|
updatedThrough: string | null;
|
|
84
115
|
checkedAt: string;
|
|
85
116
|
}
|
|
86
|
-
/** Quantos movimentos novos de um grau
|
|
117
|
+
/** Quantos movimentos novos de um grau chegaram na atualização. */
|
|
87
118
|
export interface ProcessMovementInstanceCount {
|
|
88
119
|
/** A sigla do grau (G1, G2, JE, TR…); nula quando a fonte não a declara. */
|
|
89
120
|
degree: string | null;
|
|
@@ -92,23 +123,22 @@ export interface ProcessMovementInstanceCount {
|
|
|
92
123
|
latestMovementKey: string;
|
|
93
124
|
}
|
|
94
125
|
/**
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
* `latestMovementKey`.
|
|
126
|
+
* O aviso de movimentação nova num processo assinado: um por assinatura e por
|
|
127
|
+
* atualização do processo, descrito pelo movimento novo mais recente, cuja
|
|
128
|
+
* chave é `latestMovementKey`.
|
|
98
129
|
*/
|
|
99
130
|
export interface ProcessMovementCreatedPayload {
|
|
100
131
|
canonicalProcessId: string;
|
|
101
132
|
tribunalAlias: string;
|
|
102
133
|
processNumber: string;
|
|
103
|
-
/**
|
|
134
|
+
/** A referência que você informou ao assinar o processo. */
|
|
104
135
|
externalRef: string | null;
|
|
105
136
|
newMovementCount: number;
|
|
106
137
|
latestMovementKey: string;
|
|
107
138
|
/**
|
|
108
|
-
* O
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
* listagem de movimentações a cada evento.
|
|
139
|
+
* O código da movimentação mais recente na Tabela Processual Unificada e o
|
|
140
|
+
* nome do ato como a fonte o escreve; `null` quando a fonte não os declara.
|
|
141
|
+
* Com eles, o aviso diz o que aconteceu sem reler a lista de movimentações.
|
|
112
142
|
*/
|
|
113
143
|
latestMovementCode?: number | null;
|
|
114
144
|
latestMovementLabel?: string | null;
|
|
@@ -125,31 +155,32 @@ export interface ProcessMovementCreatedPayload {
|
|
|
125
155
|
*/
|
|
126
156
|
instances?: ProcessMovementInstanceCount[];
|
|
127
157
|
/**
|
|
128
|
-
* Presente quando o processo não é compartilhável: o aviso diz que ele andou
|
|
129
|
-
*
|
|
158
|
+
* Presente quando o processo não é compartilhável: o aviso diz que ele andou,
|
|
159
|
+
* sem dizer o quê nem em que grau, porque o nome do ato faz parte do teor.
|
|
130
160
|
*/
|
|
131
161
|
contentWithheld?: true;
|
|
132
162
|
}
|
|
133
163
|
/**
|
|
134
164
|
* Outro grau de um processo assinado apareceu na fonte (1º grau, 2º grau,
|
|
135
|
-
* turma recursal…). O histórico
|
|
136
|
-
* `PROCESS_MOVEMENT_CREATED
|
|
137
|
-
*
|
|
165
|
+
* turma recursal…). O histórico desse grau não sai movimento a movimento em
|
|
166
|
+
* `PROCESS_MOVEMENT_CREATED`: este aviso diz que ele chegou, e os movimentos
|
|
167
|
+
* estão no retrato do processo, em `instances`.
|
|
138
168
|
*/
|
|
139
169
|
export interface ProcessInstanceDiscoveredPayload {
|
|
140
170
|
canonicalProcessId: string;
|
|
141
171
|
tribunalAlias: string;
|
|
142
172
|
processNumber: string;
|
|
143
|
-
/**
|
|
173
|
+
/** A referência que você informou ao assinar o processo. */
|
|
144
174
|
externalRef: string | null;
|
|
145
175
|
/** A sigla do grau novo; nula quando a fonte não a declara. */
|
|
146
176
|
degree: string | null;
|
|
147
177
|
/** O documento da fonte deste grau — o `sourceId` dele em `instances`. */
|
|
148
178
|
instanceSourceId: string;
|
|
179
|
+
/** O órgão julgador do grau novo. */
|
|
149
180
|
courtBody: string | null;
|
|
150
|
-
/** Quantos movimentos o grau trouxe
|
|
181
|
+
/** Quantos movimentos o grau trouxe quando apareceu. */
|
|
151
182
|
movementCount: number;
|
|
152
|
-
/** Quantos deles
|
|
183
|
+
/** Quantos deles não saíram em aviso próprio. */
|
|
153
184
|
historyMovementCount: number;
|
|
154
185
|
/**
|
|
155
186
|
* Quantos deles saíram também em `PROCESS_MOVEMENT_CREATED`: os datados
|
|
@@ -173,7 +204,7 @@ export interface ProcessInstanceDiscoveredWithheldPayload {
|
|
|
173
204
|
externalRef: string | null;
|
|
174
205
|
contentWithheld: true;
|
|
175
206
|
}
|
|
176
|
-
/** Um grau do
|
|
207
|
+
/** Um grau do processo como a última varredura do monitor o encontrou. */
|
|
177
208
|
export interface MonitorSyncInstance {
|
|
178
209
|
degree: string | null;
|
|
179
210
|
/** O documento da fonte deste grau — o `sourceId` dele em `instances`. */
|
|
@@ -183,24 +214,25 @@ export interface MonitorSyncInstance {
|
|
|
183
214
|
courtBody: string | null;
|
|
184
215
|
sourceUpdatedAt: string | null;
|
|
185
216
|
latestMovementAt: string | null;
|
|
186
|
-
/**
|
|
217
|
+
/** `null` quando os movimentos deste grau nunca foram capturados. */
|
|
187
218
|
movementCount: number | null;
|
|
188
219
|
/** Desde quando a resposta completa da fonte vem sem este documento. */
|
|
189
220
|
absentSince: string | null;
|
|
190
221
|
}
|
|
222
|
+
/** Uma publicação nova achada por um monitor de OAB, termo, parte ou CNPJ. */
|
|
191
223
|
export interface PublicationCreatedPayload {
|
|
192
224
|
monitorId: string;
|
|
193
225
|
officeId: string | null;
|
|
194
226
|
publicationKey: string;
|
|
195
227
|
processNumber: string;
|
|
196
228
|
formattedProcessNumber: string;
|
|
197
|
-
/** `null` quando o diário devolveu sigla que o catálogo
|
|
229
|
+
/** `null` quando o diário devolveu sigla que o catálogo de tribunais não cobre. */
|
|
198
230
|
tribunalAlias: string | null;
|
|
199
231
|
tribunalCode: string | null;
|
|
200
232
|
availableAt: string | null;
|
|
201
233
|
sourceUrl: string | null;
|
|
202
234
|
type: string;
|
|
203
|
-
/** Prévia do teor; `null` quando o
|
|
235
|
+
/** Prévia do teor; `null` quando o controle de confidencialidade o reteve. */
|
|
204
236
|
excerpt: string | null;
|
|
205
237
|
suspensionSignal: SuspensionSignal | null;
|
|
206
238
|
/** Presente só quando o teor foi retido no instante do envio. */
|
|
@@ -210,14 +242,23 @@ export interface PublicationCreatedPayload {
|
|
|
210
242
|
/** Só na vigília por nome de parte. */
|
|
211
243
|
partyName?: string;
|
|
212
244
|
partyRole?: string | null;
|
|
213
|
-
/**
|
|
214
|
-
*
|
|
245
|
+
/**
|
|
246
|
+
* Só na vigília por CNPJ: o que é vigiado — o CNPJ pontuado inteiro, ou a
|
|
247
|
+
* raiz `NN.NNN.NNN` com `includeBranches`.
|
|
248
|
+
*/
|
|
215
249
|
partyDocument?: string;
|
|
250
|
+
/** Só na vigília por CNPJ: se a vigília alcança matriz e filiais. */
|
|
216
251
|
includeBranches?: boolean;
|
|
217
|
-
/**
|
|
218
|
-
*
|
|
252
|
+
/**
|
|
253
|
+
* `document`: o CNPJ consta no teor — a empresa foi citada no ato, sendo
|
|
254
|
+
* parte ou não.
|
|
255
|
+
*/
|
|
219
256
|
matchedBy?: "document";
|
|
220
257
|
}
|
|
258
|
+
/**
|
|
259
|
+
* O resultado de uma varredura do monitor. O monitor de processo emite um a
|
|
260
|
+
* cada varredura, com ou sem novidade (`changed`).
|
|
261
|
+
*/
|
|
221
262
|
export interface MonitorSyncSucceededPayload {
|
|
222
263
|
monitorId: string;
|
|
223
264
|
officeId: string | null;
|
|
@@ -249,16 +290,15 @@ export interface MonitorSyncSucceededPayload {
|
|
|
249
290
|
* datas, e sem `instances`.
|
|
250
291
|
*/
|
|
251
292
|
contentWithheld?: true;
|
|
252
|
-
/** O
|
|
293
|
+
/** O processo que a fonte ainda não mostrava apareceu nesta varredura. */
|
|
253
294
|
firstAppearance?: true;
|
|
254
|
-
/**
|
|
295
|
+
/** O monitor segue esperando o processo aparecer no índice da fonte. */
|
|
255
296
|
awaitingAppearance?: true;
|
|
256
297
|
indexUpdatedThrough?: string | null;
|
|
257
298
|
expectedFrom?: string | null;
|
|
258
299
|
/**
|
|
259
|
-
* Varredura de diário:
|
|
260
|
-
* quando
|
|
261
|
-
* seria dizer que leu o que não leu.
|
|
300
|
+
* Varredura de diário: a primeira e a última data que a varredura leu de
|
|
301
|
+
* fato; `null` quando ela não leu nenhuma.
|
|
262
302
|
*/
|
|
263
303
|
availableFrom?: string | null;
|
|
264
304
|
availableTo?: string | null;
|
|
@@ -266,17 +306,17 @@ export interface MonitorSyncSucceededPayload {
|
|
|
266
306
|
pagesFetched?: number;
|
|
267
307
|
publicationsSeen?: number;
|
|
268
308
|
coveredThrough?: string;
|
|
269
|
-
/** Onde a próxima
|
|
309
|
+
/** Onde a próxima varredura retoma, o dia e a página; `null` ao terminar. */
|
|
270
310
|
resumesAt?: {
|
|
271
311
|
day: string;
|
|
272
312
|
page: number;
|
|
273
313
|
} | null;
|
|
274
314
|
pendingDays?: number;
|
|
275
315
|
/**
|
|
276
|
-
*
|
|
277
|
-
*
|
|
278
|
-
* com
|
|
279
|
-
*
|
|
316
|
+
* Os dias encerrados sem leitura completa, como `AAAA-MM-DD#SIGLA` (sem a
|
|
317
|
+
* sigla quando o dia não foi dividido por tribunal). `volumeCapped` traz os
|
|
318
|
+
* dias grandes demais, com parte por ler; `refusedDays`, os que a fonte
|
|
319
|
+
* recusa em definitivo.
|
|
280
320
|
*/
|
|
281
321
|
volumeCapped?: string[];
|
|
282
322
|
refusedDays?: string[];
|
|
@@ -286,16 +326,19 @@ export interface MonitorSyncSucceededPayload {
|
|
|
286
326
|
includeBranches?: boolean;
|
|
287
327
|
publicationsMatched?: number;
|
|
288
328
|
}
|
|
329
|
+
/** A falha de uma varredura do monitor. */
|
|
289
330
|
export interface MonitorSyncFailedPayload {
|
|
290
331
|
monitorId: string;
|
|
291
332
|
officeId: string | null;
|
|
333
|
+
/** A descrição da falha. */
|
|
292
334
|
error: string;
|
|
293
335
|
code: string;
|
|
294
336
|
class: "RETRYABLE" | "TERMINAL";
|
|
295
337
|
retryable: boolean;
|
|
296
|
-
/** O que
|
|
338
|
+
/** O que a varredura alcançou antes da falha, quando chegou a ler algo. */
|
|
297
339
|
coverage?: Record<string, unknown>;
|
|
298
340
|
}
|
|
341
|
+
/** O fim de uma busca enfileirada que concluiu. */
|
|
299
342
|
export interface SearchJobSucceededPayload {
|
|
300
343
|
jobId: string;
|
|
301
344
|
status: "SUCCEEDED";
|
|
@@ -308,6 +351,7 @@ export interface SearchJobSucceededPayload {
|
|
|
308
351
|
processNumbers: string[];
|
|
309
352
|
pollUrl: string;
|
|
310
353
|
}
|
|
354
|
+
/** O fim de uma busca enfileirada que falhou. */
|
|
311
355
|
export interface SearchJobFailedPayload {
|
|
312
356
|
jobId: string;
|
|
313
357
|
status: "FAILED";
|
|
@@ -324,11 +368,10 @@ export interface SearchJobFailedPayload {
|
|
|
324
368
|
pollUrl: string;
|
|
325
369
|
}
|
|
326
370
|
/**
|
|
327
|
-
* O fim de uma consulta
|
|
328
|
-
*
|
|
329
|
-
*
|
|
330
|
-
*
|
|
331
|
-
* `PROCESS_MOVEMENT_CREATED` de sempre.
|
|
371
|
+
* O fim de uma consulta em segundo plano (`POST /v1/processes/lookups`). O
|
|
372
|
+
* evento aponta a consulta e nunca traz o processo: leia-o em `pollUrl`, sem
|
|
373
|
+
* nova cobrança e pelo controle de confidencialidade de quem lê. A
|
|
374
|
+
* movimentação nova que a entrega trouxer chega em `PROCESS_MOVEMENT_CREATED`.
|
|
332
375
|
*/
|
|
333
376
|
interface ProcessLookupCompletedBase {
|
|
334
377
|
lookupId: string;
|
|
@@ -338,19 +381,26 @@ interface ProcessLookupCompletedBase {
|
|
|
338
381
|
processNumber: string;
|
|
339
382
|
officeId: string | null;
|
|
340
383
|
traceId: string | null;
|
|
341
|
-
/**
|
|
384
|
+
/**
|
|
385
|
+
* Quantas vezes a fonte foi consultada, contando a leitura que abriu a
|
|
386
|
+
* consulta.
|
|
387
|
+
*/
|
|
342
388
|
attempts: number;
|
|
343
389
|
pollUrl: string;
|
|
344
390
|
}
|
|
391
|
+
/** O fim de uma consulta em segundo plano que entregou o processo. */
|
|
345
392
|
export interface ProcessLookupSucceededPayload extends ProcessLookupCompletedBase {
|
|
346
393
|
status: "SUCCEEDED";
|
|
347
394
|
/**
|
|
348
|
-
* Quem entregou: a fonte
|
|
349
|
-
* leitura
|
|
395
|
+
* Quem entregou: `SOURCE`, a fonte; `LAKE`, a cópia guardada que outra
|
|
396
|
+
* leitura atualizou; ou `DIRECT_READ`, uma leitura direta sua, que já cobrou
|
|
397
|
+
* — então esta não cobra.
|
|
350
398
|
*/
|
|
351
399
|
satisfiedBy: "SOURCE" | "LAKE" | "DIRECT_READ";
|
|
400
|
+
/** Os créditos cobrados pela entrega. */
|
|
352
401
|
creditsCharged: number;
|
|
353
402
|
}
|
|
403
|
+
/** O fim de uma consulta em segundo plano que terminou sem o processo. */
|
|
354
404
|
export interface ProcessLookupFailedPayload extends ProcessLookupCompletedBase {
|
|
355
405
|
status: "FAILED";
|
|
356
406
|
satisfiedBy: null;
|
|
@@ -359,12 +409,13 @@ export interface ProcessLookupFailedPayload extends ProcessLookupCompletedBase {
|
|
|
359
409
|
error: {
|
|
360
410
|
class: "RETRYABLE" | "TERMINAL";
|
|
361
411
|
code: string;
|
|
362
|
-
/**
|
|
412
|
+
/** A mensagem fixa do código. */
|
|
363
413
|
message: string;
|
|
364
414
|
retryable: boolean;
|
|
365
415
|
upstreamStatus?: number;
|
|
366
416
|
};
|
|
367
417
|
}
|
|
418
|
+
/** Uma publicação nova que casou com a vigília de texto. */
|
|
368
419
|
export interface PublicationTextAlertMatch {
|
|
369
420
|
source: string;
|
|
370
421
|
publicationKey: string;
|
|
@@ -374,6 +425,7 @@ export interface PublicationTextAlertMatch {
|
|
|
374
425
|
/** Presente só quando o teor deste item foi retido no envio. */
|
|
375
426
|
contentWithheld?: true;
|
|
376
427
|
}
|
|
428
|
+
/** As publicações novas que casaram com uma vigília de texto. */
|
|
377
429
|
export interface PublicationTextAlertMatchedPayload {
|
|
378
430
|
alertId: string;
|
|
379
431
|
externalRef: string | null;
|
|
@@ -382,6 +434,10 @@ export interface PublicationTextAlertMatchedPayload {
|
|
|
382
434
|
totalNew: number;
|
|
383
435
|
matches: PublicationTextAlertMatch[];
|
|
384
436
|
}
|
|
437
|
+
/**
|
|
438
|
+
* O fim de uma colheita pedida em
|
|
439
|
+
* `POST /v1/publications/corpus/harvest-requests`.
|
|
440
|
+
*/
|
|
385
441
|
export interface PublicationHarvestCompletedPayload {
|
|
386
442
|
sliceId: string;
|
|
387
443
|
tribunalSigla: string;
|
|
@@ -389,6 +445,7 @@ export interface PublicationHarvestCompletedPayload {
|
|
|
389
445
|
seedTerm: string | null;
|
|
390
446
|
itemsIndexable: number;
|
|
391
447
|
}
|
|
448
|
+
/** O aviso de saldo de créditos baixo no período. */
|
|
392
449
|
export interface QuotaLowPayload {
|
|
393
450
|
usedCredits: number;
|
|
394
451
|
limitCredits: number;
|
|
@@ -399,19 +456,21 @@ export interface QuotaLowPayload {
|
|
|
399
456
|
periodStart: string;
|
|
400
457
|
periodEnd: string;
|
|
401
458
|
}
|
|
459
|
+
/** O aviso de fim próximo do período do plano. */
|
|
402
460
|
export interface PeriodEndingPayload {
|
|
403
461
|
planCode: string;
|
|
404
462
|
periodEnd: string;
|
|
405
463
|
daysRemaining: number;
|
|
406
464
|
}
|
|
465
|
+
/** O aviso de pagamento da assinatura do plano em atraso. */
|
|
407
466
|
export interface SubscriptionPastDuePayload {
|
|
408
467
|
status: string;
|
|
409
468
|
planCode: string;
|
|
410
469
|
currentPeriodEnd: string | null;
|
|
411
470
|
}
|
|
412
471
|
/**
|
|
413
|
-
* A entrega
|
|
414
|
-
*
|
|
472
|
+
* A entrega de teste do endpoint, enviada a pedido e assinada como um evento
|
|
473
|
+
* real.
|
|
415
474
|
*/
|
|
416
475
|
export interface WebhookTestPayload {
|
|
417
476
|
message: string;
|
|
@@ -420,51 +479,83 @@ type Typed<T extends string, P> = WebhookEventEnvelope & {
|
|
|
420
479
|
type: T;
|
|
421
480
|
payload: P;
|
|
422
481
|
};
|
|
423
|
-
/**
|
|
482
|
+
/**
|
|
483
|
+
* Os eventos do catálogo deste pacote e a entrega de teste, discriminados por
|
|
484
|
+
* `type`.
|
|
485
|
+
*/
|
|
424
486
|
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<"PROCESS_LOOKUP_COMPLETED", ProcessLookupSucceededPayload | ProcessLookupFailedPayload> | Typed<"QUOTA_LOW", QuotaLowPayload> | Typed<"PERIOD_ENDING", PeriodEndingPayload> | Typed<"SUBSCRIPTION_PAST_DUE", SubscriptionPastDuePayload> | Typed<"WEBHOOK_TEST", WebhookTestPayload>;
|
|
425
487
|
/**
|
|
426
|
-
*
|
|
427
|
-
*
|
|
428
|
-
* Tipo novo é coisa a ignorar, nunca exceção: o receptor precisa responder 2xx
|
|
429
|
-
* para o motor não entrar na curva de reentrega por uma novidade inofensiva.
|
|
488
|
+
* Um evento de tipo que este pacote ainda não descreve. Responda 2xx e
|
|
489
|
+
* ignore-o: sem o 2xx, a entrega é repetida.
|
|
430
490
|
*/
|
|
431
491
|
export type UnknownWebhookEvent = WebhookEventEnvelope & {
|
|
432
492
|
type: string;
|
|
433
493
|
payload: unknown;
|
|
434
494
|
};
|
|
495
|
+
/** Os tipos de `WebhookEvent`, inclusive a entrega de teste. */
|
|
435
496
|
export type WebhookEventType = WebhookEvent["type"];
|
|
436
497
|
/**
|
|
437
|
-
*
|
|
498
|
+
* O tipo da entrega de teste, `WEBHOOK_TEST`.
|
|
438
499
|
*
|
|
439
|
-
* Ela
|
|
440
|
-
*
|
|
441
|
-
*
|
|
442
|
-
* fora do catálogo assinável (não se pede, não se recusa, chega a qualquer
|
|
443
|
-
* endpoint).
|
|
500
|
+
* Ela chega a qualquer endpoint sem constar de `eventTypes` — o tipo nem
|
|
501
|
+
* entra nessa lista ao cadastrar um endpoint — e costuma ser o primeiro corpo
|
|
502
|
+
* que um receptor novo recebe: trate-a no seu `switch (event.type)`.
|
|
444
503
|
*/
|
|
445
504
|
export declare const WEBHOOK_TEST_EVENT_TYPE: "WEBHOOK_TEST";
|
|
446
|
-
/** Os tipos que
|
|
505
|
+
/** Os tipos de evento que um endpoint pode assinar em `eventTypes`. */
|
|
447
506
|
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", "PROCESS_LOOKUP_COMPLETED", "QUOTA_LOW", "PERIOD_ENDING", "SUBSCRIPTION_PAST_DUE"];
|
|
448
507
|
/**
|
|
449
|
-
*
|
|
450
|
-
* de
|
|
508
|
+
* Um tipo de evento que se pode assinar em `eventTypes`. A entrega de teste
|
|
509
|
+
* fica de fora: mandá-la nessa lista é recusado.
|
|
451
510
|
*/
|
|
452
511
|
export type SubscribableWebhookEventType = (typeof WEBHOOK_EVENT_TYPES)[number];
|
|
453
|
-
/**
|
|
512
|
+
/** Diz se o tipo está no catálogo de eventos que este pacote descreve. */
|
|
454
513
|
export declare function isKnownWebhookEventType(type: string): type is WebhookEventType;
|
|
455
|
-
/**
|
|
514
|
+
/** Diz se o evento é a entrega de teste. */
|
|
456
515
|
export declare function isWebhookTest(event: WebhookEvent): event is Extract<WebhookEvent, {
|
|
457
516
|
type: "WEBHOOK_TEST";
|
|
458
517
|
}>;
|
|
518
|
+
/**
|
|
519
|
+
* O status HTTP com que o seu receptor responde a uma entrega recusada.
|
|
520
|
+
*
|
|
521
|
+
* 401 para a assinatura ausente, malformada, fora da tolerância ou que não
|
|
522
|
+
* confere; 400 para JSON ou formato de evento inválido; 503 para o segredo
|
|
523
|
+
* não configurado no receptor; 500 para o corpo já convertido de JSON. Os dois
|
|
524
|
+
* últimos são defeitos do receptor (`isReceiverFault`): corrigido o defeito,
|
|
525
|
+
* as entregas repetidas passam a ser aceitas.
|
|
526
|
+
*
|
|
527
|
+
* @example
|
|
528
|
+
* ```ts
|
|
529
|
+
* if (!resultado.ok) {
|
|
530
|
+
* return reply.status(webhookRejectionStatus(resultado.reason)).send();
|
|
531
|
+
* }
|
|
532
|
+
* ```
|
|
533
|
+
*/
|
|
459
534
|
export declare function webhookRejectionStatus(reason: WebhookParseRejection): number;
|
|
460
|
-
/**
|
|
535
|
+
/**
|
|
536
|
+
* Diz se a recusa vem do próprio receptor — segredo não configurado ou corpo
|
|
537
|
+
* já convertido de JSON — e não da entrega. Nesses casos o status é 5xx.
|
|
538
|
+
*/
|
|
461
539
|
export declare function isReceiverFault(reason: WebhookParseRejection): boolean;
|
|
462
540
|
/**
|
|
463
|
-
* Confere a assinatura e devolve o evento tipado.
|
|
541
|
+
* Confere a assinatura de uma entrega e devolve o evento tipado.
|
|
542
|
+
*
|
|
543
|
+
* Depois da assinatura, confere que o corpo é um evento: JSON com `id`,
|
|
544
|
+
* `type`, `occurredAt` e `payload`. Devolve `{ ok: true, known, event }` — com
|
|
545
|
+
* `known: false` para um tipo fora do catálogo deste pacote, que você deve
|
|
546
|
+
* aceitar com 2xx e ignorar — ou `{ ok: false, reason }`, sem lançar.
|
|
464
547
|
*
|
|
465
|
-
*
|
|
466
|
-
*
|
|
467
|
-
*
|
|
548
|
+
* @example
|
|
549
|
+
* ```ts
|
|
550
|
+
* const resultado = parseWebhookEvent(rawBody, request.headers, segredo);
|
|
551
|
+
* if (!resultado.ok) {
|
|
552
|
+
* return reply.status(webhookRejectionStatus(resultado.reason)).send();
|
|
553
|
+
* }
|
|
554
|
+
* if (!resultado.known) return reply.status(200).send();
|
|
555
|
+
* if (resultado.event.type === "PUBLICATION_CREATED") {
|
|
556
|
+
* resultado.event.payload.publicationKey;
|
|
557
|
+
* }
|
|
558
|
+
* ```
|
|
468
559
|
*/
|
|
469
560
|
export declare function parseWebhookEvent(rawBody: WebhookRawBody, headers: WebhookHeaders, secret: string, options?: VerifyWebhookOptions): WebhookParseResult;
|
|
470
561
|
export {};
|