@knowledge-stack/ksapi 3.13.0 → 3.14.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.
Files changed (49) hide show
  1. package/.openapi-generator/FILES +4 -0
  2. package/README.md +6 -2
  3. package/dist/apis/DocumentVersionsApi.d.ts +4 -4
  4. package/dist/apis/DocumentVersionsApi.js +2 -2
  5. package/dist/apis/SystemJobsApi.d.ts +126 -17
  6. package/dist/apis/SystemJobsApi.js +137 -8
  7. package/dist/esm/apis/DocumentVersionsApi.d.ts +4 -4
  8. package/dist/esm/apis/DocumentVersionsApi.js +2 -2
  9. package/dist/esm/apis/SystemJobsApi.d.ts +126 -17
  10. package/dist/esm/apis/SystemJobsApi.js +138 -9
  11. package/dist/esm/models/BulkFailureReason.d.ts +3 -0
  12. package/dist/esm/models/BulkFailureReason.js +4 -1
  13. package/dist/esm/models/BulkRerunRequest.d.ts +47 -0
  14. package/dist/esm/models/BulkRerunRequest.js +42 -0
  15. package/dist/esm/models/PaginatedResponseUserInfo.d.ts +66 -0
  16. package/dist/esm/models/PaginatedResponseUserInfo.js +70 -0
  17. package/dist/esm/models/WorkflowDetailResponse.d.ts +26 -1
  18. package/dist/esm/models/WorkflowDetailResponse.js +17 -0
  19. package/dist/esm/models/WorkflowSummaryResponse.d.ts +26 -1
  20. package/dist/esm/models/WorkflowSummaryResponse.js +17 -0
  21. package/dist/esm/models/index.d.ts +2 -0
  22. package/dist/esm/models/index.js +2 -0
  23. package/dist/models/BulkFailureReason.d.ts +3 -0
  24. package/dist/models/BulkFailureReason.js +4 -1
  25. package/dist/models/BulkRerunRequest.d.ts +47 -0
  26. package/dist/models/BulkRerunRequest.js +50 -0
  27. package/dist/models/PaginatedResponseUserInfo.d.ts +66 -0
  28. package/dist/models/PaginatedResponseUserInfo.js +78 -0
  29. package/dist/models/WorkflowDetailResponse.d.ts +26 -1
  30. package/dist/models/WorkflowDetailResponse.js +17 -0
  31. package/dist/models/WorkflowSummaryResponse.d.ts +26 -1
  32. package/dist/models/WorkflowSummaryResponse.js +17 -0
  33. package/dist/models/index.d.ts +2 -0
  34. package/dist/models/index.js +2 -0
  35. package/docs/BulkRerunRequest.md +35 -0
  36. package/docs/DocumentVersionsApi.md +1 -1
  37. package/docs/PaginatedResponseUserInfo.md +40 -0
  38. package/docs/SystemJobsApi.md +190 -5
  39. package/docs/WorkflowDetailResponse.md +8 -0
  40. package/docs/WorkflowSummaryResponse.md +8 -0
  41. package/package.json +1 -1
  42. package/src/apis/DocumentVersionsApi.ts +4 -4
  43. package/src/apis/SystemJobsApi.ts +272 -16
  44. package/src/models/BulkFailureReason.ts +4 -1
  45. package/src/models/BulkRerunRequest.ts +82 -0
  46. package/src/models/PaginatedResponseUserInfo.ts +130 -0
  47. package/src/models/WorkflowDetailResponse.ts +44 -1
  48. package/src/models/WorkflowSummaryResponse.ts +44 -1
  49. package/src/models/index.ts +2 -0
@@ -21,11 +21,60 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
21
21
  });
22
22
  };
23
23
  import * as runtime from '../runtime';
24
- import { PaginatedResponseWorkflowSummaryResponseFromJSON, TemporalWorkflowStatusResponseFromJSON, WorkflowActionResponseFromJSON, WorkflowCancelResponseFromJSON, WorkflowDetailResponseFromJSON, ZipIngestionStatusResponseFromJSON, } from '../models/index';
24
+ import { BulkOperationResponseFromJSON, BulkRerunRequestToJSON, PaginatedResponseUserInfoFromJSON, PaginatedResponseWorkflowSummaryResponseFromJSON, TemporalWorkflowStatusResponseFromJSON, WorkflowActionResponseFromJSON, WorkflowCancelResponseFromJSON, WorkflowDetailResponseFromJSON, ZipIngestionStatusResponseFromJSON, } from '../models/index';
25
25
  /**
26
26
  *
27
27
  */
28
28
  export class SystemJobsApi extends runtime.BaseAPI {
29
+ /**
30
+ * Creates request options for bulkRerunDvWorkflows without sending the request
31
+ */
32
+ bulkRerunDvWorkflowsRequestOpts(requestParameters) {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ if (requestParameters['bulkRerunRequest'] == null) {
35
+ throw new runtime.RequiredError('bulkRerunRequest', 'Required parameter "bulkRerunRequest" was null or undefined when calling bulkRerunDvWorkflows().');
36
+ }
37
+ const queryParameters = {};
38
+ const headerParameters = {};
39
+ headerParameters['Content-Type'] = 'application/json';
40
+ if (this.configuration && this.configuration.accessToken) {
41
+ const token = this.configuration.accessToken;
42
+ const tokenString = yield token("bearerAuth", []);
43
+ if (tokenString) {
44
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
45
+ }
46
+ }
47
+ let urlPath = `/v1/system-jobs/document_versions/bulk-rerun`;
48
+ return {
49
+ path: urlPath,
50
+ method: 'POST',
51
+ headers: headerParameters,
52
+ query: queryParameters,
53
+ body: BulkRerunRequestToJSON(requestParameters['bulkRerunRequest']),
54
+ };
55
+ });
56
+ }
57
+ /**
58
+ * Re-run ingestion for the selected document versions, reporting per item. ``not_found``: missing, trashed, never ingested or without its stored source; ``forbidden``: no ``can_write``; ``in_progress_workflow``: still pending/processing; ``already_ingested``: completed; ``unsupported_document_type``: a type that is no longer ingested; ``superseded``: a newer version of the document exists. More than 200 ids is a 400 before any re-run.
59
+ * Bulk Rerun Dv Workflows Handler
60
+ */
61
+ bulkRerunDvWorkflowsRaw(requestParameters, initOverrides) {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ const requestOptions = yield this.bulkRerunDvWorkflowsRequestOpts(requestParameters);
64
+ const response = yield this.request(requestOptions, initOverrides);
65
+ return new runtime.JSONApiResponse(response, (jsonValue) => BulkOperationResponseFromJSON(jsonValue));
66
+ });
67
+ }
68
+ /**
69
+ * Re-run ingestion for the selected document versions, reporting per item. ``not_found``: missing, trashed, never ingested or without its stored source; ``forbidden``: no ``can_write``; ``in_progress_workflow``: still pending/processing; ``already_ingested``: completed; ``unsupported_document_type``: a type that is no longer ingested; ``superseded``: a newer version of the document exists. More than 200 ids is a 400 before any re-run.
70
+ * Bulk Rerun Dv Workflows Handler
71
+ */
72
+ bulkRerunDvWorkflows(requestParameters, initOverrides) {
73
+ return __awaiter(this, void 0, void 0, function* () {
74
+ const response = yield this.bulkRerunDvWorkflowsRaw(requestParameters, initOverrides);
75
+ return yield response.value();
76
+ });
77
+ }
29
78
  /**
30
79
  * Creates request options for cancelTemporalWorkflow without sending the request
31
80
  */
@@ -54,7 +103,7 @@ export class SystemJobsApi extends runtime.BaseAPI {
54
103
  });
55
104
  }
56
105
  /**
57
- * Cancel any Temporal workflow owned by the caller\'s tenant. No status guard — this is a thin Temporal wrapper. Cancelling an already-terminal workflow is a no-op on the Temporal side.
106
+ * Cancel any Temporal workflow owned by the caller\'s tenant. No status guard — this is a thin Temporal wrapper. Cancelling an already-terminal workflow is a no-op on the Temporal side. A run no worker ever picked up is terminated instead, since a cancel request is itself a workflow task nobody would process. When Temporal no longer has the run, or it was terminated here, a document version still showing it running is settled as cancelled (needs ``can_write``) so it can be re-run.
58
107
  * Cancel Temporal Workflow Handler
59
108
  */
60
109
  cancelTemporalWorkflowRaw(requestParameters, initOverrides) {
@@ -65,7 +114,7 @@ export class SystemJobsApi extends runtime.BaseAPI {
65
114
  });
66
115
  }
67
116
  /**
68
- * Cancel any Temporal workflow owned by the caller\'s tenant. No status guard — this is a thin Temporal wrapper. Cancelling an already-terminal workflow is a no-op on the Temporal side.
117
+ * Cancel any Temporal workflow owned by the caller\'s tenant. No status guard — this is a thin Temporal wrapper. Cancelling an already-terminal workflow is a no-op on the Temporal side. A run no worker ever picked up is terminated instead, since a cancel request is itself a workflow task nobody would process. When Temporal no longer has the run, or it was terminated here, a document version still showing it running is settled as cancelled (needs ``can_write``) so it can be re-run.
69
118
  * Cancel Temporal Workflow Handler
70
119
  */
71
120
  cancelTemporalWorkflow(requestParameters, initOverrides) {
@@ -102,7 +151,7 @@ export class SystemJobsApi extends runtime.BaseAPI {
102
151
  });
103
152
  }
104
153
  /**
105
- * Rerun a workflow. USER role requires ``can_write`` on the document path. ``s3_client`` is injected because ``DocumentIngestionService.__init__`` requires it, even though the re-ingestion path reuses the existing S3 source.
154
+ * Rerun a workflow. USER role requires ``can_write`` on the document path. A version that a newer live version supersedes is refused with 409. ``s3_client`` is injected because ``DocumentIngestionService.__init__`` requires it, even though the re-ingestion path reuses the existing S3 source.
106
155
  * Dv Workflow Rerun Handler
107
156
  */
108
157
  dvWorkflowRerunRaw(requestParameters, initOverrides) {
@@ -113,7 +162,7 @@ export class SystemJobsApi extends runtime.BaseAPI {
113
162
  });
114
163
  }
115
164
  /**
116
- * Rerun a workflow. USER role requires ``can_write`` on the document path. ``s3_client`` is injected because ``DocumentIngestionService.__init__`` requires it, even though the re-ingestion path reuses the existing S3 source.
165
+ * Rerun a workflow. USER role requires ``can_write`` on the document path. A version that a newer live version supersedes is refused with 409. ``s3_client`` is injected because ``DocumentIngestionService.__init__`` requires it, even though the re-ingestion path reuses the existing S3 source.
117
166
  * Dv Workflow Rerun Handler
118
167
  */
119
168
  dvWorkflowRerun(requestParameters, initOverrides) {
@@ -246,7 +295,7 @@ export class SystemJobsApi extends runtime.BaseAPI {
246
295
  });
247
296
  }
248
297
  /**
249
- * Get a ZIP fan-out\'s live status + per-member outcomes. Tenant-scoped via the TenantId search attribute (no per-path can_read check — intentionally consistent with the sibling generic Temporal endpoints below; the opaque workflow_id is only handed to the uploader, who had can_write on the target). The per-member results come from the workflow\'s ``results`` query (served from retained history), so once Temporal retention expires this 404s.
298
+ * Get a ZIP fan-out\'s live status + per-member outcomes. Tenant-scoped via the TenantId search attribute (no per-path can_read check — intentionally consistent with the sibling generic Temporal endpoints below; the opaque workflow_id is only handed to the uploader, who had can_write on the target). The per-member results come from the workflow\'s ``results`` query (served from retained history), so once Temporal retention expires this 404s. Any other workflow type has no ``results`` query and is a 404, not a 500.
250
299
  * Get Zip Ingestion Status Handler
251
300
  */
252
301
  getZipIngestionStatusRaw(requestParameters, initOverrides) {
@@ -257,7 +306,7 @@ export class SystemJobsApi extends runtime.BaseAPI {
257
306
  });
258
307
  }
259
308
  /**
260
- * Get a ZIP fan-out\'s live status + per-member outcomes. Tenant-scoped via the TenantId search attribute (no per-path can_read check — intentionally consistent with the sibling generic Temporal endpoints below; the opaque workflow_id is only handed to the uploader, who had can_write on the target). The per-member results come from the workflow\'s ``results`` query (served from retained history), so once Temporal retention expires this 404s.
309
+ * Get a ZIP fan-out\'s live status + per-member outcomes. Tenant-scoped via the TenantId search attribute (no per-path can_read check — intentionally consistent with the sibling generic Temporal endpoints below; the opaque workflow_id is only handed to the uploader, who had can_write on the target). The per-member results come from the workflow\'s ``results`` query (served from retained history), so once Temporal retention expires this 404s. Any other workflow type has no ``results`` query and is a 404, not a 500.
261
310
  * Get Zip Ingestion Status Handler
262
311
  */
263
312
  getZipIngestionStatus(requestParameters, initOverrides) {
@@ -266,6 +315,59 @@ export class SystemJobsApi extends runtime.BaseAPI {
266
315
  return yield response.value();
267
316
  });
268
317
  }
318
+ /**
319
+ * Creates request options for listDvWorkflowUploaders without sending the request
320
+ */
321
+ listDvWorkflowUploadersRequestOpts(requestParameters) {
322
+ return __awaiter(this, void 0, void 0, function* () {
323
+ const queryParameters = {};
324
+ if (requestParameters['usernameLike'] != null) {
325
+ queryParameters['username_like'] = requestParameters['usernameLike'];
326
+ }
327
+ if (requestParameters['limit'] != null) {
328
+ queryParameters['limit'] = requestParameters['limit'];
329
+ }
330
+ if (requestParameters['offset'] != null) {
331
+ queryParameters['offset'] = requestParameters['offset'];
332
+ }
333
+ const headerParameters = {};
334
+ if (this.configuration && this.configuration.accessToken) {
335
+ const token = this.configuration.accessToken;
336
+ const tokenString = yield token("bearerAuth", []);
337
+ if (tokenString) {
338
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
339
+ }
340
+ }
341
+ let urlPath = `/v1/system-jobs/document_versions/uploaders`;
342
+ return {
343
+ path: urlPath,
344
+ method: 'GET',
345
+ headers: headerParameters,
346
+ query: queryParameters,
347
+ };
348
+ });
349
+ }
350
+ /**
351
+ * People who uploaded a version the caller can list, for the uploader filter. Scoped like ``list_dv_workflows``: USER only counts versions under readable paths.
352
+ * List Dv Workflow Uploaders Handler
353
+ */
354
+ listDvWorkflowUploadersRaw(requestParameters, initOverrides) {
355
+ return __awaiter(this, void 0, void 0, function* () {
356
+ const requestOptions = yield this.listDvWorkflowUploadersRequestOpts(requestParameters);
357
+ const response = yield this.request(requestOptions, initOverrides);
358
+ return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedResponseUserInfoFromJSON(jsonValue));
359
+ });
360
+ }
361
+ /**
362
+ * People who uploaded a version the caller can list, for the uploader filter. Scoped like ``list_dv_workflows``: USER only counts versions under readable paths.
363
+ * List Dv Workflow Uploaders Handler
364
+ */
365
+ listDvWorkflowUploaders() {
366
+ return __awaiter(this, arguments, void 0, function* (requestParameters = {}, initOverrides) {
367
+ const response = yield this.listDvWorkflowUploadersRaw(requestParameters, initOverrides);
368
+ return yield response.value();
369
+ });
370
+ }
269
371
  /**
270
372
  * Creates request options for listDvWorkflows without sending the request
271
373
  */
@@ -278,6 +380,33 @@ export class SystemJobsApi extends runtime.BaseAPI {
278
380
  if (requestParameters['offset'] != null) {
279
381
  queryParameters['offset'] = requestParameters['offset'];
280
382
  }
383
+ if (requestParameters['sortDir'] != null) {
384
+ queryParameters['sort_dir'] = requestParameters['sortDir'];
385
+ }
386
+ if (requestParameters['status'] != null) {
387
+ queryParameters['status'] = requestParameters['status'];
388
+ }
389
+ if (requestParameters['nameLike'] != null) {
390
+ queryParameters['name_like'] = requestParameters['nameLike'];
391
+ }
392
+ if (requestParameters['latestVersionOnly'] != null) {
393
+ queryParameters['latest_version_only'] = requestParameters['latestVersionOnly'];
394
+ }
395
+ if (requestParameters['uploaderUserId'] != null) {
396
+ queryParameters['uploader_user_id'] = requestParameters['uploaderUserId'];
397
+ }
398
+ if (requestParameters['createdAfter'] != null) {
399
+ queryParameters['created_after'] = requestParameters['createdAfter'].toISOString();
400
+ }
401
+ if (requestParameters['createdBefore'] != null) {
402
+ queryParameters['created_before'] = requestParameters['createdBefore'].toISOString();
403
+ }
404
+ if (requestParameters['updatedAfter'] != null) {
405
+ queryParameters['updated_after'] = requestParameters['updatedAfter'].toISOString();
406
+ }
407
+ if (requestParameters['updatedBefore'] != null) {
408
+ queryParameters['updated_before'] = requestParameters['updatedBefore'].toISOString();
409
+ }
281
410
  const headerParameters = {};
282
411
  if (this.configuration && this.configuration.accessToken) {
283
412
  const token = this.configuration.accessToken;
@@ -296,7 +425,7 @@ export class SystemJobsApi extends runtime.BaseAPI {
296
425
  });
297
426
  }
298
427
  /**
299
- * List all workflows for the current tenant (paginated, DB-backed). ADMIN/OWNER see all workflows; USER sees only those under permitted paths.
428
+ * List ingestions of live documents in the current tenant, newest upload first. ADMIN/OWNER see every version; USER only versions under readable paths. ``sort_dir=ASC`` lists the oldest upload first.
300
429
  * List Dv Workflows Handler
301
430
  */
302
431
  listDvWorkflowsRaw(requestParameters, initOverrides) {
@@ -307,7 +436,7 @@ export class SystemJobsApi extends runtime.BaseAPI {
307
436
  });
308
437
  }
309
438
  /**
310
- * List all workflows for the current tenant (paginated, DB-backed). ADMIN/OWNER see all workflows; USER sees only those under permitted paths.
439
+ * List ingestions of live documents in the current tenant, newest upload first. ADMIN/OWNER see every version; USER only versions under readable paths. ``sort_dir=ASC`` lists the oldest upload first.
311
440
  * List Dv Workflows Handler
312
441
  */
313
442
  listDvWorkflows() {
@@ -28,6 +28,9 @@ export declare const BulkFailureReason: {
28
28
  readonly NameConflict: 'name_conflict';
29
29
  readonly InProgressWorkflow: 'in_progress_workflow';
30
30
  readonly PermissionLimit: 'permission_limit';
31
+ readonly AlreadyIngested: 'already_ingested';
32
+ readonly UnsupportedDocumentType: 'unsupported_document_type';
33
+ readonly Superseded: 'superseded';
31
34
  };
32
35
  export type BulkFailureReason = typeof BulkFailureReason[keyof typeof BulkFailureReason];
33
36
  export declare function instanceOfBulkFailureReason(value: any): boolean;
@@ -29,7 +29,10 @@ export const BulkFailureReason = {
29
29
  CheckedOut: 'checked_out',
30
30
  NameConflict: 'name_conflict',
31
31
  InProgressWorkflow: 'in_progress_workflow',
32
- PermissionLimit: 'permission_limit'
32
+ PermissionLimit: 'permission_limit',
33
+ AlreadyIngested: 'already_ingested',
34
+ UnsupportedDocumentType: 'unsupported_document_type',
35
+ Superseded: 'superseded'
33
36
  };
34
37
  export function instanceOfBulkFailureReason(value) {
35
38
  for (const key in BulkFailureReason) {
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Knowledge Stack API
3
+ * Knowledge Stack backend API for authentication and knowledge management. ## Integrating (RPA / machine clients) **Base URL.** Knowledge Stack is self-hosted — point at your own deployment host (see `servers`). The `localhost` entry is for local development only. **Authentication.** Send `Authorization: Bearer <api-key>` on every request. Mint an API key once via `POST /v1/api-keys` from a signed-in browser session; the raw `sk-user-...` secret is returned **only** at creation, so store it then. A key inherits its owning user\'s live tenant role and path permissions — create RPA keys from a least-privilege user, and set `expires_at` for rotation. The `ks_uat` cookie scheme is browser-only and cannot be used by headless clients. **Async work is polled, not pushed.** There are no outbound webhooks. - `POST /v1/documents/ingest` returns `201` immediately with a `workflow_id`; poll `GET /v1/system-jobs/document_versions/{workflow_id}` until `status` is terminal (anything other than `pending`/`processing`). The `Location` response header points at this poll resource. - `POST /v1/workflow-runs/{run_id}/start` returns `202`; poll `GET /v1/workflow-runs/{run_id}` until `execution_state` is `COMPLETED` or `FAILED`. The `Location` header points at the run resource. - `POST /v1/agent/ask` is **synchronous** — it blocks until the agent finishes and returns the answer inline. Use a generous HTTP timeout. **Pagination.** List endpoints accept `limit`/`offset` and return `{items, total, limit, offset}`. **Errors.** Every non-2xx body is `{detail, code, request_id}`. `code` is a stable value from a closed set (see the `ErrorResponse` schema\'s `code` enum) — branch on it rather than parsing `detail`. Quota rejections return `429` with a `Retry-After` header; transient lock contention returns a retryable `503`. Quote `request_id` (also the `x-request-id` response header) to support. **Idempotency.** `POST /v1/workflow-runs` accepts an `idempotency_key` to dedupe retried run creation. `agent/ask` charges one message *before* running and does not refund a client-cancelled call.
4
+ *
5
+ * The version of the OpenAPI document: 0.1.0
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ /**
13
+ * Re-run ingestion for the selected document versions.
14
+ * @export
15
+ * @interface BulkRerunRequest
16
+ */
17
+ export interface BulkRerunRequest {
18
+ /**
19
+ *
20
+ * @type {Array<string>}
21
+ * @memberof BulkRerunRequest
22
+ */
23
+ documentVersionIds?: Array<string>;
24
+ }
25
+ export declare const BulkRerunRequestPropertyValidationAttributesMap: {
26
+ [property: string]: {
27
+ maxLength?: number;
28
+ minLength?: number;
29
+ pattern?: string;
30
+ maximum?: number;
31
+ exclusiveMaximum?: boolean;
32
+ minimum?: number;
33
+ exclusiveMinimum?: boolean;
34
+ multipleOf?: number;
35
+ maxItems?: number;
36
+ minItems?: number;
37
+ uniqueItems?: boolean;
38
+ };
39
+ };
40
+ /**
41
+ * Check if a given object implements the BulkRerunRequest interface.
42
+ */
43
+ export declare function instanceOfBulkRerunRequest(value: object): value is BulkRerunRequest;
44
+ export declare function BulkRerunRequestFromJSON(json: any): BulkRerunRequest;
45
+ export declare function BulkRerunRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): BulkRerunRequest;
46
+ export declare function BulkRerunRequestToJSON(json: any): BulkRerunRequest;
47
+ export declare function BulkRerunRequestToJSONTyped(value?: BulkRerunRequest | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,42 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * Knowledge Stack API
5
+ * Knowledge Stack backend API for authentication and knowledge management. ## Integrating (RPA / machine clients) **Base URL.** Knowledge Stack is self-hosted — point at your own deployment host (see `servers`). The `localhost` entry is for local development only. **Authentication.** Send `Authorization: Bearer <api-key>` on every request. Mint an API key once via `POST /v1/api-keys` from a signed-in browser session; the raw `sk-user-...` secret is returned **only** at creation, so store it then. A key inherits its owning user\'s live tenant role and path permissions — create RPA keys from a least-privilege user, and set `expires_at` for rotation. The `ks_uat` cookie scheme is browser-only and cannot be used by headless clients. **Async work is polled, not pushed.** There are no outbound webhooks. - `POST /v1/documents/ingest` returns `201` immediately with a `workflow_id`; poll `GET /v1/system-jobs/document_versions/{workflow_id}` until `status` is terminal (anything other than `pending`/`processing`). The `Location` response header points at this poll resource. - `POST /v1/workflow-runs/{run_id}/start` returns `202`; poll `GET /v1/workflow-runs/{run_id}` until `execution_state` is `COMPLETED` or `FAILED`. The `Location` header points at the run resource. - `POST /v1/agent/ask` is **synchronous** — it blocks until the agent finishes and returns the answer inline. Use a generous HTTP timeout. **Pagination.** List endpoints accept `limit`/`offset` and return `{items, total, limit, offset}`. **Errors.** Every non-2xx body is `{detail, code, request_id}`. `code` is a stable value from a closed set (see the `ErrorResponse` schema\'s `code` enum) — branch on it rather than parsing `detail`. Quota rejections return `429` with a `Retry-After` header; transient lock contention returns a retryable `503`. Quote `request_id` (also the `x-request-id` response header) to support. **Idempotency.** `POST /v1/workflow-runs` accepts an `idempotency_key` to dedupe retried run creation. `agent/ask` charges one message *before* running and does not refund a client-cancelled call.
6
+ *
7
+ * The version of the OpenAPI document: 0.1.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+ export const BulkRerunRequestPropertyValidationAttributesMap = {};
15
+ /**
16
+ * Check if a given object implements the BulkRerunRequest interface.
17
+ */
18
+ export function instanceOfBulkRerunRequest(value) {
19
+ return true;
20
+ }
21
+ export function BulkRerunRequestFromJSON(json) {
22
+ return BulkRerunRequestFromJSONTyped(json, false);
23
+ }
24
+ export function BulkRerunRequestFromJSONTyped(json, ignoreDiscriminator) {
25
+ if (json == null) {
26
+ return json;
27
+ }
28
+ return {
29
+ 'documentVersionIds': json['document_version_ids'] == null ? undefined : json['document_version_ids'],
30
+ };
31
+ }
32
+ export function BulkRerunRequestToJSON(json) {
33
+ return BulkRerunRequestToJSONTyped(json, false);
34
+ }
35
+ export function BulkRerunRequestToJSONTyped(value, ignoreDiscriminator = false) {
36
+ if (value == null) {
37
+ return value;
38
+ }
39
+ return {
40
+ 'document_version_ids': value['documentVersionIds'],
41
+ };
42
+ }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Knowledge Stack API
3
+ * Knowledge Stack backend API for authentication and knowledge management. ## Integrating (RPA / machine clients) **Base URL.** Knowledge Stack is self-hosted — point at your own deployment host (see `servers`). The `localhost` entry is for local development only. **Authentication.** Send `Authorization: Bearer <api-key>` on every request. Mint an API key once via `POST /v1/api-keys` from a signed-in browser session; the raw `sk-user-...` secret is returned **only** at creation, so store it then. A key inherits its owning user\'s live tenant role and path permissions — create RPA keys from a least-privilege user, and set `expires_at` for rotation. The `ks_uat` cookie scheme is browser-only and cannot be used by headless clients. **Async work is polled, not pushed.** There are no outbound webhooks. - `POST /v1/documents/ingest` returns `201` immediately with a `workflow_id`; poll `GET /v1/system-jobs/document_versions/{workflow_id}` until `status` is terminal (anything other than `pending`/`processing`). The `Location` response header points at this poll resource. - `POST /v1/workflow-runs/{run_id}/start` returns `202`; poll `GET /v1/workflow-runs/{run_id}` until `execution_state` is `COMPLETED` or `FAILED`. The `Location` header points at the run resource. - `POST /v1/agent/ask` is **synchronous** — it blocks until the agent finishes and returns the answer inline. Use a generous HTTP timeout. **Pagination.** List endpoints accept `limit`/`offset` and return `{items, total, limit, offset}`. **Errors.** Every non-2xx body is `{detail, code, request_id}`. `code` is a stable value from a closed set (see the `ErrorResponse` schema\'s `code` enum) — branch on it rather than parsing `detail`. Quota rejections return `429` with a `Retry-After` header; transient lock contention returns a retryable `503`. Quote `request_id` (also the `x-request-id` response header) to support. **Idempotency.** `POST /v1/workflow-runs` accepts an `idempotency_key` to dedupe retried run creation. `agent/ask` charges one message *before* running and does not refund a client-cancelled call.
4
+ *
5
+ * The version of the OpenAPI document: 0.1.0
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ import type { UserInfo } from './UserInfo';
13
+ /**
14
+ *
15
+ * @export
16
+ * @interface PaginatedResponseUserInfo
17
+ */
18
+ export interface PaginatedResponseUserInfo {
19
+ /**
20
+ * List of items
21
+ * @type {Array<UserInfo>}
22
+ * @memberof PaginatedResponseUserInfo
23
+ */
24
+ items: Array<UserInfo>;
25
+ /**
26
+ * Total number of items
27
+ * @type {number}
28
+ * @memberof PaginatedResponseUserInfo
29
+ */
30
+ total: number;
31
+ /**
32
+ * Number of items per page
33
+ * @type {number}
34
+ * @memberof PaginatedResponseUserInfo
35
+ */
36
+ limit: number;
37
+ /**
38
+ * Number of items to skip
39
+ * @type {number}
40
+ * @memberof PaginatedResponseUserInfo
41
+ */
42
+ offset: number;
43
+ }
44
+ export declare const PaginatedResponseUserInfoPropertyValidationAttributesMap: {
45
+ [property: string]: {
46
+ maxLength?: number;
47
+ minLength?: number;
48
+ pattern?: string;
49
+ maximum?: number;
50
+ exclusiveMaximum?: boolean;
51
+ minimum?: number;
52
+ exclusiveMinimum?: boolean;
53
+ multipleOf?: number;
54
+ maxItems?: number;
55
+ minItems?: number;
56
+ uniqueItems?: boolean;
57
+ };
58
+ };
59
+ /**
60
+ * Check if a given object implements the PaginatedResponseUserInfo interface.
61
+ */
62
+ export declare function instanceOfPaginatedResponseUserInfo(value: object): value is PaginatedResponseUserInfo;
63
+ export declare function PaginatedResponseUserInfoFromJSON(json: any): PaginatedResponseUserInfo;
64
+ export declare function PaginatedResponseUserInfoFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginatedResponseUserInfo;
65
+ export declare function PaginatedResponseUserInfoToJSON(json: any): PaginatedResponseUserInfo;
66
+ export declare function PaginatedResponseUserInfoToJSONTyped(value?: PaginatedResponseUserInfo | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,70 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * Knowledge Stack API
5
+ * Knowledge Stack backend API for authentication and knowledge management. ## Integrating (RPA / machine clients) **Base URL.** Knowledge Stack is self-hosted — point at your own deployment host (see `servers`). The `localhost` entry is for local development only. **Authentication.** Send `Authorization: Bearer <api-key>` on every request. Mint an API key once via `POST /v1/api-keys` from a signed-in browser session; the raw `sk-user-...` secret is returned **only** at creation, so store it then. A key inherits its owning user\'s live tenant role and path permissions — create RPA keys from a least-privilege user, and set `expires_at` for rotation. The `ks_uat` cookie scheme is browser-only and cannot be used by headless clients. **Async work is polled, not pushed.** There are no outbound webhooks. - `POST /v1/documents/ingest` returns `201` immediately with a `workflow_id`; poll `GET /v1/system-jobs/document_versions/{workflow_id}` until `status` is terminal (anything other than `pending`/`processing`). The `Location` response header points at this poll resource. - `POST /v1/workflow-runs/{run_id}/start` returns `202`; poll `GET /v1/workflow-runs/{run_id}` until `execution_state` is `COMPLETED` or `FAILED`. The `Location` header points at the run resource. - `POST /v1/agent/ask` is **synchronous** — it blocks until the agent finishes and returns the answer inline. Use a generous HTTP timeout. **Pagination.** List endpoints accept `limit`/`offset` and return `{items, total, limit, offset}`. **Errors.** Every non-2xx body is `{detail, code, request_id}`. `code` is a stable value from a closed set (see the `ErrorResponse` schema\'s `code` enum) — branch on it rather than parsing `detail`. Quota rejections return `429` with a `Retry-After` header; transient lock contention returns a retryable `503`. Quote `request_id` (also the `x-request-id` response header) to support. **Idempotency.** `POST /v1/workflow-runs` accepts an `idempotency_key` to dedupe retried run creation. `agent/ask` charges one message *before* running and does not refund a client-cancelled call.
6
+ *
7
+ * The version of the OpenAPI document: 0.1.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+ import { UserInfoFromJSON, UserInfoToJSON, } from './UserInfo';
15
+ export const PaginatedResponseUserInfoPropertyValidationAttributesMap = {
16
+ total: {
17
+ minimum: 0,
18
+ exclusiveMinimum: false,
19
+ },
20
+ limit: {
21
+ minimum: 1,
22
+ exclusiveMinimum: false,
23
+ },
24
+ offset: {
25
+ minimum: 0,
26
+ exclusiveMinimum: false,
27
+ },
28
+ };
29
+ /**
30
+ * Check if a given object implements the PaginatedResponseUserInfo interface.
31
+ */
32
+ export function instanceOfPaginatedResponseUserInfo(value) {
33
+ if (!('items' in value) || value['items'] === undefined)
34
+ return false;
35
+ if (!('total' in value) || value['total'] === undefined)
36
+ return false;
37
+ if (!('limit' in value) || value['limit'] === undefined)
38
+ return false;
39
+ if (!('offset' in value) || value['offset'] === undefined)
40
+ return false;
41
+ return true;
42
+ }
43
+ export function PaginatedResponseUserInfoFromJSON(json) {
44
+ return PaginatedResponseUserInfoFromJSONTyped(json, false);
45
+ }
46
+ export function PaginatedResponseUserInfoFromJSONTyped(json, ignoreDiscriminator) {
47
+ if (json == null) {
48
+ return json;
49
+ }
50
+ return {
51
+ 'items': (json['items'].map(UserInfoFromJSON)),
52
+ 'total': json['total'],
53
+ 'limit': json['limit'],
54
+ 'offset': json['offset'],
55
+ };
56
+ }
57
+ export function PaginatedResponseUserInfoToJSON(json) {
58
+ return PaginatedResponseUserInfoToJSONTyped(json, false);
59
+ }
60
+ export function PaginatedResponseUserInfoToJSONTyped(value, ignoreDiscriminator = false) {
61
+ if (value == null) {
62
+ return value;
63
+ }
64
+ return {
65
+ 'items': (value['items'].map(UserInfoToJSON)),
66
+ 'total': value['total'],
67
+ 'limit': value['limit'],
68
+ 'offset': value['offset'],
69
+ };
70
+ }
@@ -10,6 +10,7 @@
10
10
  * Do not edit the class manually.
11
11
  */
12
12
  import type { PipelineStatus } from './PipelineStatus';
13
+ import type { UserInfo } from './UserInfo';
13
14
  /**
14
15
  * Single item - adds live Temporal fields.
15
16
  * @export
@@ -28,12 +29,36 @@ export interface WorkflowDetailResponse {
28
29
  * @memberof WorkflowDetailResponse
29
30
  */
30
31
  documentId: string;
32
+ /**
33
+ *
34
+ * @type {string}
35
+ * @memberof WorkflowDetailResponse
36
+ */
37
+ documentName: string;
38
+ /**
39
+ * The document's path
40
+ * @type {string}
41
+ * @memberof WorkflowDetailResponse
42
+ */
43
+ materializedPath: string;
31
44
  /**
32
45
  *
33
46
  * @type {string}
34
47
  * @memberof WorkflowDetailResponse
35
48
  */
36
49
  documentVersionId: string;
50
+ /**
51
+ * Whether this version is the document's active one; false for an unfinished newer upload and for a superseded older version
52
+ * @type {boolean}
53
+ * @memberof WorkflowDetailResponse
54
+ */
55
+ isActiveVersion: boolean;
56
+ /**
57
+ *
58
+ * @type {UserInfo}
59
+ * @memberof WorkflowDetailResponse
60
+ */
61
+ uploader: UserInfo;
37
62
  /**
38
63
  *
39
64
  * @type {PipelineStatus}
@@ -53,7 +78,7 @@ export interface WorkflowDetailResponse {
53
78
  */
54
79
  error?: string | null;
55
80
  /**
56
- *
81
+ * When the last run started; the upload time until a run has started
57
82
  * @type {Date}
58
83
  * @memberof WorkflowDetailResponse
59
84
  */
@@ -12,6 +12,7 @@
12
12
  * Do not edit the class manually.
13
13
  */
14
14
  import { PipelineStatusFromJSON, PipelineStatusToJSON, } from './PipelineStatus';
15
+ import { UserInfoFromJSON, UserInfoToJSON, } from './UserInfo';
15
16
  export const WorkflowDetailResponsePropertyValidationAttributesMap = {};
16
17
  /**
17
18
  * Check if a given object implements the WorkflowDetailResponse interface.
@@ -21,8 +22,16 @@ export function instanceOfWorkflowDetailResponse(value) {
21
22
  return false;
22
23
  if (!('documentId' in value) || value['documentId'] === undefined)
23
24
  return false;
25
+ if (!('documentName' in value) || value['documentName'] === undefined)
26
+ return false;
27
+ if (!('materializedPath' in value) || value['materializedPath'] === undefined)
28
+ return false;
24
29
  if (!('documentVersionId' in value) || value['documentVersionId'] === undefined)
25
30
  return false;
31
+ if (!('isActiveVersion' in value) || value['isActiveVersion'] === undefined)
32
+ return false;
33
+ if (!('uploader' in value) || value['uploader'] === undefined)
34
+ return false;
26
35
  if (!('status' in value) || value['status'] === undefined)
27
36
  return false;
28
37
  if (!('lastRunTimestamp' in value) || value['lastRunTimestamp'] === undefined)
@@ -51,7 +60,11 @@ export function WorkflowDetailResponseFromJSONTyped(json, ignoreDiscriminator) {
51
60
  return {
52
61
  'workflowId': json['workflow_id'],
53
62
  'documentId': json['document_id'],
63
+ 'documentName': json['document_name'],
64
+ 'materializedPath': json['materialized_path'],
54
65
  'documentVersionId': json['document_version_id'],
66
+ 'isActiveVersion': json['is_active_version'],
67
+ 'uploader': UserInfoFromJSON(json['uploader']),
55
68
  'status': PipelineStatusFromJSON(json['status']),
56
69
  'lastActivity': json['last_activity'] == null ? undefined : json['last_activity'],
57
70
  'error': json['error'] == null ? undefined : json['error'],
@@ -77,7 +90,11 @@ export function WorkflowDetailResponseToJSONTyped(value, ignoreDiscriminator = f
77
90
  return {
78
91
  'workflow_id': value['workflowId'],
79
92
  'document_id': value['documentId'],
93
+ 'document_name': value['documentName'],
94
+ 'materialized_path': value['materializedPath'],
80
95
  'document_version_id': value['documentVersionId'],
96
+ 'is_active_version': value['isActiveVersion'],
97
+ 'uploader': UserInfoToJSON(value['uploader']),
81
98
  'status': PipelineStatusToJSON(value['status']),
82
99
  'last_activity': value['lastActivity'],
83
100
  'error': value['error'],
@@ -10,6 +10,7 @@
10
10
  * Do not edit the class manually.
11
11
  */
12
12
  import type { PipelineStatus } from './PipelineStatus';
13
+ import type { UserInfo } from './UserInfo';
13
14
  /**
14
15
  * List item - DB-only fields, no Temporal call per item.
15
16
  * @export
@@ -28,12 +29,36 @@ export interface WorkflowSummaryResponse {
28
29
  * @memberof WorkflowSummaryResponse
29
30
  */
30
31
  documentId: string;
32
+ /**
33
+ *
34
+ * @type {string}
35
+ * @memberof WorkflowSummaryResponse
36
+ */
37
+ documentName: string;
38
+ /**
39
+ * The document's path
40
+ * @type {string}
41
+ * @memberof WorkflowSummaryResponse
42
+ */
43
+ materializedPath: string;
31
44
  /**
32
45
  *
33
46
  * @type {string}
34
47
  * @memberof WorkflowSummaryResponse
35
48
  */
36
49
  documentVersionId: string;
50
+ /**
51
+ * Whether this version is the document's active one; false for an unfinished newer upload and for a superseded older version
52
+ * @type {boolean}
53
+ * @memberof WorkflowSummaryResponse
54
+ */
55
+ isActiveVersion: boolean;
56
+ /**
57
+ *
58
+ * @type {UserInfo}
59
+ * @memberof WorkflowSummaryResponse
60
+ */
61
+ uploader: UserInfo;
37
62
  /**
38
63
  *
39
64
  * @type {PipelineStatus}
@@ -53,7 +78,7 @@ export interface WorkflowSummaryResponse {
53
78
  */
54
79
  error?: string | null;
55
80
  /**
56
- *
81
+ * When the last run started; the upload time until a run has started
57
82
  * @type {Date}
58
83
  * @memberof WorkflowSummaryResponse
59
84
  */