klaaro 0.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/LICENSE +21 -0
- package/README.md +222 -0
- package/dist/client.d.ts +69 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +186 -0
- package/dist/client.js.map +1 -0
- package/dist/errors.d.ts +14 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +15 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +299 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +16 -0
- package/dist/types.js.map +1 -0
- package/package.json +40 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Klaaro
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
# klaaro
|
|
2
|
+
|
|
3
|
+
Official TypeScript SDK for the [Klaaro](https://klaaro.ai) API — documents in, structured data out.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install klaaro
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Requires Node.js 18+ (uses native `fetch`). No runtime dependencies.
|
|
12
|
+
|
|
13
|
+
## Quick start
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
import { KlaaroClient } from "klaaro";
|
|
17
|
+
|
|
18
|
+
const klaaro = new KlaaroClient({ apiKey: "sk_your_key_here" });
|
|
19
|
+
|
|
20
|
+
// 1. List datasets
|
|
21
|
+
const { data: datasets } = await klaaro.listDatasets();
|
|
22
|
+
console.log(datasets[0].name); // "Invoices 2026"
|
|
23
|
+
|
|
24
|
+
// 2. Upload a document (file)
|
|
25
|
+
import { readFileSync } from "fs";
|
|
26
|
+
const file = new Blob([readFileSync("invoice.pdf")], { type: "application/pdf" });
|
|
27
|
+
const doc = await klaaro.uploadDocument({
|
|
28
|
+
datasetId: datasets[0].id,
|
|
29
|
+
file,
|
|
30
|
+
filename: "invoice.pdf",
|
|
31
|
+
});
|
|
32
|
+
console.log(doc.id, doc.status); // "b6d2a7f6-..." "queued"
|
|
33
|
+
|
|
34
|
+
// 3. Upload from URL
|
|
35
|
+
const doc2 = await klaaro.uploadDocument({
|
|
36
|
+
datasetId: datasets[0].id,
|
|
37
|
+
url: "https://example.com/invoice.pdf",
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// 4. Poll until complete
|
|
41
|
+
let document = await klaaro.getDocument(doc.id);
|
|
42
|
+
while (document.status === "queued" || document.status === "processing") {
|
|
43
|
+
await new Promise((r) => setTimeout(r, 3000));
|
|
44
|
+
document = await klaaro.getDocument(doc.id);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// 5. Read extracted records (clean values)
|
|
48
|
+
const { records } = await klaaro.getDocumentRecords(document.id);
|
|
49
|
+
console.log(records[0].data); // { vendor_name: "Acme Corp", total: 1234.56, ... }
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Constructor
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
const klaaro = new KlaaroClient({
|
|
56
|
+
apiKey: "sk_...", // required
|
|
57
|
+
baseUrl: "https://dev.klaaro.ai/api/v1", // optional, defaults to prod
|
|
58
|
+
});
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Get your API key from **Team → API keys** in the Klaaro dashboard.
|
|
62
|
+
|
|
63
|
+
## Authentication
|
|
64
|
+
|
|
65
|
+
All requests send `Authorization: Bearer <apiKey>`. Three scopes control access:
|
|
66
|
+
|
|
67
|
+
| Scope | Unlocks |
|
|
68
|
+
| ------- | --------------------------- |
|
|
69
|
+
| `read` | List and get endpoints |
|
|
70
|
+
| `write` | Upload, create, delete |
|
|
71
|
+
| `export`| Export endpoints |
|
|
72
|
+
|
|
73
|
+
## Datasets
|
|
74
|
+
|
|
75
|
+
```ts
|
|
76
|
+
// List (paginated)
|
|
77
|
+
const page = await klaaro.listDatasets({ limit: 20 });
|
|
78
|
+
|
|
79
|
+
// Get one
|
|
80
|
+
const dataset = await klaaro.getDataset("a1b2c3d4-...");
|
|
81
|
+
|
|
82
|
+
// Delete
|
|
83
|
+
await klaaro.deleteDataset("a1b2c3d4-...");
|
|
84
|
+
|
|
85
|
+
// Records (clean extracted values)
|
|
86
|
+
const records = await klaaro.listDatasetRecords("a1b2c3d4-...", {
|
|
87
|
+
class: "invoice",
|
|
88
|
+
approval: "approved",
|
|
89
|
+
limit: 100,
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
// Records with full field metadata (review, validation, evidence)
|
|
93
|
+
const flat = await klaaro.listDatasetRecordsFlat("a1b2c3d4-...");
|
|
94
|
+
|
|
95
|
+
// Classes / schemas
|
|
96
|
+
const classes = await klaaro.listDatasetClasses("a1b2c3d4-...");
|
|
97
|
+
const invoiceClass = await klaaro.getDatasetClass("a1b2c3d4-...", "invoice");
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Documents
|
|
101
|
+
|
|
102
|
+
```ts
|
|
103
|
+
// List with filters
|
|
104
|
+
const docs = await klaaro.listDocuments({
|
|
105
|
+
datasetId: "a1b2c3d4-...",
|
|
106
|
+
status: "completed",
|
|
107
|
+
limit: 50,
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
// Upload (idempotent)
|
|
111
|
+
const doc = await klaaro.uploadDocument({
|
|
112
|
+
datasetId: "a1b2c3d4-...",
|
|
113
|
+
file: myBlob,
|
|
114
|
+
filename: "receipt.pdf",
|
|
115
|
+
idempotencyKey: "my-unique-key-001",
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
// Get / delete
|
|
119
|
+
const d = await klaaro.getDocument("b6d2a7f6-...");
|
|
120
|
+
await klaaro.deleteDocument("b6d2a7f6-...");
|
|
121
|
+
|
|
122
|
+
// Records for a specific document
|
|
123
|
+
const { records } = await klaaro.getDocumentRecords("b6d2a7f6-...");
|
|
124
|
+
const { records: flat } = await klaaro.getDocumentRecordsFlat("b6d2a7f6-...", {
|
|
125
|
+
includeUnapproved: true,
|
|
126
|
+
});
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Records
|
|
130
|
+
|
|
131
|
+
```ts
|
|
132
|
+
const record = await klaaro.getRecord("2c0c2e50-..."); // clean values
|
|
133
|
+
const flat = await klaaro.getRecordFlat("2c0c2e50-..."); // flat FieldView map
|
|
134
|
+
const nested = await klaaro.getRecordNested("2c0c2e50-..."); // nested FieldView tree
|
|
135
|
+
|
|
136
|
+
const events = await klaaro.listRecordFieldEvents("2c0c2e50-...", { fieldPath: "total" });
|
|
137
|
+
const comments = await klaaro.getRecordComments("2c0c2e50-...");
|
|
138
|
+
const approvals = await klaaro.getRecordApprovals("2c0c2e50-...");
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Webhooks
|
|
142
|
+
|
|
143
|
+
```ts
|
|
144
|
+
const hook = await klaaro.createWebhook({
|
|
145
|
+
datasetId: "a1b2c3d4-...",
|
|
146
|
+
url: "https://my.app/hooks/klaaro",
|
|
147
|
+
events: ["document.extraction_completed", "document.failed"],
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
await klaaro.updateWebhook(hook.id, {
|
|
151
|
+
datasetId: "a1b2c3d4-...",
|
|
152
|
+
events: ["document.extraction_completed"],
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
const { secret } = await klaaro.rotateWebhookSecret(hook.id, { datasetId: "a1b2c3d4-..." });
|
|
156
|
+
|
|
157
|
+
await klaaro.deleteWebhook(hook.id, { datasetId: "a1b2c3d4-..." });
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Webhook signature verification
|
|
161
|
+
|
|
162
|
+
```ts
|
|
163
|
+
import { createHmac } from "crypto";
|
|
164
|
+
|
|
165
|
+
function verifyWebhook(rawBody: string, sigHeader: string, secret: string): boolean {
|
|
166
|
+
const parts = Object.fromEntries(sigHeader.split(",").map((p) => p.split("=")));
|
|
167
|
+
const timestamp = parts["t"];
|
|
168
|
+
const signature = parts["v1"];
|
|
169
|
+
if (!timestamp || !signature) return false;
|
|
170
|
+
if (Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) return false;
|
|
171
|
+
const expected = createHmac("sha256", secret)
|
|
172
|
+
.update(`${timestamp}.${rawBody}`)
|
|
173
|
+
.digest("hex");
|
|
174
|
+
return expected === signature;
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Pagination
|
|
179
|
+
|
|
180
|
+
All list methods accept `{ limit, cursor }` and return `{ data, meta: { nextCursor, hasMore } }`.
|
|
181
|
+
|
|
182
|
+
```ts
|
|
183
|
+
let cursor: string | undefined;
|
|
184
|
+
do {
|
|
185
|
+
const page = await klaaro.listDatasetRecords("a1b2c3d4-...", { cursor, limit: 200 });
|
|
186
|
+
for (const record of page.data) {
|
|
187
|
+
// process
|
|
188
|
+
}
|
|
189
|
+
cursor = page.meta.hasMore ? (page.meta.nextCursor ?? undefined) : undefined;
|
|
190
|
+
} while (cursor);
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Error handling
|
|
194
|
+
|
|
195
|
+
```ts
|
|
196
|
+
import { KlaaroApiError } from "klaaro";
|
|
197
|
+
|
|
198
|
+
try {
|
|
199
|
+
await klaaro.getDocument("missing-id");
|
|
200
|
+
} catch (err) {
|
|
201
|
+
if (err instanceof KlaaroApiError) {
|
|
202
|
+
console.error(err.status, err.code, err.message);
|
|
203
|
+
// 404 "document_not_found" "Document not found"
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
| Code | Status | Meaning |
|
|
209
|
+
| --------------------- | ------ | -------------------------------- |
|
|
210
|
+
| `not_authenticated` | 401 | Missing / invalid API key |
|
|
211
|
+
| `api_key_required` | 401 | Session auth rejected on v1 |
|
|
212
|
+
| `insufficient_scope` | 403 | Key missing required scope |
|
|
213
|
+
| `dataset_not_found` | 404 | Dataset not found or inaccessible|
|
|
214
|
+
| `document_not_found` | 404 | Document not found |
|
|
215
|
+
| `record_not_found` | 404 | Record not found |
|
|
216
|
+
| `validation_error` | 400 | Invalid request parameter |
|
|
217
|
+
| `rate_limited` | 429 | Too many requests |
|
|
218
|
+
| `internal_error` | 500 | Unexpected server error |
|
|
219
|
+
|
|
220
|
+
## License
|
|
221
|
+
|
|
222
|
+
MIT
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { ApprovalEvent, ApprovalQueueItem, Class, CommentView, CreateWebhookParams, Dataset, Document, DocumentRecordsParams, FieldEvent, ListApprovalQueueParams, ListDocumentsParams, ListFieldEventsParams, ListParams, ListRecordsParams, ListResponse, FlatRecord, RecordClean, RecordNested, UpdateWebhookParams, UploadDocumentParams, Webhook, WebhookScopeParams } from "./types.js";
|
|
2
|
+
export declare const DEFAULT_BASE_URL = "https://klaaro.ai/api/v1";
|
|
3
|
+
export interface KlaaroClientOptions {
|
|
4
|
+
apiKey: string;
|
|
5
|
+
/** Override the base URL (e.g. for dev: "https://dev.klaaro.ai/api/v1"). */
|
|
6
|
+
baseUrl?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class KlaaroClient {
|
|
9
|
+
private readonly apiKey;
|
|
10
|
+
private readonly baseUrl;
|
|
11
|
+
constructor(options: KlaaroClientOptions);
|
|
12
|
+
private request;
|
|
13
|
+
listDatasets(params?: ListParams): Promise<ListResponse<Dataset>>;
|
|
14
|
+
getDataset(id: string): Promise<Dataset>;
|
|
15
|
+
deleteDataset(id: string): Promise<void>;
|
|
16
|
+
listDatasetRecords(id: string, params?: ListRecordsParams): Promise<ListResponse<RecordClean>>;
|
|
17
|
+
listDatasetRecordsFlat(id: string, params?: ListRecordsParams): Promise<ListResponse<FlatRecord>>;
|
|
18
|
+
listDatasetRecordsNested(id: string, params?: ListRecordsParams): Promise<ListResponse<RecordNested>>;
|
|
19
|
+
listDatasetClasses(id: string): Promise<ListResponse<Class>>;
|
|
20
|
+
getDatasetClass(id: string, classSlug: string): Promise<Class>;
|
|
21
|
+
listApprovalQueue(id: string, params?: ListApprovalQueueParams): Promise<ListResponse<ApprovalQueueItem>>;
|
|
22
|
+
listDocuments(params?: ListDocumentsParams): Promise<ListResponse<Document>>;
|
|
23
|
+
/**
|
|
24
|
+
* Upload a document by file (multipart) or URL (JSON).
|
|
25
|
+
* Provide either `file` (+ optional `filename`) or `url`, not both.
|
|
26
|
+
*/
|
|
27
|
+
uploadDocument(params: UploadDocumentParams): Promise<Document>;
|
|
28
|
+
getDocument(id: string): Promise<Document>;
|
|
29
|
+
deleteDocument(id: string): Promise<void>;
|
|
30
|
+
getDocumentRecords(id: string, params?: DocumentRecordsParams): Promise<{
|
|
31
|
+
records: RecordClean[];
|
|
32
|
+
class: {
|
|
33
|
+
slug: string | null;
|
|
34
|
+
name: string | null;
|
|
35
|
+
};
|
|
36
|
+
}>;
|
|
37
|
+
getDocumentRecordsFlat(id: string, params?: DocumentRecordsParams): Promise<{
|
|
38
|
+
records: FlatRecord[];
|
|
39
|
+
class: {
|
|
40
|
+
slug: string | null;
|
|
41
|
+
name: string | null;
|
|
42
|
+
};
|
|
43
|
+
}>;
|
|
44
|
+
getDocumentRecordsNested(id: string, params?: DocumentRecordsParams): Promise<{
|
|
45
|
+
records: RecordNested[];
|
|
46
|
+
class: {
|
|
47
|
+
slug: string | null;
|
|
48
|
+
name: string | null;
|
|
49
|
+
};
|
|
50
|
+
}>;
|
|
51
|
+
getRecord(id: string): Promise<RecordClean>;
|
|
52
|
+
getRecordFlat(id: string): Promise<FlatRecord>;
|
|
53
|
+
getRecordNested(id: string): Promise<RecordNested>;
|
|
54
|
+
listRecordFieldEvents(id: string, params?: ListFieldEventsParams): Promise<ListResponse<FieldEvent>>;
|
|
55
|
+
getRecordComments(id: string): Promise<ListResponse<CommentView>>;
|
|
56
|
+
getRecordApprovals(id: string): Promise<ListResponse<ApprovalEvent>>;
|
|
57
|
+
listWebhooks(params: {
|
|
58
|
+
datasetId: string;
|
|
59
|
+
} & ListParams): Promise<ListResponse<Webhook>>;
|
|
60
|
+
createWebhook(params: CreateWebhookParams): Promise<Webhook>;
|
|
61
|
+
updateWebhook(id: string, params: UpdateWebhookParams): Promise<Webhook>;
|
|
62
|
+
deleteWebhook(id: string, params: WebhookScopeParams): Promise<void>;
|
|
63
|
+
rotateWebhookSecret(id: string, params: WebhookScopeParams): Promise<{
|
|
64
|
+
secret: string;
|
|
65
|
+
}>;
|
|
66
|
+
/** Returns the raw OpenAPI JSON spec. Does not require authentication. */
|
|
67
|
+
getOpenApiSpec(): Promise<unknown>;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { KlaaroApiError } from "./errors.js";
|
|
2
|
+
export const DEFAULT_BASE_URL = "https://klaaro.ai/api/v1";
|
|
3
|
+
export class KlaaroClient {
|
|
4
|
+
apiKey;
|
|
5
|
+
baseUrl;
|
|
6
|
+
constructor(options) {
|
|
7
|
+
if (!options.apiKey)
|
|
8
|
+
throw new Error("KlaaroClient: apiKey is required");
|
|
9
|
+
this.apiKey = options.apiKey;
|
|
10
|
+
this.baseUrl = (options.baseUrl ?? DEFAULT_BASE_URL).replace(/\/$/, "");
|
|
11
|
+
}
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Core request helper
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
async request(method, path, options = {}) {
|
|
16
|
+
const url = new URL(this.baseUrl + path);
|
|
17
|
+
if (options.params) {
|
|
18
|
+
for (const [k, v] of Object.entries(options.params)) {
|
|
19
|
+
if (v !== undefined)
|
|
20
|
+
url.searchParams.set(k, String(v));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const headers = {};
|
|
24
|
+
if (!options.noAuth) {
|
|
25
|
+
headers["Authorization"] = `Bearer ${this.apiKey}`;
|
|
26
|
+
}
|
|
27
|
+
if (options.idempotencyKey) {
|
|
28
|
+
headers["Idempotency-Key"] = options.idempotencyKey;
|
|
29
|
+
}
|
|
30
|
+
let bodyInit;
|
|
31
|
+
if (options.form) {
|
|
32
|
+
bodyInit = options.form;
|
|
33
|
+
}
|
|
34
|
+
else if (options.body !== undefined) {
|
|
35
|
+
headers["Content-Type"] = "application/json";
|
|
36
|
+
bodyInit = JSON.stringify(options.body);
|
|
37
|
+
}
|
|
38
|
+
const response = await fetch(url.toString(), {
|
|
39
|
+
method,
|
|
40
|
+
headers,
|
|
41
|
+
body: bodyInit,
|
|
42
|
+
});
|
|
43
|
+
if (response.status === 204) {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
const json = await response.json();
|
|
47
|
+
if (!response.ok) {
|
|
48
|
+
const err = json.error;
|
|
49
|
+
throw new KlaaroApiError(response.status, {
|
|
50
|
+
code: err?.code ?? "unknown_error",
|
|
51
|
+
message: err?.message ?? `HTTP ${response.status}`,
|
|
52
|
+
param: err?.param,
|
|
53
|
+
requestId: err?.requestId,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return json;
|
|
57
|
+
}
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
// Datasets
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
listDatasets(params) {
|
|
62
|
+
return this.request("GET", "/datasets", { params });
|
|
63
|
+
}
|
|
64
|
+
getDataset(id) {
|
|
65
|
+
return this.request("GET", `/datasets/${id}`);
|
|
66
|
+
}
|
|
67
|
+
deleteDataset(id) {
|
|
68
|
+
return this.request("DELETE", `/datasets/${id}`);
|
|
69
|
+
}
|
|
70
|
+
listDatasetRecords(id, params) {
|
|
71
|
+
return this.request("GET", `/datasets/${id}/records`, { params });
|
|
72
|
+
}
|
|
73
|
+
listDatasetRecordsFlat(id, params) {
|
|
74
|
+
return this.request("GET", `/datasets/${id}/records-flat`, { params });
|
|
75
|
+
}
|
|
76
|
+
listDatasetRecordsNested(id, params) {
|
|
77
|
+
return this.request("GET", `/datasets/${id}/records-nested`, { params });
|
|
78
|
+
}
|
|
79
|
+
listDatasetClasses(id) {
|
|
80
|
+
return this.request("GET", `/datasets/${id}/classes`);
|
|
81
|
+
}
|
|
82
|
+
getDatasetClass(id, classSlug) {
|
|
83
|
+
return this.request("GET", `/datasets/${id}/classes/${encodeURIComponent(classSlug)}`);
|
|
84
|
+
}
|
|
85
|
+
listApprovalQueue(id, params) {
|
|
86
|
+
return this.request("GET", `/datasets/${id}/approval-queue`, { params });
|
|
87
|
+
}
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
// Documents
|
|
90
|
+
// ---------------------------------------------------------------------------
|
|
91
|
+
listDocuments(params) {
|
|
92
|
+
return this.request("GET", "/documents", { params });
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Upload a document by file (multipart) or URL (JSON).
|
|
96
|
+
* Provide either `file` (+ optional `filename`) or `url`, not both.
|
|
97
|
+
*/
|
|
98
|
+
uploadDocument(params) {
|
|
99
|
+
const { datasetId, file, filename, url, fixedClass, idempotencyKey, replaceDocumentId } = params;
|
|
100
|
+
if (file) {
|
|
101
|
+
const form = new FormData();
|
|
102
|
+
form.append("datasetId", datasetId);
|
|
103
|
+
form.append("file", file, filename ?? (file instanceof File ? file.name : "upload"));
|
|
104
|
+
if (fixedClass)
|
|
105
|
+
form.append("fixedClassification", fixedClass);
|
|
106
|
+
if (replaceDocumentId)
|
|
107
|
+
form.append("replaceDocumentId", replaceDocumentId);
|
|
108
|
+
return this.request("POST", "/documents", { form, idempotencyKey });
|
|
109
|
+
}
|
|
110
|
+
if (url) {
|
|
111
|
+
return this.request("POST", "/documents", {
|
|
112
|
+
body: { datasetId, url, fixedClass, idempotencyKey, replaceDocumentId },
|
|
113
|
+
idempotencyKey,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
throw new Error("uploadDocument: provide either file or url");
|
|
117
|
+
}
|
|
118
|
+
getDocument(id) {
|
|
119
|
+
return this.request("GET", `/documents/${id}`);
|
|
120
|
+
}
|
|
121
|
+
deleteDocument(id) {
|
|
122
|
+
return this.request("DELETE", `/documents/${id}`);
|
|
123
|
+
}
|
|
124
|
+
getDocumentRecords(id, params) {
|
|
125
|
+
return this.request("GET", `/documents/${id}/records`, {
|
|
126
|
+
params: params?.includeUnapproved !== undefined ? { includeUnapproved: params.includeUnapproved } : undefined,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
getDocumentRecordsFlat(id, params) {
|
|
130
|
+
return this.request("GET", `/documents/${id}/records-flat`, {
|
|
131
|
+
params: params?.includeUnapproved !== undefined ? { includeUnapproved: params.includeUnapproved } : undefined,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
getDocumentRecordsNested(id, params) {
|
|
135
|
+
return this.request("GET", `/documents/${id}/records-nested`, {
|
|
136
|
+
params: params?.includeUnapproved !== undefined ? { includeUnapproved: params.includeUnapproved } : undefined,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
// ---------------------------------------------------------------------------
|
|
140
|
+
// Records
|
|
141
|
+
// ---------------------------------------------------------------------------
|
|
142
|
+
getRecord(id) {
|
|
143
|
+
return this.request("GET", `/records/${id}`);
|
|
144
|
+
}
|
|
145
|
+
getRecordFlat(id) {
|
|
146
|
+
return this.request("GET", `/records-flat/${id}`);
|
|
147
|
+
}
|
|
148
|
+
getRecordNested(id) {
|
|
149
|
+
return this.request("GET", `/records-nested/${id}`);
|
|
150
|
+
}
|
|
151
|
+
listRecordFieldEvents(id, params) {
|
|
152
|
+
return this.request("GET", `/records/${id}/field-events`, { params });
|
|
153
|
+
}
|
|
154
|
+
getRecordComments(id) {
|
|
155
|
+
return this.request("GET", `/records/${id}/comments`);
|
|
156
|
+
}
|
|
157
|
+
getRecordApprovals(id) {
|
|
158
|
+
return this.request("GET", `/records/${id}/approvals`);
|
|
159
|
+
}
|
|
160
|
+
// ---------------------------------------------------------------------------
|
|
161
|
+
// Webhooks
|
|
162
|
+
// ---------------------------------------------------------------------------
|
|
163
|
+
listWebhooks(params) {
|
|
164
|
+
return this.request("GET", "/webhooks", { params });
|
|
165
|
+
}
|
|
166
|
+
createWebhook(params) {
|
|
167
|
+
return this.request("POST", "/webhooks", { body: params });
|
|
168
|
+
}
|
|
169
|
+
updateWebhook(id, params) {
|
|
170
|
+
return this.request("PATCH", `/webhooks/${id}`, { body: params });
|
|
171
|
+
}
|
|
172
|
+
deleteWebhook(id, params) {
|
|
173
|
+
return this.request("DELETE", `/webhooks/${id}`, { body: params });
|
|
174
|
+
}
|
|
175
|
+
rotateWebhookSecret(id, params) {
|
|
176
|
+
return this.request("POST", `/webhooks/${id}/rotate-secret`, { body: params });
|
|
177
|
+
}
|
|
178
|
+
// ---------------------------------------------------------------------------
|
|
179
|
+
// Misc
|
|
180
|
+
// ---------------------------------------------------------------------------
|
|
181
|
+
/** Returns the raw OpenAPI JSON spec. Does not require authentication. */
|
|
182
|
+
getOpenApiSpec() {
|
|
183
|
+
return this.request("GET", "/openapi", { noAuth: true });
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface KlaaroErrorBody {
|
|
2
|
+
code: string;
|
|
3
|
+
message: string;
|
|
4
|
+
param?: string;
|
|
5
|
+
requestId?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class KlaaroApiError extends Error {
|
|
8
|
+
readonly status: number;
|
|
9
|
+
readonly code: string;
|
|
10
|
+
readonly param: string | undefined;
|
|
11
|
+
readonly requestId: string | undefined;
|
|
12
|
+
constructor(status: number, body: KlaaroErrorBody);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE3B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe;CAQlD"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export class KlaaroApiError extends Error {
|
|
2
|
+
status;
|
|
3
|
+
code;
|
|
4
|
+
param;
|
|
5
|
+
requestId;
|
|
6
|
+
constructor(status, body) {
|
|
7
|
+
super(body.message);
|
|
8
|
+
this.name = "KlaaroApiError";
|
|
9
|
+
this.status = status;
|
|
10
|
+
this.code = body.code;
|
|
11
|
+
this.param = body.param;
|
|
12
|
+
this.requestId = body.requestId;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,cAAe,SAAQ,KAAK;IAC9B,MAAM,CAAS;IACf,IAAI,CAAS;IACb,KAAK,CAAqB;IAC1B,SAAS,CAAqB;IAEvC,YAAY,MAAc,EAAE,IAAqB;QAC/C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAClC,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { KlaaroClient, DEFAULT_BASE_URL } from "./client.js";
|
|
2
|
+
export type { KlaaroClientOptions } from "./client.js";
|
|
3
|
+
export { KlaaroApiError } from "./errors.js";
|
|
4
|
+
export type { KlaaroErrorBody } from "./errors.js";
|
|
5
|
+
export type { ListMeta, ListResponse, ListParams, Dataset, SchemaField, Class, DocumentStatus, DocumentClassRef, PipelineStatus, Document, ListDocumentsParams, UploadDocumentParams, RecordClassRef, FieldAnnotationKind, FieldAnnotationTier, FieldAnnotation, FieldActorKind, FieldActor, FieldReview, FieldValidation, Violation, FieldExtraction, FieldSchemaInfo, FieldScores, FieldView, ApprovalStatus, ApprovalView, QualityView, CommentView, FlatRecord, RecordNested, RecordClean, ListRecordsParams, DocumentRecordsParams, FieldEvent, ListFieldEventsParams, ApprovalEventAction, ApprovalEvent, ApprovalQueueItem, ListApprovalQueueParams, WebhookEvent, Webhook, CreateWebhookParams, UpdateWebhookParams, WebhookScopeParams, } from "./types.js";
|
|
6
|
+
export { WEBHOOK_EVENTS } from "./types.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC7D,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,OAAO,EACP,WAAW,EACX,KAAK,EACL,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,UAAU,EACV,WAAW,EACX,eAAe,EACf,SAAS,EACT,eAAe,EACf,eAAe,EACf,WAAW,EACX,SAAS,EACT,cAAc,EACd,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACZ,OAAO,EACP,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAiD7C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
export interface ListMeta {
|
|
2
|
+
nextCursor: string | null;
|
|
3
|
+
hasMore: boolean;
|
|
4
|
+
}
|
|
5
|
+
export interface ListResponse<T> {
|
|
6
|
+
data: T[];
|
|
7
|
+
meta: ListMeta;
|
|
8
|
+
}
|
|
9
|
+
export interface ListParams {
|
|
10
|
+
limit?: number;
|
|
11
|
+
cursor?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface Dataset {
|
|
14
|
+
id: string;
|
|
15
|
+
slug: string;
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
documentCount: number;
|
|
19
|
+
createdAt: string;
|
|
20
|
+
updatedAt: string;
|
|
21
|
+
}
|
|
22
|
+
export interface SchemaField {
|
|
23
|
+
name: string;
|
|
24
|
+
type: string;
|
|
25
|
+
description?: string;
|
|
26
|
+
required: boolean;
|
|
27
|
+
children?: SchemaField[];
|
|
28
|
+
arrayItemType?: string;
|
|
29
|
+
arrayItemFields?: SchemaField[];
|
|
30
|
+
enumValues?: (string | number)[];
|
|
31
|
+
}
|
|
32
|
+
export interface Class {
|
|
33
|
+
slug: string;
|
|
34
|
+
name: string;
|
|
35
|
+
description: string;
|
|
36
|
+
color: string;
|
|
37
|
+
schemaHash: string;
|
|
38
|
+
classHash: string;
|
|
39
|
+
fields: SchemaField[];
|
|
40
|
+
createdAt?: string;
|
|
41
|
+
updatedAt?: string;
|
|
42
|
+
}
|
|
43
|
+
export type DocumentStatus = "queued" | "processing" | "completed" | "failed" | "cancelled";
|
|
44
|
+
export interface DocumentClassRef {
|
|
45
|
+
slug: string | null;
|
|
46
|
+
name: string | null;
|
|
47
|
+
}
|
|
48
|
+
export interface PipelineStatus {
|
|
49
|
+
lastRunId: string | null;
|
|
50
|
+
lastFinishedAt: string | null;
|
|
51
|
+
fromStep: string | null;
|
|
52
|
+
}
|
|
53
|
+
export interface Document {
|
|
54
|
+
id: string;
|
|
55
|
+
datasetId: string;
|
|
56
|
+
datasetSlug: string;
|
|
57
|
+
filename: string;
|
|
58
|
+
fileType: string;
|
|
59
|
+
fileSize: number;
|
|
60
|
+
status: DocumentStatus;
|
|
61
|
+
currentStep: string;
|
|
62
|
+
class: DocumentClassRef;
|
|
63
|
+
error: string | null;
|
|
64
|
+
ingestSourceDisplay: string | null;
|
|
65
|
+
pipeline: PipelineStatus;
|
|
66
|
+
createdAt: string;
|
|
67
|
+
updatedAt: string;
|
|
68
|
+
}
|
|
69
|
+
export interface ListDocumentsParams extends ListParams {
|
|
70
|
+
datasetId?: string;
|
|
71
|
+
class?: string;
|
|
72
|
+
status?: DocumentStatus;
|
|
73
|
+
createdAfter?: string;
|
|
74
|
+
createdBefore?: string;
|
|
75
|
+
}
|
|
76
|
+
export interface UploadDocumentParams {
|
|
77
|
+
datasetId: string;
|
|
78
|
+
/** File upload (browser File / Node Blob). Mutually exclusive with url. */
|
|
79
|
+
file?: Blob | File;
|
|
80
|
+
/** File name to use (required when file is a raw Blob). */
|
|
81
|
+
filename?: string;
|
|
82
|
+
/** URL to ingest from. Mutually exclusive with file. */
|
|
83
|
+
url?: string;
|
|
84
|
+
fixedClass?: string;
|
|
85
|
+
idempotencyKey?: string;
|
|
86
|
+
replaceDocumentId?: string;
|
|
87
|
+
}
|
|
88
|
+
export interface RecordClassRef {
|
|
89
|
+
slug: string | null;
|
|
90
|
+
name: string | null;
|
|
91
|
+
schemaHash: string | null;
|
|
92
|
+
classHash: string | null;
|
|
93
|
+
}
|
|
94
|
+
export type FieldAnnotationKind = "corrected_unsure" | "confirmed_unsure" | "edited_unflagged" | "reviewed_unchanged";
|
|
95
|
+
export type FieldAnnotationTier = "bronze" | "silver" | "gold";
|
|
96
|
+
export interface FieldAnnotation {
|
|
97
|
+
kind: FieldAnnotationKind;
|
|
98
|
+
tier: FieldAnnotationTier;
|
|
99
|
+
reviewerId: string | null;
|
|
100
|
+
createdAt: string;
|
|
101
|
+
}
|
|
102
|
+
export type FieldActorKind = "user" | "api_key" | "model" | "system";
|
|
103
|
+
export interface FieldActor {
|
|
104
|
+
kind: FieldActorKind;
|
|
105
|
+
id: string | null;
|
|
106
|
+
name: string | null;
|
|
107
|
+
}
|
|
108
|
+
export interface FieldReview {
|
|
109
|
+
latestAnnotation: FieldAnnotation | null;
|
|
110
|
+
isUnsure: boolean;
|
|
111
|
+
openFlagId: string | null;
|
|
112
|
+
commentCount: number;
|
|
113
|
+
eventCount: number;
|
|
114
|
+
lastActor: FieldActor | null;
|
|
115
|
+
lastAt: string | null;
|
|
116
|
+
}
|
|
117
|
+
export interface FieldValidation {
|
|
118
|
+
violations: Violation[];
|
|
119
|
+
hasHard: boolean;
|
|
120
|
+
}
|
|
121
|
+
export interface Violation {
|
|
122
|
+
ruleId: string;
|
|
123
|
+
ruleKind: string;
|
|
124
|
+
severity: "soft" | "hard";
|
|
125
|
+
status: "fail" | "error";
|
|
126
|
+
message: string;
|
|
127
|
+
details?: Record<string, unknown>;
|
|
128
|
+
}
|
|
129
|
+
export interface FieldExtraction {
|
|
130
|
+
evidence: string | null;
|
|
131
|
+
modelUnsure: boolean;
|
|
132
|
+
modelNote: string | null;
|
|
133
|
+
}
|
|
134
|
+
export interface FieldSchemaInfo {
|
|
135
|
+
type: string;
|
|
136
|
+
required: boolean;
|
|
137
|
+
description?: string;
|
|
138
|
+
enumValues?: (string | number)[];
|
|
139
|
+
}
|
|
140
|
+
export interface FieldScores {
|
|
141
|
+
selfConsistency: number | null;
|
|
142
|
+
evidenceCoverage: number | null;
|
|
143
|
+
schemaConformance: number | null;
|
|
144
|
+
judgeScore: number | null;
|
|
145
|
+
truthMatch: boolean | null;
|
|
146
|
+
}
|
|
147
|
+
export interface FieldView {
|
|
148
|
+
path: string;
|
|
149
|
+
fieldRoot: string;
|
|
150
|
+
value: unknown;
|
|
151
|
+
schema: FieldSchemaInfo | null;
|
|
152
|
+
extraction: FieldExtraction;
|
|
153
|
+
review: FieldReview;
|
|
154
|
+
validation: FieldValidation;
|
|
155
|
+
scores?: FieldScores;
|
|
156
|
+
}
|
|
157
|
+
export type ApprovalStatus = "pending" | "approved" | "approved_with_changes" | "rejected";
|
|
158
|
+
export interface ApprovalView {
|
|
159
|
+
status: ApprovalStatus | null;
|
|
160
|
+
triggeredBy: string[];
|
|
161
|
+
}
|
|
162
|
+
export interface QualityView {
|
|
163
|
+
kqs: number | null;
|
|
164
|
+
subScores: {
|
|
165
|
+
null: number | null;
|
|
166
|
+
unsure: number | null;
|
|
167
|
+
validation: number | null;
|
|
168
|
+
selfConsistency: number | null;
|
|
169
|
+
judge: number | null;
|
|
170
|
+
} | null;
|
|
171
|
+
truthScore: number | null;
|
|
172
|
+
schemaHash: string | null;
|
|
173
|
+
computedAt: string | null;
|
|
174
|
+
}
|
|
175
|
+
export interface CommentView {
|
|
176
|
+
id: string;
|
|
177
|
+
body: string;
|
|
178
|
+
author: {
|
|
179
|
+
kind: "user" | "api_key";
|
|
180
|
+
id: string | null;
|
|
181
|
+
name: string | null;
|
|
182
|
+
};
|
|
183
|
+
createdAt: string;
|
|
184
|
+
}
|
|
185
|
+
/** Flat FieldView record (records / records-flat endpoints). */
|
|
186
|
+
export interface FlatRecord {
|
|
187
|
+
id: string;
|
|
188
|
+
documentId: string;
|
|
189
|
+
datasetId: string;
|
|
190
|
+
datasetSlug: string;
|
|
191
|
+
rowIndex: number;
|
|
192
|
+
class: RecordClassRef;
|
|
193
|
+
sourcePage: number | null;
|
|
194
|
+
createdAt: string;
|
|
195
|
+
updatedAt: string;
|
|
196
|
+
approval: ApprovalView | null;
|
|
197
|
+
quality?: QualityView;
|
|
198
|
+
fields: {
|
|
199
|
+
[path: string]: FieldView;
|
|
200
|
+
};
|
|
201
|
+
crossField: {
|
|
202
|
+
validation: FieldValidation;
|
|
203
|
+
};
|
|
204
|
+
comments: {
|
|
205
|
+
count: number;
|
|
206
|
+
preview: CommentView[];
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
/** Nested record (records-nested endpoints). */
|
|
210
|
+
export interface RecordNested extends Omit<FlatRecord, "fields"> {
|
|
211
|
+
data: unknown;
|
|
212
|
+
}
|
|
213
|
+
/** Clean extracted values only (no FieldView wrappers). */
|
|
214
|
+
export interface RecordClean {
|
|
215
|
+
id: string;
|
|
216
|
+
documentId: string;
|
|
217
|
+
class: RecordClassRef;
|
|
218
|
+
data: {
|
|
219
|
+
[key: string]: unknown;
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
export interface ListRecordsParams extends ListParams {
|
|
223
|
+
class?: string;
|
|
224
|
+
approval?: ApprovalStatus;
|
|
225
|
+
createdAfter?: string;
|
|
226
|
+
createdBefore?: string;
|
|
227
|
+
}
|
|
228
|
+
export interface DocumentRecordsParams {
|
|
229
|
+
includeUnapproved?: boolean;
|
|
230
|
+
}
|
|
231
|
+
export interface FieldEvent {
|
|
232
|
+
id: string;
|
|
233
|
+
fieldPath: string;
|
|
234
|
+
kind: string;
|
|
235
|
+
body?: string;
|
|
236
|
+
priorValue?: unknown;
|
|
237
|
+
newValue?: unknown;
|
|
238
|
+
actor: FieldActor;
|
|
239
|
+
createdAt: string;
|
|
240
|
+
}
|
|
241
|
+
export interface ListFieldEventsParams extends ListParams {
|
|
242
|
+
fieldPath?: string;
|
|
243
|
+
kinds?: string;
|
|
244
|
+
}
|
|
245
|
+
export type ApprovalEventAction = "created_pending" | "auto_approved" | "approved" | "approved_with_changes" | "rejected" | "reset_to_pending";
|
|
246
|
+
export interface ApprovalEvent {
|
|
247
|
+
id: string;
|
|
248
|
+
action: ApprovalEventAction;
|
|
249
|
+
actor: {
|
|
250
|
+
kind: "user" | "api_key" | "system";
|
|
251
|
+
id: string | null;
|
|
252
|
+
name: string | null;
|
|
253
|
+
};
|
|
254
|
+
comment: string | null;
|
|
255
|
+
createdAt: string;
|
|
256
|
+
}
|
|
257
|
+
export interface ApprovalQueueItem {
|
|
258
|
+
recordId: string;
|
|
259
|
+
documentId: string;
|
|
260
|
+
documentFilename: string;
|
|
261
|
+
classification: string | null;
|
|
262
|
+
status: ApprovalStatus;
|
|
263
|
+
triggeredBy: string[];
|
|
264
|
+
assignedReviewerId: string | null;
|
|
265
|
+
createdAt: string;
|
|
266
|
+
updatedAt: string;
|
|
267
|
+
}
|
|
268
|
+
export interface ListApprovalQueueParams extends ListParams {
|
|
269
|
+
status?: ApprovalStatus;
|
|
270
|
+
}
|
|
271
|
+
export declare const WEBHOOK_EVENTS: readonly ["document.ocr_completed", "document.extraction_completed", "document.failed", "document.uploaded", "record.updated", "record.approved", "evaluation.completed"];
|
|
272
|
+
export type WebhookEvent = (typeof WEBHOOK_EVENTS)[number];
|
|
273
|
+
export interface Webhook {
|
|
274
|
+
id: string;
|
|
275
|
+
url: string;
|
|
276
|
+
events: WebhookEvent[];
|
|
277
|
+
description: string | null;
|
|
278
|
+
secretLast4: string | null;
|
|
279
|
+
lastDeliveryAt: string | null;
|
|
280
|
+
lastStatus: string | null;
|
|
281
|
+
createdAt: string;
|
|
282
|
+
updatedAt: string;
|
|
283
|
+
}
|
|
284
|
+
export interface CreateWebhookParams {
|
|
285
|
+
datasetId: string;
|
|
286
|
+
url: string;
|
|
287
|
+
events: WebhookEvent[];
|
|
288
|
+
description?: string;
|
|
289
|
+
}
|
|
290
|
+
export interface UpdateWebhookParams {
|
|
291
|
+
datasetId: string;
|
|
292
|
+
url?: string;
|
|
293
|
+
events?: WebhookEvent[];
|
|
294
|
+
description?: string | null;
|
|
295
|
+
}
|
|
296
|
+
export interface WebhookScopeParams {
|
|
297
|
+
datasetId: string;
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Shared
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
// Webhook
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
export const WEBHOOK_EVENTS = [
|
|
8
|
+
"document.ocr_completed",
|
|
9
|
+
"document.extraction_completed",
|
|
10
|
+
"document.failed",
|
|
11
|
+
"document.uploaded",
|
|
12
|
+
"record.updated",
|
|
13
|
+
"record.approved",
|
|
14
|
+
"evaluation.completed",
|
|
15
|
+
];
|
|
16
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AA6U9E,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,wBAAwB;IACxB,+BAA+B;IAC/B,iBAAiB;IACjB,mBAAmB;IACnB,gBAAgB;IAChB,iBAAiB;IACjB,sBAAsB;CACd,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "klaaro",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Official TypeScript SDK for the Klaaro API",
|
|
5
|
+
"homepage": "https://klaaro.ai",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/klaaro-ai/klaaro-ts.git"
|
|
9
|
+
},
|
|
10
|
+
"bugs": {
|
|
11
|
+
"url": "https://github.com/klaaro-ai/klaaro-ts/issues"
|
|
12
|
+
},
|
|
13
|
+
"type": "module",
|
|
14
|
+
"main": "./dist/index.js",
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"import": "./dist/index.js",
|
|
19
|
+
"types": "./dist/index.d.ts"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"files": ["dist"],
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsc",
|
|
25
|
+
"test": "vitest run",
|
|
26
|
+
"test:watch": "vitest",
|
|
27
|
+
"prepublishOnly": "npm run build"
|
|
28
|
+
},
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"engines": {
|
|
31
|
+
"node": ">=18"
|
|
32
|
+
},
|
|
33
|
+
"publishConfig": {
|
|
34
|
+
"access": "public"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"typescript": "^5.4.5",
|
|
38
|
+
"vitest": "^3.0.0"
|
|
39
|
+
}
|
|
40
|
+
}
|