@knowledge-stack/ksapi 2.4.3 → 2.6.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 (108) hide show
  1. package/.openapi-generator/FILES +10 -0
  2. package/README.md +7 -2
  3. package/dist/apis/DocumentsApi.d.ts +9 -0
  4. package/dist/apis/DocumentsApi.js +9 -0
  5. package/dist/apis/SystemJobsApi.d.ts +4 -4
  6. package/dist/apis/SystemJobsApi.js +2 -2
  7. package/dist/apis/TenantInvitationsApi.d.ts +67 -0
  8. package/dist/apis/TenantInvitationsApi.js +112 -0
  9. package/dist/apis/TenantsApi.d.ts +4 -4
  10. package/dist/apis/TenantsApi.js +2 -2
  11. package/dist/apis/index.d.ts +1 -0
  12. package/dist/apis/index.js +1 -0
  13. package/dist/esm/apis/DocumentsApi.d.ts +9 -0
  14. package/dist/esm/apis/DocumentsApi.js +9 -0
  15. package/dist/esm/apis/SystemJobsApi.d.ts +4 -4
  16. package/dist/esm/apis/SystemJobsApi.js +2 -2
  17. package/dist/esm/apis/TenantInvitationsApi.d.ts +67 -0
  18. package/dist/esm/apis/TenantInvitationsApi.js +75 -0
  19. package/dist/esm/apis/TenantsApi.d.ts +4 -4
  20. package/dist/esm/apis/TenantsApi.js +2 -2
  21. package/dist/esm/apis/index.d.ts +1 -0
  22. package/dist/esm/apis/index.js +1 -0
  23. package/dist/esm/models/AcceptTenantInvitationRequest.d.ts +53 -0
  24. package/dist/esm/models/AcceptTenantInvitationRequest.js +48 -0
  25. package/dist/esm/models/AcceptTenantInvitationResponse.d.ts +59 -0
  26. package/dist/esm/models/AcceptTenantInvitationResponse.js +52 -0
  27. package/dist/esm/models/ChunkMetadata.d.ts +12 -0
  28. package/dist/esm/models/ChunkMetadata.js +4 -0
  29. package/dist/esm/models/CreateUploadRequest.d.ts +18 -0
  30. package/dist/esm/models/CreateUploadRequest.js +6 -0
  31. package/dist/esm/models/DocumentVersionMetadata.d.ts +7 -0
  32. package/dist/esm/models/DocumentVersionMetadata.js +3 -0
  33. package/dist/esm/models/DocumentVersionMetadataUpdate.d.ts +7 -0
  34. package/dist/esm/models/DocumentVersionMetadataUpdate.js +3 -0
  35. package/dist/esm/models/EmailMetadata.d.ts +119 -0
  36. package/dist/esm/models/EmailMetadata.js +65 -0
  37. package/dist/esm/models/EmailParty.d.ts +53 -0
  38. package/dist/esm/models/EmailParty.js +46 -0
  39. package/dist/esm/models/EventResponse.d.ts +6 -0
  40. package/dist/esm/models/EventResponse.js +2 -0
  41. package/dist/esm/models/ImageTaxonomy.d.ts +1 -0
  42. package/dist/esm/models/ImageTaxonomy.js +1 -0
  43. package/dist/esm/models/IngestDocumentResponse.d.ts +18 -0
  44. package/dist/esm/models/IngestDocumentResponse.js +6 -0
  45. package/dist/esm/models/SegmentSpan.d.ts +9 -2
  46. package/dist/esm/models/SegmentSpan.js +2 -0
  47. package/dist/esm/models/index.d.ts +4 -0
  48. package/dist/esm/models/index.js +4 -0
  49. package/dist/models/AcceptTenantInvitationRequest.d.ts +53 -0
  50. package/dist/models/AcceptTenantInvitationRequest.js +56 -0
  51. package/dist/models/AcceptTenantInvitationResponse.d.ts +59 -0
  52. package/dist/models/AcceptTenantInvitationResponse.js +60 -0
  53. package/dist/models/ChunkMetadata.d.ts +12 -0
  54. package/dist/models/ChunkMetadata.js +4 -0
  55. package/dist/models/CreateUploadRequest.d.ts +18 -0
  56. package/dist/models/CreateUploadRequest.js +6 -0
  57. package/dist/models/DocumentVersionMetadata.d.ts +7 -0
  58. package/dist/models/DocumentVersionMetadata.js +3 -0
  59. package/dist/models/DocumentVersionMetadataUpdate.d.ts +7 -0
  60. package/dist/models/DocumentVersionMetadataUpdate.js +3 -0
  61. package/dist/models/EmailMetadata.d.ts +119 -0
  62. package/dist/models/EmailMetadata.js +73 -0
  63. package/dist/models/EmailParty.d.ts +53 -0
  64. package/dist/models/EmailParty.js +54 -0
  65. package/dist/models/EventResponse.d.ts +6 -0
  66. package/dist/models/EventResponse.js +2 -0
  67. package/dist/models/ImageTaxonomy.d.ts +1 -0
  68. package/dist/models/ImageTaxonomy.js +1 -0
  69. package/dist/models/IngestDocumentResponse.d.ts +18 -0
  70. package/dist/models/IngestDocumentResponse.js +6 -0
  71. package/dist/models/SegmentSpan.d.ts +9 -2
  72. package/dist/models/SegmentSpan.js +2 -0
  73. package/dist/models/index.d.ts +4 -0
  74. package/dist/models/index.js +4 -0
  75. package/docs/AcceptTenantInvitationRequest.md +36 -0
  76. package/docs/AcceptTenantInvitationResponse.md +38 -0
  77. package/docs/ChunkMetadata.md +4 -0
  78. package/docs/CreateUploadRequest.md +6 -0
  79. package/docs/DocumentVersionMetadata.md +2 -0
  80. package/docs/DocumentVersionMetadataUpdate.md +2 -0
  81. package/docs/DocumentsApi.md +13 -4
  82. package/docs/EmailMetadata.md +57 -0
  83. package/docs/EmailParty.md +37 -0
  84. package/docs/EventResponse.md +2 -0
  85. package/docs/IngestDocumentResponse.md +6 -0
  86. package/docs/SegmentSpan.md +3 -1
  87. package/docs/SystemJobsApi.md +1 -1
  88. package/docs/TenantInvitationsApi.md +85 -0
  89. package/docs/TenantsApi.md +1 -1
  90. package/package.json +1 -1
  91. package/src/apis/DocumentsApi.ts +21 -0
  92. package/src/apis/SystemJobsApi.ts +4 -4
  93. package/src/apis/TenantInvitationsApi.ts +136 -0
  94. package/src/apis/TenantsApi.ts +4 -4
  95. package/src/apis/index.ts +1 -0
  96. package/src/models/AcceptTenantInvitationRequest.ts +93 -0
  97. package/src/models/AcceptTenantInvitationResponse.ts +101 -0
  98. package/src/models/ChunkMetadata.ts +16 -0
  99. package/src/models/CreateUploadRequest.ts +24 -0
  100. package/src/models/DocumentVersionMetadata.ts +15 -0
  101. package/src/models/DocumentVersionMetadataUpdate.ts +15 -0
  102. package/src/models/EmailMetadata.ts +183 -0
  103. package/src/models/EmailParty.ts +91 -0
  104. package/src/models/EventResponse.ts +8 -0
  105. package/src/models/ImageTaxonomy.ts +1 -0
  106. package/src/models/IngestDocumentResponse.ts +24 -0
  107. package/src/models/SegmentSpan.ts +11 -2
  108. package/src/models/index.ts +4 -0
@@ -180,7 +180,7 @@ export interface SystemJobsApiInterface {
180
180
  getZipIngestionStatusRequestOpts(requestParameters: GetZipIngestionStatusRequest): Promise<runtime.RequestOpts>;
181
181
 
182
182
  /**
183
- * 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.
183
+ * Get a fan-out\'s live status + per-member outcomes. Serves both container fan-outs: a ZIP archive\'s members and an email\'s attachments. Both expose the same ``results`` query, so one endpoint covers them rather than duplicating the tenant check and hydration. 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.
184
184
  * @summary Get Zip Ingestion Status Handler
185
185
  * @param {string} workflowId
186
186
  * @param {*} [options] Override http request option.
@@ -190,7 +190,7 @@ export interface SystemJobsApiInterface {
190
190
  getZipIngestionStatusRaw(requestParameters: GetZipIngestionStatusRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ZipIngestionStatusResponse>>;
191
191
 
192
192
  /**
193
- * 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.
193
+ * Get a fan-out\'s live status + per-member outcomes. Serves both container fan-outs: a ZIP archive\'s members and an email\'s attachments. Both expose the same ``results`` query, so one endpoint covers them rather than duplicating the tenant check and hydration. 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.
194
194
  * Get Zip Ingestion Status Handler
195
195
  */
196
196
  getZipIngestionStatus(requestParameters: GetZipIngestionStatusRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ZipIngestionStatusResponse>;
@@ -484,7 +484,7 @@ export class SystemJobsApi extends runtime.BaseAPI implements SystemJobsApiInter
484
484
  }
485
485
 
486
486
  /**
487
- * 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.
487
+ * Get a fan-out\'s live status + per-member outcomes. Serves both container fan-outs: a ZIP archive\'s members and an email\'s attachments. Both expose the same ``results`` query, so one endpoint covers them rather than duplicating the tenant check and hydration. 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.
488
488
  * Get Zip Ingestion Status Handler
489
489
  */
490
490
  async getZipIngestionStatusRaw(requestParameters: GetZipIngestionStatusRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ZipIngestionStatusResponse>> {
@@ -495,7 +495,7 @@ export class SystemJobsApi extends runtime.BaseAPI implements SystemJobsApiInter
495
495
  }
496
496
 
497
497
  /**
498
- * 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.
498
+ * Get a fan-out\'s live status + per-member outcomes. Serves both container fan-outs: a ZIP archive\'s members and an email\'s attachments. Both expose the same ``results`` query, so one endpoint covers them rather than duplicating the tenant check and hydration. 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.
499
499
  * Get Zip Ingestion Status Handler
500
500
  */
501
501
  async getZipIngestionStatus(requestParameters: GetZipIngestionStatusRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ZipIngestionStatusResponse> {
@@ -0,0 +1,136 @@
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
+
15
+
16
+ import * as runtime from '../runtime';
17
+ import type {
18
+ AcceptTenantInvitationRequest,
19
+ AcceptTenantInvitationResponse,
20
+ ErrorResponse,
21
+ HTTPValidationError,
22
+ } from '../models/index';
23
+ import {
24
+ AcceptTenantInvitationRequestFromJSON,
25
+ AcceptTenantInvitationRequestToJSON,
26
+ AcceptTenantInvitationResponseFromJSON,
27
+ AcceptTenantInvitationResponseToJSON,
28
+ ErrorResponseFromJSON,
29
+ ErrorResponseToJSON,
30
+ HTTPValidationErrorFromJSON,
31
+ HTTPValidationErrorToJSON,
32
+ } from '../models/index';
33
+
34
+ export interface AcceptTenantInvitationOperationRequest {
35
+ invitationId: string;
36
+ acceptTenantInvitationRequest: AcceptTenantInvitationRequest;
37
+ }
38
+
39
+ /**
40
+ * TenantInvitationsApi - interface
41
+ *
42
+ * @export
43
+ * @interface TenantInvitationsApiInterface
44
+ */
45
+ export interface TenantInvitationsApiInterface {
46
+ /**
47
+ * Creates request options for acceptTenantInvitation without sending the request
48
+ * @param {string} invitationId
49
+ * @param {AcceptTenantInvitationRequest} acceptTenantInvitationRequest
50
+ * @throws {RequiredError}
51
+ * @memberof TenantInvitationsApiInterface
52
+ */
53
+ acceptTenantInvitationRequestOpts(requestParameters: AcceptTenantInvitationOperationRequest): Promise<runtime.RequestOpts>;
54
+
55
+ /**
56
+ * Accept an invitation, creating the customer tenant and its OWNER. New owner: supply ``password`` — the account is created and signed in. Existing owner: accept while signed in as ``owner_email`` (no password).
57
+ * @summary Accept Tenant Invitation Handler
58
+ * @param {string} invitationId
59
+ * @param {AcceptTenantInvitationRequest} acceptTenantInvitationRequest
60
+ * @param {*} [options] Override http request option.
61
+ * @throws {RequiredError}
62
+ * @memberof TenantInvitationsApiInterface
63
+ */
64
+ acceptTenantInvitationRaw(requestParameters: AcceptTenantInvitationOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AcceptTenantInvitationResponse>>;
65
+
66
+ /**
67
+ * Accept an invitation, creating the customer tenant and its OWNER. New owner: supply ``password`` — the account is created and signed in. Existing owner: accept while signed in as ``owner_email`` (no password).
68
+ * Accept Tenant Invitation Handler
69
+ */
70
+ acceptTenantInvitation(requestParameters: AcceptTenantInvitationOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AcceptTenantInvitationResponse>;
71
+
72
+ }
73
+
74
+ /**
75
+ *
76
+ */
77
+ export class TenantInvitationsApi extends runtime.BaseAPI implements TenantInvitationsApiInterface {
78
+
79
+ /**
80
+ * Creates request options for acceptTenantInvitation without sending the request
81
+ */
82
+ async acceptTenantInvitationRequestOpts(requestParameters: AcceptTenantInvitationOperationRequest): Promise<runtime.RequestOpts> {
83
+ if (requestParameters['invitationId'] == null) {
84
+ throw new runtime.RequiredError(
85
+ 'invitationId',
86
+ 'Required parameter "invitationId" was null or undefined when calling acceptTenantInvitation().'
87
+ );
88
+ }
89
+
90
+ if (requestParameters['acceptTenantInvitationRequest'] == null) {
91
+ throw new runtime.RequiredError(
92
+ 'acceptTenantInvitationRequest',
93
+ 'Required parameter "acceptTenantInvitationRequest" was null or undefined when calling acceptTenantInvitation().'
94
+ );
95
+ }
96
+
97
+ const queryParameters: any = {};
98
+
99
+ const headerParameters: runtime.HTTPHeaders = {};
100
+
101
+ headerParameters['Content-Type'] = 'application/json';
102
+
103
+
104
+ let urlPath = `/v1/tenant-invitations/{invitation_id}/accept`;
105
+ urlPath = urlPath.replace(`{${"invitation_id"}}`, encodeURIComponent(String(requestParameters['invitationId'])));
106
+
107
+ return {
108
+ path: urlPath,
109
+ method: 'POST',
110
+ headers: headerParameters,
111
+ query: queryParameters,
112
+ body: AcceptTenantInvitationRequestToJSON(requestParameters['acceptTenantInvitationRequest']),
113
+ };
114
+ }
115
+
116
+ /**
117
+ * Accept an invitation, creating the customer tenant and its OWNER. New owner: supply ``password`` — the account is created and signed in. Existing owner: accept while signed in as ``owner_email`` (no password).
118
+ * Accept Tenant Invitation Handler
119
+ */
120
+ async acceptTenantInvitationRaw(requestParameters: AcceptTenantInvitationOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AcceptTenantInvitationResponse>> {
121
+ const requestOptions = await this.acceptTenantInvitationRequestOpts(requestParameters);
122
+ const response = await this.request(requestOptions, initOverrides);
123
+
124
+ return new runtime.JSONApiResponse(response, (jsonValue) => AcceptTenantInvitationResponseFromJSON(jsonValue));
125
+ }
126
+
127
+ /**
128
+ * Accept an invitation, creating the customer tenant and its OWNER. New owner: supply ``password`` — the account is created and signed in. Existing owner: accept while signed in as ``owner_email`` (no password).
129
+ * Accept Tenant Invitation Handler
130
+ */
131
+ async acceptTenantInvitation(requestParameters: AcceptTenantInvitationOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AcceptTenantInvitationResponse> {
132
+ const response = await this.acceptTenantInvitationRaw(requestParameters, initOverrides);
133
+ return await response.value();
134
+ }
135
+
136
+ }
@@ -191,7 +191,7 @@ export interface TenantsApiInterface {
191
191
  deleteTenantRequestOpts(requestParameters: DeleteTenantRequest): Promise<runtime.RequestOpts>;
192
192
 
193
193
  /**
194
- * Delete a tenant. Requires OWNER role in the tenant. Refused (409) while a provider-billed subscription is live — deleting the tenant would not stop Stripe/Ping++ from charging for it; the OWNER must downgrade to free (or let the prepay period expire) first. Deletes the tenant\'s LiteLLM team/keys and S3 bucket after the DB transaction commits.
194
+ * Delete a tenant. Requires OWNER role in the tenant. Refused (409) while a provider-billed subscription is live — deleting the tenant would not stop Stripe/Ping++ from charging for it; the OWNER must downgrade to free (or let the prepay period expire) first. Deletes the tenant\'s LiteLLM team/keys, S3 bucket, and Qdrant vectors after the DB transaction commits.
195
195
  * @summary Delete Tenant
196
196
  * @param {string} tenantId
197
197
  * @param {*} [options] Override http request option.
@@ -201,7 +201,7 @@ export interface TenantsApiInterface {
201
201
  deleteTenantRaw(requestParameters: DeleteTenantRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>>;
202
202
 
203
203
  /**
204
- * Delete a tenant. Requires OWNER role in the tenant. Refused (409) while a provider-billed subscription is live — deleting the tenant would not stop Stripe/Ping++ from charging for it; the OWNER must downgrade to free (or let the prepay period expire) first. Deletes the tenant\'s LiteLLM team/keys and S3 bucket after the DB transaction commits.
204
+ * Delete a tenant. Requires OWNER role in the tenant. Refused (409) while a provider-billed subscription is live — deleting the tenant would not stop Stripe/Ping++ from charging for it; the OWNER must downgrade to free (or let the prepay period expire) first. Deletes the tenant\'s LiteLLM team/keys, S3 bucket, and Qdrant vectors after the DB transaction commits.
205
205
  * Delete Tenant
206
206
  */
207
207
  deleteTenant(requestParameters: DeleteTenantRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void>;
@@ -621,7 +621,7 @@ export class TenantsApi extends runtime.BaseAPI implements TenantsApiInterface {
621
621
  }
622
622
 
623
623
  /**
624
- * Delete a tenant. Requires OWNER role in the tenant. Refused (409) while a provider-billed subscription is live — deleting the tenant would not stop Stripe/Ping++ from charging for it; the OWNER must downgrade to free (or let the prepay period expire) first. Deletes the tenant\'s LiteLLM team/keys and S3 bucket after the DB transaction commits.
624
+ * Delete a tenant. Requires OWNER role in the tenant. Refused (409) while a provider-billed subscription is live — deleting the tenant would not stop Stripe/Ping++ from charging for it; the OWNER must downgrade to free (or let the prepay period expire) first. Deletes the tenant\'s LiteLLM team/keys, S3 bucket, and Qdrant vectors after the DB transaction commits.
625
625
  * Delete Tenant
626
626
  */
627
627
  async deleteTenantRaw(requestParameters: DeleteTenantRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
@@ -632,7 +632,7 @@ export class TenantsApi extends runtime.BaseAPI implements TenantsApiInterface {
632
632
  }
633
633
 
634
634
  /**
635
- * Delete a tenant. Requires OWNER role in the tenant. Refused (409) while a provider-billed subscription is live — deleting the tenant would not stop Stripe/Ping++ from charging for it; the OWNER must downgrade to free (or let the prepay period expire) first. Deletes the tenant\'s LiteLLM team/keys and S3 bucket after the DB transaction commits.
635
+ * Delete a tenant. Requires OWNER role in the tenant. Refused (409) while a provider-billed subscription is live — deleting the tenant would not stop Stripe/Ping++ from charging for it; the OWNER must downgrade to free (or let the prepay period expire) first. Deletes the tenant\'s LiteLLM team/keys, S3 bucket, and Qdrant vectors after the DB transaction commits.
636
636
  * Delete Tenant
637
637
  */
638
638
  async deleteTenant(requestParameters: DeleteTenantRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
package/src/apis/index.ts CHANGED
@@ -32,6 +32,7 @@ export * from './SubscriptionsApi';
32
32
  export * from './SystemJobsApi';
33
33
  export * from './TagsApi';
34
34
  export * from './TenantGroupsApi';
35
+ export * from './TenantInvitationsApi';
35
36
  export * from './TenantsApi';
36
37
  export * from './ThreadMessagesApi';
37
38
  export * from './ThreadsApi';
@@ -0,0 +1,93 @@
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
+
15
+ import { mapValues } from '../runtime';
16
+ /**
17
+ *
18
+ * @export
19
+ * @interface AcceptTenantInvitationRequest
20
+ */
21
+ export interface AcceptTenantInvitationRequest {
22
+ /**
23
+ * Required only when the owner has no existing KS account.
24
+ * @type {string}
25
+ * @memberof AcceptTenantInvitationRequest
26
+ */
27
+ password?: string | null;
28
+ /**
29
+ *
30
+ * @type {string}
31
+ * @memberof AcceptTenantInvitationRequest
32
+ */
33
+ firstName?: string | null;
34
+ }
35
+ export const AcceptTenantInvitationRequestPropertyValidationAttributesMap: {
36
+ [property: string]: {
37
+ maxLength?: number,
38
+ minLength?: number,
39
+ pattern?: string,
40
+ maximum?: number,
41
+ exclusiveMaximum?: boolean,
42
+ minimum?: number,
43
+ exclusiveMinimum?: boolean,
44
+ multipleOf?: number,
45
+ maxItems?: number,
46
+ minItems?: number,
47
+ uniqueItems?: boolean
48
+ }
49
+ } = {
50
+ password: {
51
+ minLength: 8,
52
+ },
53
+ }
54
+
55
+
56
+ /**
57
+ * Check if a given object implements the AcceptTenantInvitationRequest interface.
58
+ */
59
+ export function instanceOfAcceptTenantInvitationRequest(value: object): value is AcceptTenantInvitationRequest {
60
+ return true;
61
+ }
62
+
63
+ export function AcceptTenantInvitationRequestFromJSON(json: any): AcceptTenantInvitationRequest {
64
+ return AcceptTenantInvitationRequestFromJSONTyped(json, false);
65
+ }
66
+
67
+ export function AcceptTenantInvitationRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): AcceptTenantInvitationRequest {
68
+ if (json == null) {
69
+ return json;
70
+ }
71
+ return {
72
+
73
+ 'password': json['password'] == null ? undefined : json['password'],
74
+ 'firstName': json['first_name'] == null ? undefined : json['first_name'],
75
+ };
76
+ }
77
+
78
+ export function AcceptTenantInvitationRequestToJSON(json: any): AcceptTenantInvitationRequest {
79
+ return AcceptTenantInvitationRequestToJSONTyped(json, false);
80
+ }
81
+
82
+ export function AcceptTenantInvitationRequestToJSONTyped(value?: AcceptTenantInvitationRequest | null, ignoreDiscriminator: boolean = false): any {
83
+ if (value == null) {
84
+ return value;
85
+ }
86
+
87
+ return {
88
+
89
+ 'password': value['password'],
90
+ 'first_name': value['firstName'],
91
+ };
92
+ }
93
+
@@ -0,0 +1,101 @@
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
+
15
+ import { mapValues } from '../runtime';
16
+ /**
17
+ *
18
+ * @export
19
+ * @interface AcceptTenantInvitationResponse
20
+ */
21
+ export interface AcceptTenantInvitationResponse {
22
+ /**
23
+ *
24
+ * @type {string}
25
+ * @memberof AcceptTenantInvitationResponse
26
+ */
27
+ tenantId: string;
28
+ /**
29
+ *
30
+ * @type {string}
31
+ * @memberof AcceptTenantInvitationResponse
32
+ */
33
+ tenantName: string;
34
+ /**
35
+ *
36
+ * @type {string}
37
+ * @memberof AcceptTenantInvitationResponse
38
+ */
39
+ userId: string;
40
+ }
41
+ export const AcceptTenantInvitationResponsePropertyValidationAttributesMap: {
42
+ [property: string]: {
43
+ maxLength?: number,
44
+ minLength?: number,
45
+ pattern?: string,
46
+ maximum?: number,
47
+ exclusiveMaximum?: boolean,
48
+ minimum?: number,
49
+ exclusiveMinimum?: boolean,
50
+ multipleOf?: number,
51
+ maxItems?: number,
52
+ minItems?: number,
53
+ uniqueItems?: boolean
54
+ }
55
+ } = {
56
+ }
57
+
58
+
59
+ /**
60
+ * Check if a given object implements the AcceptTenantInvitationResponse interface.
61
+ */
62
+ export function instanceOfAcceptTenantInvitationResponse(value: object): value is AcceptTenantInvitationResponse {
63
+ if (!('tenantId' in value) || value['tenantId'] === undefined) return false;
64
+ if (!('tenantName' in value) || value['tenantName'] === undefined) return false;
65
+ if (!('userId' in value) || value['userId'] === undefined) return false;
66
+ return true;
67
+ }
68
+
69
+ export function AcceptTenantInvitationResponseFromJSON(json: any): AcceptTenantInvitationResponse {
70
+ return AcceptTenantInvitationResponseFromJSONTyped(json, false);
71
+ }
72
+
73
+ export function AcceptTenantInvitationResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): AcceptTenantInvitationResponse {
74
+ if (json == null) {
75
+ return json;
76
+ }
77
+ return {
78
+
79
+ 'tenantId': json['tenant_id'],
80
+ 'tenantName': json['tenant_name'],
81
+ 'userId': json['user_id'],
82
+ };
83
+ }
84
+
85
+ export function AcceptTenantInvitationResponseToJSON(json: any): AcceptTenantInvitationResponse {
86
+ return AcceptTenantInvitationResponseToJSONTyped(json, false);
87
+ }
88
+
89
+ export function AcceptTenantInvitationResponseToJSONTyped(value?: AcceptTenantInvitationResponse | null, ignoreDiscriminator: boolean = false): any {
90
+ if (value == null) {
91
+ return value;
92
+ }
93
+
94
+ return {
95
+
96
+ 'tenant_id': value['tenantId'],
97
+ 'tenant_name': value['tenantName'],
98
+ 'user_id': value['userId'],
99
+ };
100
+ }
101
+
@@ -89,6 +89,18 @@ export interface ChunkMetadata {
89
89
  * @memberof ChunkMetadata
90
90
  */
91
91
  endMs?: number | null;
92
+ /**
93
+ * Every speaker label appearing in this chunk's segments, sorted. Lets a citation say which turn it came from. None when the provider does not diarize.
94
+ * @type {Array<number>}
95
+ * @memberof ChunkMetadata
96
+ */
97
+ speakers?: Array<number> | null;
98
+ /**
99
+ * Every language the ASR recognised across this chunk's segments, sorted. A meeting routinely code-switches, so a chunk can hold more than one; the document-level language is only the majority label and misreports a bilingual recording. None for non-media chunks and for media ingested before this field existed.
100
+ * @type {Array<string>}
101
+ * @memberof ChunkMetadata
102
+ */
103
+ languages?: Array<string> | null;
92
104
  /**
93
105
  * Per-ASR-segment spans inside this media chunk, in order, each carrying its char offset in the chunk content. Lets citation resolution narrow a chunk-level timeframe to the enclosing segment. None for non-media chunks and media ingested before this field existed.
94
106
  * @type {Array<SegmentSpan>}
@@ -195,6 +207,8 @@ export function ChunkMetadataFromJSONTyped(json: any, ignoreDiscriminator: boole
195
207
  'secondaryTaxonomy': json['secondary_taxonomy'] == null ? undefined : ImageTaxonomyFromJSON(json['secondary_taxonomy']),
196
208
  'startMs': json['start_ms'] == null ? undefined : json['start_ms'],
197
209
  'endMs': json['end_ms'] == null ? undefined : json['end_ms'],
210
+ 'speakers': json['speakers'] == null ? undefined : json['speakers'],
211
+ 'languages': json['languages'] == null ? undefined : json['languages'],
198
212
  'segments': json['segments'] == null ? undefined : ((json['segments'] as Array<any>).map(SegmentSpanFromJSON)),
199
213
  'sheetName': json['sheet_name'] == null ? undefined : json['sheet_name'],
200
214
  'blockType': json['block_type'] == null ? undefined : json['block_type'],
@@ -227,6 +241,8 @@ export function ChunkMetadataToJSONTyped(value?: ChunkMetadata | null, ignoreDis
227
241
  'secondary_taxonomy': ImageTaxonomyToJSON(value['secondaryTaxonomy']),
228
242
  'start_ms': value['startMs'],
229
243
  'end_ms': value['endMs'],
244
+ 'speakers': value['speakers'],
245
+ 'languages': value['languages'],
230
246
  'segments': value['segments'] == null ? undefined : ((value['segments'] as Array<any>).map(SegmentSpanToJSON)),
231
247
  'sheet_name': value['sheetName'],
232
248
  'block_type': value['blockType'],
@@ -49,6 +49,24 @@ export interface CreateUploadRequest {
49
49
  * @memberof CreateUploadRequest
50
50
  */
51
51
  tagIds?: Array<string>;
52
+ /**
53
+ * Workflow run this upload belongs to; attributes the resulting document to the run in the audit log. Must be sent together with workflow_definition_id, and only by an assumed identity.
54
+ * @type {string}
55
+ * @memberof CreateUploadRequest
56
+ */
57
+ workflowRunId?: string | null;
58
+ /**
59
+ * Workflow definition for workflow_run_id.
60
+ * @type {string}
61
+ * @memberof CreateUploadRequest
62
+ */
63
+ workflowDefinitionId?: string | null;
64
+ /**
65
+ * Replay key for callers that retry (e.g. the ZIP fan-out); completing twice with the same key replays the existing document instead of creating a duplicate.
66
+ * @type {string}
67
+ * @memberof CreateUploadRequest
68
+ */
69
+ idempotencyKey?: string | null;
52
70
  }
53
71
  export const CreateUploadRequestPropertyValidationAttributesMap: {
54
72
  [property: string]: {
@@ -94,6 +112,9 @@ export function CreateUploadRequestFromJSONTyped(json: any, ignoreDiscriminator:
94
112
  'filename': json['filename'],
95
113
  'sizeBytes': json['size_bytes'],
96
114
  'tagIds': json['tag_ids'] == null ? undefined : json['tag_ids'],
115
+ 'workflowRunId': json['workflow_run_id'] == null ? undefined : json['workflow_run_id'],
116
+ 'workflowDefinitionId': json['workflow_definition_id'] == null ? undefined : json['workflow_definition_id'],
117
+ 'idempotencyKey': json['idempotency_key'] == null ? undefined : json['idempotency_key'],
97
118
  };
98
119
  }
99
120
 
@@ -113,6 +134,9 @@ export function CreateUploadRequestToJSONTyped(value?: CreateUploadRequest | nul
113
134
  'filename': value['filename'],
114
135
  'size_bytes': value['sizeBytes'],
115
136
  'tag_ids': value['tagIds'],
137
+ 'workflow_run_id': value['workflowRunId'],
138
+ 'workflow_definition_id': value['workflowDefinitionId'],
139
+ 'idempotency_key': value['idempotencyKey'],
116
140
  };
117
141
  }
118
142
 
@@ -34,6 +34,13 @@ import {
34
34
  InformationStatisticsToJSON,
35
35
  InformationStatisticsToJSONTyped,
36
36
  } from './InformationStatistics';
37
+ import type { EmailMetadata } from './EmailMetadata';
38
+ import {
39
+ EmailMetadataFromJSON,
40
+ EmailMetadataFromJSONTyped,
41
+ EmailMetadataToJSON,
42
+ EmailMetadataToJSONTyped,
43
+ } from './EmailMetadata';
37
44
 
38
45
  /**
39
46
  * Schema for document_version.system_metadata JSONB field.
@@ -134,6 +141,12 @@ export interface DocumentVersionMetadata {
134
141
  * @memberof DocumentVersionMetadata
135
142
  */
136
143
  segmentCount?: number | null;
144
+ /**
145
+ * Structured email headers; null for non-email documents
146
+ * @type {EmailMetadata}
147
+ * @memberof DocumentVersionMetadata
148
+ */
149
+ email?: EmailMetadata | null;
137
150
  /**
138
151
  * Total formula cells in the workbook (XLSX only)
139
152
  * @type {number}
@@ -256,6 +269,7 @@ export function DocumentVersionMetadataFromJSONTyped(json: any, ignoreDiscrimina
256
269
  'durationMs': json['duration_ms'] == null ? undefined : json['duration_ms'],
257
270
  'language': json['language'] == null ? undefined : json['language'],
258
271
  'segmentCount': json['segment_count'] == null ? undefined : json['segment_count'],
272
+ 'email': json['email'] == null ? undefined : EmailMetadataFromJSON(json['email']),
259
273
  'totalFormulas': json['total_formulas'] == null ? undefined : json['total_formulas'],
260
274
  'xlsxParseResultS3': json['xlsx_parse_result_s3'] == null ? undefined : json['xlsx_parse_result_s3'],
261
275
  'xlsxNamedRanges': json['xlsx_named_ranges'] == null ? undefined : json['xlsx_named_ranges'],
@@ -296,6 +310,7 @@ export function DocumentVersionMetadataToJSONTyped(value?: DocumentVersionMetada
296
310
  'duration_ms': value['durationMs'],
297
311
  'language': value['language'],
298
312
  'segment_count': value['segmentCount'],
313
+ 'email': EmailMetadataToJSON(value['email']),
299
314
  'total_formulas': value['totalFormulas'],
300
315
  'xlsx_parse_result_s3': value['xlsxParseResultS3'],
301
316
  'xlsx_named_ranges': value['xlsxNamedRanges'],
@@ -34,6 +34,13 @@ import {
34
34
  InformationStatisticsToJSON,
35
35
  InformationStatisticsToJSONTyped,
36
36
  } from './InformationStatistics';
37
+ import type { EmailMetadata } from './EmailMetadata';
38
+ import {
39
+ EmailMetadataFromJSON,
40
+ EmailMetadataFromJSONTyped,
41
+ EmailMetadataToJSON,
42
+ EmailMetadataToJSONTyped,
43
+ } from './EmailMetadata';
37
44
 
38
45
  /**
39
46
  * Partial update schema for document version metadata.
@@ -146,6 +153,12 @@ export interface DocumentVersionMetadataUpdate {
146
153
  * @memberof DocumentVersionMetadataUpdate
147
154
  */
148
155
  segmentCount?: number | null;
156
+ /**
157
+ *
158
+ * @type {EmailMetadata}
159
+ * @memberof DocumentVersionMetadataUpdate
160
+ */
161
+ email?: EmailMetadata | null;
149
162
  /**
150
163
  *
151
164
  * @type {number}
@@ -265,6 +278,7 @@ export function DocumentVersionMetadataUpdateFromJSONTyped(json: any, ignoreDisc
265
278
  'durationMs': json['duration_ms'] == null ? undefined : json['duration_ms'],
266
279
  'language': json['language'] == null ? undefined : json['language'],
267
280
  'segmentCount': json['segment_count'] == null ? undefined : json['segment_count'],
281
+ 'email': json['email'] == null ? undefined : EmailMetadataFromJSON(json['email']),
268
282
  'totalFormulas': json['total_formulas'] == null ? undefined : json['total_formulas'],
269
283
  'xlsxParseResultS3': json['xlsx_parse_result_s3'] == null ? undefined : json['xlsx_parse_result_s3'],
270
284
  'xlsxNamedRanges': json['xlsx_named_ranges'] == null ? undefined : json['xlsx_named_ranges'],
@@ -307,6 +321,7 @@ export function DocumentVersionMetadataUpdateToJSONTyped(value?: DocumentVersion
307
321
  'duration_ms': value['durationMs'],
308
322
  'language': value['language'],
309
323
  'segment_count': value['segmentCount'],
324
+ 'email': EmailMetadataToJSON(value['email']),
310
325
  'total_formulas': value['totalFormulas'],
311
326
  'xlsx_parse_result_s3': value['xlsxParseResultS3'],
312
327
  'xlsx_named_ranges': value['xlsxNamedRanges'],