@epostak/sdk 1.0.0 → 1.1.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 +94 -396
- package/dist/client.d.ts +30 -8
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +28 -11
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/resources/account.d.ts +25 -0
- package/dist/resources/account.d.ts.map +1 -1
- package/dist/resources/account.js +25 -0
- package/dist/resources/account.js.map +1 -1
- package/dist/resources/documents.d.ts +265 -1
- package/dist/resources/documents.d.ts.map +1 -1
- package/dist/resources/documents.js +265 -1
- package/dist/resources/documents.js.map +1 -1
- package/dist/resources/extract.d.ts +58 -0
- package/dist/resources/extract.d.ts.map +1 -1
- package/dist/resources/extract.js +64 -2
- package/dist/resources/extract.js.map +1 -1
- package/dist/resources/firms.d.ts +104 -0
- package/dist/resources/firms.d.ts.map +1 -1
- package/dist/resources/firms.js +104 -0
- package/dist/resources/firms.js.map +1 -1
- package/dist/resources/peppol.d.ts +68 -1
- package/dist/resources/peppol.d.ts.map +1 -1
- package/dist/resources/peppol.js +68 -1
- package/dist/resources/peppol.js.map +1 -1
- package/dist/resources/reporting.d.ts +28 -0
- package/dist/resources/reporting.d.ts.map +1 -1
- package/dist/resources/reporting.js +28 -0
- package/dist/resources/reporting.js.map +1 -1
- package/dist/resources/webhooks.d.ts +207 -2
- package/dist/resources/webhooks.d.ts.map +1 -1
- package/dist/resources/webhooks.js +224 -3
- package/dist/resources/webhooks.js.map +1 -1
- package/dist/types.d.ts +499 -19
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/errors.d.ts +26 -4
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +26 -4
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/request.d.ts +42 -2
- package/dist/utils/request.d.ts.map +1 -1
- package/dist/utils/request.js +105 -30
- package/dist/utils/request.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
import { BaseResource, buildQuery } from "../utils/request.js";
|
|
2
|
+
/**
|
|
3
|
+
* Resource for managing received (inbound) documents in your inbox.
|
|
4
|
+
* Provides methods to list, retrieve, and acknowledge incoming invoices.
|
|
5
|
+
*/
|
|
2
6
|
export class InboxResource extends BaseResource {
|
|
7
|
+
/**
|
|
8
|
+
* List documents in your inbox with optional filtering and pagination.
|
|
9
|
+
*
|
|
10
|
+
* @param params - Optional query parameters for filtering and pagination
|
|
11
|
+
* @returns Paginated list of inbox documents
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* // Get unprocessed documents
|
|
16
|
+
* const { documents, total } = await client.documents.inbox.list({
|
|
17
|
+
* status: 'RECEIVED',
|
|
18
|
+
* limit: 50,
|
|
19
|
+
* });
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
3
22
|
list(params) {
|
|
4
23
|
return this.request("GET", `/documents/inbox${buildQuery({
|
|
5
24
|
offset: params?.offset,
|
|
@@ -8,12 +27,53 @@ export class InboxResource extends BaseResource {
|
|
|
8
27
|
since: params?.since,
|
|
9
28
|
})}`);
|
|
10
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Retrieve a single inbox document by ID, including the raw UBL XML payload.
|
|
32
|
+
*
|
|
33
|
+
* @param id - Document UUID
|
|
34
|
+
* @returns Document details with the UBL XML payload
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const { document, payload } = await client.documents.inbox.get('doc-uuid');
|
|
39
|
+
* console.log(payload); // UBL XML string
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
11
42
|
get(id) {
|
|
12
43
|
return this.request("GET", `/documents/inbox/${encodeURIComponent(id)}`);
|
|
13
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Acknowledge (mark as processed) a received inbox document.
|
|
47
|
+
* Once acknowledged, the document moves from `RECEIVED` to `ACKNOWLEDGED` status.
|
|
48
|
+
*
|
|
49
|
+
* @param id - Document UUID to acknowledge
|
|
50
|
+
* @returns Acknowledgment confirmation with timestamp
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const ack = await client.documents.inbox.acknowledge('doc-uuid');
|
|
55
|
+
* console.log(ack.acknowledgedAt); // "2026-04-11T12:00:00Z"
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
14
58
|
acknowledge(id) {
|
|
15
59
|
return this.request("POST", `/documents/inbox/${encodeURIComponent(id)}/acknowledge`);
|
|
16
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* List documents across all managed firms (integrator endpoint).
|
|
63
|
+
* Only available with integrator API keys (`sk_int_*`).
|
|
64
|
+
*
|
|
65
|
+
* @param params - Optional query parameters including firm_id filter
|
|
66
|
+
* @returns Paginated list of documents across all firms
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* // Poll for new documents across all clients
|
|
71
|
+
* const { documents } = await client.documents.inbox.listAll({
|
|
72
|
+
* since: '2026-04-01T00:00:00Z',
|
|
73
|
+
* status: 'RECEIVED',
|
|
74
|
+
* });
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
17
77
|
listAll(params) {
|
|
18
78
|
return this.request("GET", `/documents/inbox/all${buildQuery({
|
|
19
79
|
offset: params?.offset,
|
|
@@ -24,45 +84,249 @@ export class InboxResource extends BaseResource {
|
|
|
24
84
|
})}`);
|
|
25
85
|
}
|
|
26
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Resource for sending, receiving, and managing Peppol e-invoicing documents.
|
|
89
|
+
* This is the primary resource for document operations — sending invoices,
|
|
90
|
+
* checking delivery status, downloading PDFs, and responding to received invoices.
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```typescript
|
|
94
|
+
* const client = new EPostak({ apiKey: 'sk_live_xxxxx' });
|
|
95
|
+
*
|
|
96
|
+
* // Send an invoice
|
|
97
|
+
* const result = await client.documents.send({
|
|
98
|
+
* receiverPeppolId: '0245:1234567890',
|
|
99
|
+
* items: [{ description: 'Consulting', quantity: 10, unitPrice: 100, vatRate: 23 }],
|
|
100
|
+
* });
|
|
101
|
+
*
|
|
102
|
+
* // Check delivery status
|
|
103
|
+
* const status = await client.documents.status(result.documentId);
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
27
106
|
export class DocumentsResource extends BaseResource {
|
|
28
|
-
/**
|
|
107
|
+
/** Sub-resource for managing received (inbound) documents */
|
|
29
108
|
inbox;
|
|
30
109
|
constructor(config) {
|
|
31
110
|
super(config);
|
|
32
111
|
this.inbox = new InboxResource(config);
|
|
33
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* Retrieve a single document by ID.
|
|
115
|
+
*
|
|
116
|
+
* @param id - Document UUID
|
|
117
|
+
* @returns Full document object including parties, lines, and totals
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```typescript
|
|
121
|
+
* const doc = await client.documents.get('doc-uuid');
|
|
122
|
+
* console.log(doc.totals.withVat); // 1230.00
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
34
125
|
get(id) {
|
|
35
126
|
return this.request("GET", `/documents/${encodeURIComponent(id)}`);
|
|
36
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Update a draft document. Only documents that have not been sent yet can be updated.
|
|
130
|
+
* Pass `null` to clear optional fields, or omit them to leave unchanged.
|
|
131
|
+
*
|
|
132
|
+
* @param id - Document UUID of the draft to update
|
|
133
|
+
* @param body - Fields to update
|
|
134
|
+
* @returns The updated document
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* ```typescript
|
|
138
|
+
* const updated = await client.documents.update('doc-uuid', {
|
|
139
|
+
* dueDate: '2026-05-15',
|
|
140
|
+
* note: 'Updated payment terms',
|
|
141
|
+
* });
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
37
144
|
update(id, body) {
|
|
38
145
|
return this.request("PATCH", `/documents/${encodeURIComponent(id)}`, body);
|
|
39
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* Send an invoice via the Peppol network. Accepts either structured JSON
|
|
149
|
+
* (the API generates UBL XML) or pre-built UBL XML.
|
|
150
|
+
*
|
|
151
|
+
* @param body - Invoice data as JSON fields or raw UBL XML
|
|
152
|
+
* @returns Document ID, Peppol message ID, and status confirmation
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* // Send using JSON (API generates UBL)
|
|
157
|
+
* const result = await client.documents.send({
|
|
158
|
+
* receiverPeppolId: '0245:1234567890',
|
|
159
|
+
* invoiceNumber: 'FV-2026-042',
|
|
160
|
+
* items: [
|
|
161
|
+
* { description: 'Web development', quantity: 40, unit: 'HUR', unitPrice: 80, vatRate: 23 },
|
|
162
|
+
* ],
|
|
163
|
+
* });
|
|
164
|
+
*
|
|
165
|
+
* // Send using raw UBL XML
|
|
166
|
+
* const result = await client.documents.send({
|
|
167
|
+
* receiverPeppolId: '0245:1234567890',
|
|
168
|
+
* xml: '<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">...</Invoice>',
|
|
169
|
+
* });
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
40
172
|
send(body) {
|
|
41
173
|
return this.request("POST", "/documents/send", body);
|
|
42
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Get the current delivery status and full status history of a document.
|
|
177
|
+
* Use this to track whether a sent invoice was delivered, acknowledged, or failed.
|
|
178
|
+
*
|
|
179
|
+
* @param id - Document UUID
|
|
180
|
+
* @returns Status details including history timeline and delivery timestamps
|
|
181
|
+
*
|
|
182
|
+
* @example
|
|
183
|
+
* ```typescript
|
|
184
|
+
* const status = await client.documents.status('doc-uuid');
|
|
185
|
+
* console.log(status.status); // "DELIVERED"
|
|
186
|
+
* console.log(status.deliveredAt); // "2026-04-11T12:30:00Z"
|
|
187
|
+
* ```
|
|
188
|
+
*/
|
|
43
189
|
status(id) {
|
|
44
190
|
return this.request("GET", `/documents/${encodeURIComponent(id)}/status`);
|
|
45
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Retrieve delivery evidence for a sent document, including AS4 receipts,
|
|
194
|
+
* Message Level Response (MLR), and Invoice Response from the buyer.
|
|
195
|
+
*
|
|
196
|
+
* @param id - Document UUID
|
|
197
|
+
* @returns Evidence records (AS4 receipt, MLR, Invoice Response)
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```typescript
|
|
201
|
+
* const evidence = await client.documents.evidence('doc-uuid');
|
|
202
|
+
* if (evidence.invoiceResponse?.status === 'AP') {
|
|
203
|
+
* console.log('Invoice was accepted by the buyer');
|
|
204
|
+
* }
|
|
205
|
+
* ```
|
|
206
|
+
*/
|
|
46
207
|
evidence(id) {
|
|
47
208
|
return this.request("GET", `/documents/${encodeURIComponent(id)}/evidence`);
|
|
48
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* Download the PDF visualization of a document.
|
|
212
|
+
*
|
|
213
|
+
* @param id - Document UUID
|
|
214
|
+
* @returns PDF file content as a Buffer
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* ```typescript
|
|
218
|
+
* import { writeFileSync } from 'fs';
|
|
219
|
+
*
|
|
220
|
+
* const pdfBuffer = await client.documents.pdf('doc-uuid');
|
|
221
|
+
* writeFileSync('invoice.pdf', pdfBuffer);
|
|
222
|
+
* ```
|
|
223
|
+
*/
|
|
49
224
|
async pdf(id) {
|
|
50
225
|
const res = await this.request("GET", `/documents/${encodeURIComponent(id)}/pdf`, undefined, { rawResponse: true });
|
|
51
226
|
return Buffer.from(await res.arrayBuffer());
|
|
52
227
|
}
|
|
228
|
+
/**
|
|
229
|
+
* Download the UBL XML of a document.
|
|
230
|
+
*
|
|
231
|
+
* @param id - Document UUID
|
|
232
|
+
* @returns UBL 2.1 XML content as a string
|
|
233
|
+
*
|
|
234
|
+
* @example
|
|
235
|
+
* ```typescript
|
|
236
|
+
* const xml = await client.documents.ubl('doc-uuid');
|
|
237
|
+
* console.log(xml); // "<?xml version="1.0"?><Invoice ...>...</Invoice>"
|
|
238
|
+
* ```
|
|
239
|
+
*/
|
|
53
240
|
async ubl(id) {
|
|
54
241
|
const res = await this.request("GET", `/documents/${encodeURIComponent(id)}/ubl`, undefined, { rawResponse: true });
|
|
55
242
|
return res.text();
|
|
56
243
|
}
|
|
244
|
+
/**
|
|
245
|
+
* Send an Invoice Response (accept, reject, or query) for a received document.
|
|
246
|
+
* This sends a Peppol Invoice Response message back to the supplier.
|
|
247
|
+
*
|
|
248
|
+
* @param id - Document UUID of the received invoice
|
|
249
|
+
* @param body - Response status and optional note
|
|
250
|
+
* @returns Confirmation with the response status and timestamp
|
|
251
|
+
*
|
|
252
|
+
* @example
|
|
253
|
+
* ```typescript
|
|
254
|
+
* // Accept an invoice
|
|
255
|
+
* await client.documents.respond('doc-uuid', { status: 'AP' });
|
|
256
|
+
*
|
|
257
|
+
* // Reject with a reason
|
|
258
|
+
* await client.documents.respond('doc-uuid', {
|
|
259
|
+
* status: 'RE',
|
|
260
|
+
* note: 'Incorrect VAT rate applied',
|
|
261
|
+
* });
|
|
262
|
+
* ```
|
|
263
|
+
*/
|
|
57
264
|
respond(id, body) {
|
|
58
265
|
return this.request("POST", `/documents/${encodeURIComponent(id)}/respond`, body);
|
|
59
266
|
}
|
|
267
|
+
/**
|
|
268
|
+
* Validate a document without sending it. Checks Peppol BIS 3.0 compliance
|
|
269
|
+
* and returns warnings. For JSON input, also returns the generated UBL XML preview.
|
|
270
|
+
*
|
|
271
|
+
* @param body - Document data to validate (same format as `send()`)
|
|
272
|
+
* @returns Validation result with warnings and optional UBL preview
|
|
273
|
+
*
|
|
274
|
+
* @example
|
|
275
|
+
* ```typescript
|
|
276
|
+
* const result = await client.documents.validate({
|
|
277
|
+
* receiverPeppolId: '0245:1234567890',
|
|
278
|
+
* items: [{ description: 'Test', quantity: 1, unitPrice: 100, vatRate: 23 }],
|
|
279
|
+
* });
|
|
280
|
+
* if (!result.valid) {
|
|
281
|
+
* console.error('Validation failed:', result.warnings);
|
|
282
|
+
* }
|
|
283
|
+
* ```
|
|
284
|
+
*/
|
|
60
285
|
validate(body) {
|
|
61
286
|
return this.request("POST", "/documents/validate", body);
|
|
62
287
|
}
|
|
288
|
+
/**
|
|
289
|
+
* Check if a Peppol receiver is registered and supports the target document type
|
|
290
|
+
* before sending. Use this to avoid sending to non-existent participants.
|
|
291
|
+
*
|
|
292
|
+
* @param body - Receiver Peppol ID and optional document type to check
|
|
293
|
+
* @returns Preflight result with registration and capability info
|
|
294
|
+
*
|
|
295
|
+
* @example
|
|
296
|
+
* ```typescript
|
|
297
|
+
* const check = await client.documents.preflight({
|
|
298
|
+
* receiverPeppolId: '0245:1234567890',
|
|
299
|
+
* });
|
|
300
|
+
* if (!check.registered) {
|
|
301
|
+
* console.error('Receiver is not on the Peppol network');
|
|
302
|
+
* }
|
|
303
|
+
* ```
|
|
304
|
+
*/
|
|
63
305
|
preflight(body) {
|
|
64
306
|
return this.request("POST", "/documents/preflight", body);
|
|
65
307
|
}
|
|
308
|
+
/**
|
|
309
|
+
* Convert between JSON and UBL XML formats without sending.
|
|
310
|
+
* Useful for previewing the UBL output or parsing received XML into structured data.
|
|
311
|
+
*
|
|
312
|
+
* @param body - Conversion request with direction and input data
|
|
313
|
+
* @returns Converted output (UBL XML string or parsed JSON object)
|
|
314
|
+
*
|
|
315
|
+
* @example
|
|
316
|
+
* ```typescript
|
|
317
|
+
* // JSON to UBL
|
|
318
|
+
* const { result: ublXml } = await client.documents.convert({
|
|
319
|
+
* direction: 'json_to_ubl',
|
|
320
|
+
* data: { invoiceNumber: 'FV-001', items: [...] },
|
|
321
|
+
* });
|
|
322
|
+
*
|
|
323
|
+
* // UBL to JSON
|
|
324
|
+
* const { result: parsed } = await client.documents.convert({
|
|
325
|
+
* direction: 'ubl_to_json',
|
|
326
|
+
* xml: '<Invoice>...</Invoice>',
|
|
327
|
+
* });
|
|
328
|
+
* ```
|
|
329
|
+
*/
|
|
66
330
|
convert(body) {
|
|
67
331
|
return this.request("POST", "/documents/convert", body);
|
|
68
332
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documents.js","sourceRoot":"","sources":["../../src/resources/documents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAwB/D,MAAM,OAAO,aAAc,SAAQ,YAAY;IAC7C,IAAI,CAAC,MAAwB;QAC3B,OAAO,IAAI,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"documents.js","sourceRoot":"","sources":["../../src/resources/documents.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,65 @@
|
|
|
1
1
|
import { BaseResource } from "../utils/request.js";
|
|
2
2
|
import type { ExtractResult, BatchExtractResult } from "../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Resource for AI-powered data extraction from PDF invoices and scanned images.
|
|
5
|
+
* Extracts structured invoice data (parties, line items, totals) and generates
|
|
6
|
+
* UBL 2.1 XML that can be sent via Peppol.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { readFileSync } from 'fs';
|
|
11
|
+
*
|
|
12
|
+
* const pdf = readFileSync('invoice.pdf');
|
|
13
|
+
* const result = await client.extract.single(pdf, 'application/pdf', 'invoice.pdf');
|
|
14
|
+
* console.log(result.confidence); // 0.95
|
|
15
|
+
* console.log(result.ubl_xml); // Generated UBL XML
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
3
18
|
export declare class ExtractResource extends BaseResource {
|
|
19
|
+
/**
|
|
20
|
+
* Extract structured data from a single PDF or image file.
|
|
21
|
+
* Uses AI-powered OCR to identify invoice fields, line items, parties, and totals,
|
|
22
|
+
* then generates UBL 2.1 XML from the extracted data.
|
|
23
|
+
*
|
|
24
|
+
* @param file - File content as a Buffer or Blob
|
|
25
|
+
* @param mimeType - MIME type of the file (e.g. `"application/pdf"`, `"image/png"`)
|
|
26
|
+
* @param fileName - Original file name for reference (defaults to `"document"`)
|
|
27
|
+
* @returns Extracted data, generated UBL XML, and confidence score
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* import { readFileSync } from 'fs';
|
|
32
|
+
*
|
|
33
|
+
* const pdf = readFileSync('invoice.pdf');
|
|
34
|
+
* const result = await client.extract.single(pdf, 'application/pdf', 'invoice.pdf');
|
|
35
|
+
* if (result.confidence > 0.8) {
|
|
36
|
+
* // Use the generated UBL to send via Peppol
|
|
37
|
+
* await client.documents.send({
|
|
38
|
+
* receiverPeppolId: '0245:1234567890',
|
|
39
|
+
* xml: result.ubl_xml,
|
|
40
|
+
* });
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
4
44
|
single(file: Buffer | Blob, mimeType: string, fileName?: string): Promise<ExtractResult>;
|
|
45
|
+
/**
|
|
46
|
+
* Extract structured data from multiple PDF or image files in a single request.
|
|
47
|
+
* Each file is processed independently — individual failures don't affect others.
|
|
48
|
+
*
|
|
49
|
+
* @param files - Array of files with their MIME types and optional file names
|
|
50
|
+
* @returns Batch result with individual outcomes per file and success/failure counts
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* import { readFileSync } from 'fs';
|
|
55
|
+
*
|
|
56
|
+
* const result = await client.extract.batch([
|
|
57
|
+
* { file: readFileSync('invoice1.pdf'), mimeType: 'application/pdf', fileName: 'invoice1.pdf' },
|
|
58
|
+
* { file: readFileSync('invoice2.pdf'), mimeType: 'application/pdf', fileName: 'invoice2.pdf' },
|
|
59
|
+
* ]);
|
|
60
|
+
* console.log(`${result.successful}/${result.total} extracted successfully`);
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
5
63
|
batch(files: Array<{
|
|
6
64
|
file: Buffer | Blob;
|
|
7
65
|
mimeType: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/resources/extract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAErE,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,MAAM,
|
|
1
|
+
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/resources/extract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAErE;;;;;;;;;;;;;;GAcG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,MAAM,CACJ,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,SAAa,GACpB,OAAO,CAAC,aAAa,CAAC;IAUzB;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CACH,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GACzE,OAAO,CAAC,kBAAkB,CAAC;CAW/B"}
|
|
@@ -1,15 +1,77 @@
|
|
|
1
1
|
import { BaseResource } from "../utils/request.js";
|
|
2
|
+
/**
|
|
3
|
+
* Resource for AI-powered data extraction from PDF invoices and scanned images.
|
|
4
|
+
* Extracts structured invoice data (parties, line items, totals) and generates
|
|
5
|
+
* UBL 2.1 XML that can be sent via Peppol.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { readFileSync } from 'fs';
|
|
10
|
+
*
|
|
11
|
+
* const pdf = readFileSync('invoice.pdf');
|
|
12
|
+
* const result = await client.extract.single(pdf, 'application/pdf', 'invoice.pdf');
|
|
13
|
+
* console.log(result.confidence); // 0.95
|
|
14
|
+
* console.log(result.ubl_xml); // Generated UBL XML
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
2
17
|
export class ExtractResource extends BaseResource {
|
|
18
|
+
/**
|
|
19
|
+
* Extract structured data from a single PDF or image file.
|
|
20
|
+
* Uses AI-powered OCR to identify invoice fields, line items, parties, and totals,
|
|
21
|
+
* then generates UBL 2.1 XML from the extracted data.
|
|
22
|
+
*
|
|
23
|
+
* @param file - File content as a Buffer or Blob
|
|
24
|
+
* @param mimeType - MIME type of the file (e.g. `"application/pdf"`, `"image/png"`)
|
|
25
|
+
* @param fileName - Original file name for reference (defaults to `"document"`)
|
|
26
|
+
* @returns Extracted data, generated UBL XML, and confidence score
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* import { readFileSync } from 'fs';
|
|
31
|
+
*
|
|
32
|
+
* const pdf = readFileSync('invoice.pdf');
|
|
33
|
+
* const result = await client.extract.single(pdf, 'application/pdf', 'invoice.pdf');
|
|
34
|
+
* if (result.confidence > 0.8) {
|
|
35
|
+
* // Use the generated UBL to send via Peppol
|
|
36
|
+
* await client.documents.send({
|
|
37
|
+
* receiverPeppolId: '0245:1234567890',
|
|
38
|
+
* xml: result.ubl_xml,
|
|
39
|
+
* });
|
|
40
|
+
* }
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
3
43
|
single(file, mimeType, fileName = "document") {
|
|
4
44
|
const form = new FormData();
|
|
5
|
-
const blob = file instanceof Blob
|
|
45
|
+
const blob = file instanceof Blob
|
|
46
|
+
? file
|
|
47
|
+
: new Blob([new Uint8Array(file)], { type: mimeType });
|
|
6
48
|
form.append("file", blob, fileName);
|
|
7
49
|
return this.request("POST", "/extract", form);
|
|
8
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Extract structured data from multiple PDF or image files in a single request.
|
|
53
|
+
* Each file is processed independently — individual failures don't affect others.
|
|
54
|
+
*
|
|
55
|
+
* @param files - Array of files with their MIME types and optional file names
|
|
56
|
+
* @returns Batch result with individual outcomes per file and success/failure counts
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* import { readFileSync } from 'fs';
|
|
61
|
+
*
|
|
62
|
+
* const result = await client.extract.batch([
|
|
63
|
+
* { file: readFileSync('invoice1.pdf'), mimeType: 'application/pdf', fileName: 'invoice1.pdf' },
|
|
64
|
+
* { file: readFileSync('invoice2.pdf'), mimeType: 'application/pdf', fileName: 'invoice2.pdf' },
|
|
65
|
+
* ]);
|
|
66
|
+
* console.log(`${result.successful}/${result.total} extracted successfully`);
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
9
69
|
batch(files) {
|
|
10
70
|
const form = new FormData();
|
|
11
71
|
for (const { file, mimeType, fileName } of files) {
|
|
12
|
-
const blob = file instanceof Blob
|
|
72
|
+
const blob = file instanceof Blob
|
|
73
|
+
? file
|
|
74
|
+
: new Blob([new Uint8Array(file)], { type: mimeType });
|
|
13
75
|
form.append("files", blob, fileName ?? "document");
|
|
14
76
|
}
|
|
15
77
|
return this.request("POST", "/extract/batch", form);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/resources/extract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC/C,MAAM,
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/resources/extract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC/C;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,MAAM,CACJ,IAAmB,EACnB,QAAgB,EAChB,QAAQ,GAAG,UAAU;QAErB,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,GACR,IAAI,YAAY,IAAI;YAClB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CACH,KAA0E;QAE1E,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,KAAK,EAAE,CAAC;YACjD,MAAM,IAAI,GACR,IAAI,YAAY,IAAI;gBAClB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,IAAI,UAAU,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;CACF"}
|
|
@@ -1,14 +1,118 @@
|
|
|
1
1
|
import { BaseResource } from "../utils/request.js";
|
|
2
2
|
import type { FirmSummary, FirmDetail, FirmDocumentsParams, InboxListResponse, PeppolIdentifierResponse, AssignFirmRequest, AssignFirmResponse, BatchAssignFirmsRequest, BatchAssignFirmsResponse } from "../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Resource for managing firms (companies) associated with your account.
|
|
5
|
+
* Integrators use this to assign client firms, view their documents,
|
|
6
|
+
* and register Peppol identifiers.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* // List all managed firms
|
|
11
|
+
* const firms = await client.firms.list();
|
|
12
|
+
*
|
|
13
|
+
* // Assign a new firm by ICO
|
|
14
|
+
* const { firm } = await client.firms.assign({ ico: '12345678' });
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
3
17
|
export declare class FirmsResource extends BaseResource {
|
|
18
|
+
/**
|
|
19
|
+
* List all firms associated with the current account.
|
|
20
|
+
* For integrator keys, returns all assigned client firms.
|
|
21
|
+
*
|
|
22
|
+
* @returns Array of firm summaries
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const firms = await client.firms.list();
|
|
27
|
+
* firms.forEach(f => console.log(f.name, f.peppolStatus));
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
4
30
|
list(): Promise<FirmSummary[]>;
|
|
31
|
+
/**
|
|
32
|
+
* Get detailed information about a specific firm, including tax IDs,
|
|
33
|
+
* address, and all registered Peppol identifiers.
|
|
34
|
+
*
|
|
35
|
+
* @param id - Firm UUID
|
|
36
|
+
* @returns Detailed firm information
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const firm = await client.firms.get('firm-uuid');
|
|
41
|
+
* console.log(firm.icDph); // "SK2020123456"
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
5
44
|
get(id: string): Promise<FirmDetail>;
|
|
45
|
+
/**
|
|
46
|
+
* List documents belonging to a specific firm.
|
|
47
|
+
* Useful for integrators to view a client's document history.
|
|
48
|
+
*
|
|
49
|
+
* @param id - Firm UUID
|
|
50
|
+
* @param params - Optional pagination and direction filter
|
|
51
|
+
* @returns Paginated list of the firm's documents
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* const { documents } = await client.firms.documents('firm-uuid', {
|
|
56
|
+
* direction: 'inbound',
|
|
57
|
+
* limit: 100,
|
|
58
|
+
* });
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
6
61
|
documents(id: string, params?: FirmDocumentsParams): Promise<InboxListResponse>;
|
|
62
|
+
/**
|
|
63
|
+
* Register a new Peppol identifier for a firm. This enables the firm
|
|
64
|
+
* to send and receive documents on the Peppol network under this identifier.
|
|
65
|
+
*
|
|
66
|
+
* @param id - Firm UUID
|
|
67
|
+
* @param peppolId - Peppol identifier with scheme and value
|
|
68
|
+
* @returns The registered identifier details
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* const result = await client.firms.registerPeppolId('firm-uuid', {
|
|
73
|
+
* scheme: '0245',
|
|
74
|
+
* identifier: '1234567890',
|
|
75
|
+
* });
|
|
76
|
+
* console.log(result.peppolId); // "0245:1234567890"
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
7
79
|
registerPeppolId(id: string, peppolId: {
|
|
8
80
|
scheme: string;
|
|
9
81
|
identifier: string;
|
|
10
82
|
}): Promise<PeppolIdentifierResponse>;
|
|
83
|
+
/**
|
|
84
|
+
* Assign a firm to the integrator account by its Slovak ICO.
|
|
85
|
+
* Once assigned, you can send/receive documents on behalf of this firm.
|
|
86
|
+
*
|
|
87
|
+
* @param body - Request containing the firm's ICO (8-digit Slovak business registration number)
|
|
88
|
+
* @returns The assigned firm details and status
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* const { firm } = await client.firms.assign({ ico: '12345678' });
|
|
93
|
+
* console.log(firm.id); // Use this UUID for subsequent operations
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
11
96
|
assign(body: AssignFirmRequest): Promise<AssignFirmResponse>;
|
|
97
|
+
/**
|
|
98
|
+
* Assign multiple firms at once by their Slovak ICOs.
|
|
99
|
+
* Each ICO is processed independently — individual failures don't affect others.
|
|
100
|
+
* Maximum 50 ICOs per request.
|
|
101
|
+
*
|
|
102
|
+
* @param body - Request containing an array of ICOs
|
|
103
|
+
* @returns Individual results for each ICO (success or error)
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* const { results } = await client.firms.assignBatch({
|
|
108
|
+
* icos: ['12345678', '87654321', '11223344'],
|
|
109
|
+
* });
|
|
110
|
+
* results.forEach(r => {
|
|
111
|
+
* if (r.error) console.error(`${r.ico}: ${r.message}`);
|
|
112
|
+
* else console.log(`${r.ico}: ${r.status}`);
|
|
113
|
+
* });
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
12
116
|
assignBatch(body: BatchAssignFirmsRequest): Promise<BatchAssignFirmsResponse>;
|
|
13
117
|
}
|
|
14
118
|
//# sourceMappingURL=firms.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firms.d.ts","sourceRoot":"","sources":["../../src/resources/firms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAc,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EAEV,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,aAAa,CAAC;AAErB,qBAAa,aAAc,SAAQ,YAAY;
|
|
1
|
+
{"version":3,"file":"firms.d.ts","sourceRoot":"","sources":["../../src/resources/firms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAc,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EAEV,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;GAaG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC7C;;;;;;;;;;;OAWG;IACG,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAKpC;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAIpC;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CACP,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,iBAAiB,CAAC;IAW7B;;;;;;;;;;;;;;;;OAgBG;IACH,gBAAgB,CACd,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAC/C,OAAO,CAAC,wBAAwB,CAAC;IAQpC;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAI5D;;;;;;;;;;;;;;;;;;OAkBG;IACH,WAAW,CACT,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,wBAAwB,CAAC;CAGrC"}
|