@docrouter/sdk 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +68 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/index.d.mts +287 -169
- package/dist/index.d.ts +287 -169
- package/dist/index.js +103 -82
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +103 -82
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -263,7 +263,8 @@ var DocRouterAccount = class {
|
|
|
263
263
|
return this.http.post(`/v0/orgs/${organizationId}/access_tokens`, request);
|
|
264
264
|
}
|
|
265
265
|
async getOrganizationTokens(organizationId) {
|
|
266
|
-
|
|
266
|
+
const resp = await this.http.get(`/v0/orgs/${organizationId}/access_tokens`);
|
|
267
|
+
return Array.isArray(resp) ? resp : resp.access_tokens;
|
|
267
268
|
}
|
|
268
269
|
async deleteOrganizationToken(tokenId, organizationId) {
|
|
269
270
|
return this.http.delete(`/v0/orgs/${organizationId}/access_tokens/${tokenId}`);
|
|
@@ -296,22 +297,13 @@ var DocRouterAccount = class {
|
|
|
296
297
|
}
|
|
297
298
|
async getUser(userId) {
|
|
298
299
|
const response = await this.listUsers({ user_id: userId });
|
|
299
|
-
|
|
300
|
-
return { user };
|
|
300
|
+
return response.users[0];
|
|
301
301
|
}
|
|
302
302
|
async createUser(user) {
|
|
303
|
-
|
|
304
|
-
"/v0/account/users",
|
|
305
|
-
user
|
|
306
|
-
);
|
|
307
|
-
return created.user ? created : { user: created };
|
|
303
|
+
return this.http.post("/v0/account/users", user);
|
|
308
304
|
}
|
|
309
305
|
async updateUser(userId, update) {
|
|
310
|
-
|
|
311
|
-
`/v0/account/users/${userId}`,
|
|
312
|
-
update
|
|
313
|
-
);
|
|
314
|
-
return updated.user ? updated : { user: updated };
|
|
306
|
+
return this.http.put(`/v0/account/users/${userId}`, update);
|
|
315
307
|
}
|
|
316
308
|
async deleteUser(userId) {
|
|
317
309
|
await this.http.delete(`/v0/account/users/${userId}`);
|
|
@@ -336,6 +328,69 @@ var DocRouterAccount = class {
|
|
|
336
328
|
async deleteAWSConfig() {
|
|
337
329
|
return this.http.delete("/v0/account/aws_config");
|
|
338
330
|
}
|
|
331
|
+
// --------------- Invitations ---------------
|
|
332
|
+
async createInvitation(invitation) {
|
|
333
|
+
return this.http.post("/v0/account/email/invitations", invitation);
|
|
334
|
+
}
|
|
335
|
+
async getInvitations(params) {
|
|
336
|
+
const queryParams = new URLSearchParams();
|
|
337
|
+
if (params?.skip !== void 0) queryParams.append("skip", String(params.skip));
|
|
338
|
+
if (params?.limit !== void 0) queryParams.append("limit", String(params.limit));
|
|
339
|
+
return this.http.get(`/v0/account/email/invitations?${queryParams.toString()}`);
|
|
340
|
+
}
|
|
341
|
+
async getInvitation(token) {
|
|
342
|
+
return this.http.get(`/v0/account/email/invitations/${token}`);
|
|
343
|
+
}
|
|
344
|
+
async acceptInvitation(token, data) {
|
|
345
|
+
return this.http.post(`/v0/account/email/invitations/${token}/accept`, data);
|
|
346
|
+
}
|
|
347
|
+
// --------------- Payments & Subscriptions ---------------
|
|
348
|
+
async getCustomerPortal(orgId) {
|
|
349
|
+
return this.http.post(`/v0/orgs/${orgId}/payments/customer-portal`);
|
|
350
|
+
}
|
|
351
|
+
async getSubscription(orgId) {
|
|
352
|
+
return this.http.get(`/v0/orgs/${orgId}/payments/subscription`);
|
|
353
|
+
}
|
|
354
|
+
async activateSubscription(orgId) {
|
|
355
|
+
return this.http.put(`/v0/orgs/${orgId}/payments/subscription`);
|
|
356
|
+
}
|
|
357
|
+
async cancelSubscription(orgId) {
|
|
358
|
+
return this.http.delete(`/v0/orgs/${orgId}/payments/subscription`);
|
|
359
|
+
}
|
|
360
|
+
async getCurrentUsage(orgId) {
|
|
361
|
+
return this.http.get(`/v0/orgs/${orgId}/payments/usage`);
|
|
362
|
+
}
|
|
363
|
+
async addCredits(orgId, amount) {
|
|
364
|
+
return this.http.post(`/v0/orgs/${orgId}/payments/credits/add`, { amount });
|
|
365
|
+
}
|
|
366
|
+
async getCreditConfig(orgId) {
|
|
367
|
+
return this.http.get(`/v0/orgs/${orgId}/payments/credits/config`);
|
|
368
|
+
}
|
|
369
|
+
async purchaseCredits(orgId, request) {
|
|
370
|
+
return this.http.post(`/v0/orgs/${orgId}/payments/credits/purchase`, request);
|
|
371
|
+
}
|
|
372
|
+
async getUsageRange(orgId, request) {
|
|
373
|
+
const queryParams = new URLSearchParams();
|
|
374
|
+
if (request.start_date) queryParams.append("start_date", request.start_date);
|
|
375
|
+
if (request.end_date) queryParams.append("end_date", request.end_date);
|
|
376
|
+
return this.http.get(`/v0/orgs/${orgId}/payments/usage/range?${queryParams.toString()}`);
|
|
377
|
+
}
|
|
378
|
+
async createCheckoutSession(orgId, planId) {
|
|
379
|
+
return this.http.post(`/v0/orgs/${orgId}/payments/checkout-session`, { plan_id: planId });
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Run LLM chat (account level)
|
|
383
|
+
*/
|
|
384
|
+
async runLLMChat(request) {
|
|
385
|
+
return this.http.post("/v0/account/llm/run", request);
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Run LLM chat with streaming (account level)
|
|
389
|
+
*/
|
|
390
|
+
async runLLMChatStream(request, onChunk, onError, abortSignal) {
|
|
391
|
+
const streamingRequest = { ...request, stream: true };
|
|
392
|
+
return this.http.stream("/v0/account/llm/run", streamingRequest, onChunk, onError, abortSignal);
|
|
393
|
+
}
|
|
339
394
|
/**
|
|
340
395
|
* Get the current HTTP client (for advanced usage)
|
|
341
396
|
*/
|
|
@@ -366,24 +421,16 @@ var DocRouterOrg = class {
|
|
|
366
421
|
async uploadDocuments(params) {
|
|
367
422
|
const documentsPayload = params.documents.map((doc) => {
|
|
368
423
|
let base64Content;
|
|
369
|
-
if (doc.content
|
|
370
|
-
|
|
371
|
-
base64Content = buffer.toString("base64");
|
|
372
|
-
} else if (doc.content instanceof Buffer) {
|
|
373
|
-
base64Content = doc.content.toString("base64");
|
|
374
|
-
} else if (doc.content instanceof Uint8Array) {
|
|
375
|
-
const buffer = Buffer.from(doc.content);
|
|
376
|
-
base64Content = buffer.toString("base64");
|
|
424
|
+
if (doc.content.startsWith("data:")) {
|
|
425
|
+
base64Content = doc.content.split(",")[1];
|
|
377
426
|
} else {
|
|
378
|
-
|
|
379
|
-
const buffer = Buffer.from(uint8Array);
|
|
380
|
-
base64Content = buffer.toString("base64");
|
|
427
|
+
base64Content = doc.content;
|
|
381
428
|
}
|
|
382
429
|
const payload = {
|
|
383
430
|
name: doc.name,
|
|
384
|
-
content: base64Content
|
|
385
|
-
type: doc.type
|
|
431
|
+
content: base64Content
|
|
386
432
|
};
|
|
433
|
+
if (doc.tag_ids && doc.tag_ids.length > 0) payload.tag_ids = doc.tag_ids;
|
|
387
434
|
if (doc.metadata) payload.metadata = doc.metadata;
|
|
388
435
|
return payload;
|
|
389
436
|
});
|
|
@@ -479,10 +526,7 @@ var DocRouterOrg = class {
|
|
|
479
526
|
{ updated_llm_result: result, is_verified: isVerified },
|
|
480
527
|
{ params: { prompt_revid: promptId } }
|
|
481
528
|
);
|
|
482
|
-
|
|
483
|
-
throw new Error(`Failed to update LLM result for document ${documentId} and prompt ${promptId}: ${response.data}`);
|
|
484
|
-
}
|
|
485
|
-
return response.data;
|
|
529
|
+
return response;
|
|
486
530
|
}
|
|
487
531
|
async deleteLLMResult(params) {
|
|
488
532
|
const { documentId, promptId } = params;
|
|
@@ -498,6 +542,35 @@ var DocRouterOrg = class {
|
|
|
498
542
|
{ responseType: "blob" }
|
|
499
543
|
);
|
|
500
544
|
}
|
|
545
|
+
// ---------------- Prompts ----------------
|
|
546
|
+
async createPrompt(params) {
|
|
547
|
+
const { prompt } = params;
|
|
548
|
+
return this.http.post(`/v0/orgs/${this.organizationId}/prompts`, prompt);
|
|
549
|
+
}
|
|
550
|
+
async listPrompts(params) {
|
|
551
|
+
const { skip, limit, document_id, tag_ids, nameSearch } = params || {};
|
|
552
|
+
return this.http.get(`/v0/orgs/${this.organizationId}/prompts`, {
|
|
553
|
+
params: {
|
|
554
|
+
skip: skip || 0,
|
|
555
|
+
limit: limit || 10,
|
|
556
|
+
document_id,
|
|
557
|
+
tag_ids,
|
|
558
|
+
name_search: nameSearch
|
|
559
|
+
}
|
|
560
|
+
});
|
|
561
|
+
}
|
|
562
|
+
async getPrompt(params) {
|
|
563
|
+
const { promptRevId } = params;
|
|
564
|
+
return this.http.get(`/v0/orgs/${this.organizationId}/prompts/${promptRevId}`);
|
|
565
|
+
}
|
|
566
|
+
async updatePrompt(params) {
|
|
567
|
+
const { promptId, prompt } = params;
|
|
568
|
+
return this.http.put(`/v0/orgs/${this.organizationId}/prompts/${promptId}`, prompt);
|
|
569
|
+
}
|
|
570
|
+
async deletePrompt(params) {
|
|
571
|
+
const { promptId } = params;
|
|
572
|
+
return this.http.delete(`/v0/orgs/${this.organizationId}/prompts/${promptId}`);
|
|
573
|
+
}
|
|
501
574
|
// ---------------- Tags ----------------
|
|
502
575
|
async createTag(params) {
|
|
503
576
|
const { tag } = params;
|
|
@@ -559,35 +632,6 @@ var DocRouterOrg = class {
|
|
|
559
632
|
const { documentId, formRevId } = params;
|
|
560
633
|
await this.http.delete(`/v0/orgs/${this.organizationId}/forms/submissions/${documentId}`, { params: { form_revid: formRevId } });
|
|
561
634
|
}
|
|
562
|
-
// ---------------- Prompts ----------------
|
|
563
|
-
async createPrompt(params) {
|
|
564
|
-
const { prompt } = params;
|
|
565
|
-
return this.http.post(`/v0/orgs/${this.organizationId}/prompts`, prompt);
|
|
566
|
-
}
|
|
567
|
-
async listPrompts(params) {
|
|
568
|
-
const { skip, limit, document_id, tag_ids, nameSearch } = params || {};
|
|
569
|
-
return this.http.get(`/v0/orgs/${this.organizationId}/prompts`, {
|
|
570
|
-
params: {
|
|
571
|
-
skip: skip || 0,
|
|
572
|
-
limit: limit || 10,
|
|
573
|
-
document_id,
|
|
574
|
-
tag_ids,
|
|
575
|
-
name_search: nameSearch
|
|
576
|
-
}
|
|
577
|
-
});
|
|
578
|
-
}
|
|
579
|
-
async getPrompt(params) {
|
|
580
|
-
const { promptRevId } = params;
|
|
581
|
-
return this.http.get(`/v0/orgs/${this.organizationId}/prompts/${promptRevId}`);
|
|
582
|
-
}
|
|
583
|
-
async updatePrompt(params) {
|
|
584
|
-
const { promptId, prompt } = params;
|
|
585
|
-
return this.http.put(`/v0/orgs/${this.organizationId}/prompts/${promptId}`, prompt);
|
|
586
|
-
}
|
|
587
|
-
async deletePrompt(params) {
|
|
588
|
-
const { promptId } = params;
|
|
589
|
-
return this.http.delete(`/v0/orgs/${this.organizationId}/prompts/${promptId}`);
|
|
590
|
-
}
|
|
591
635
|
// ---------------- Schemas ----------------
|
|
592
636
|
async createSchema(schema) {
|
|
593
637
|
return this.http.post(`/v0/orgs/${this.organizationId}/schemas`, schema);
|
|
@@ -614,29 +658,6 @@ var DocRouterOrg = class {
|
|
|
614
658
|
const { schemaRevId, data } = params;
|
|
615
659
|
return this.http.post(`/v0/orgs/${this.organizationId}/schemas/${schemaRevId}/validate`, { data });
|
|
616
660
|
}
|
|
617
|
-
// ---------------- Flows ----------------
|
|
618
|
-
async createFlow(params) {
|
|
619
|
-
const { flow } = params;
|
|
620
|
-
return this.http.post(`/v0/orgs/${this.organizationId}/flows`, flow);
|
|
621
|
-
}
|
|
622
|
-
async updateFlow(params) {
|
|
623
|
-
const { flowId, flow } = params;
|
|
624
|
-
return this.http.put(`/v0/orgs/${this.organizationId}/flows/${flowId}`, flow);
|
|
625
|
-
}
|
|
626
|
-
async listFlows(params) {
|
|
627
|
-
const { skip, limit } = params || {};
|
|
628
|
-
return this.http.get(`/v0/orgs/${this.organizationId}/flows`, {
|
|
629
|
-
params: { skip: skip || 0, limit: limit || 10 }
|
|
630
|
-
});
|
|
631
|
-
}
|
|
632
|
-
async getFlow(params) {
|
|
633
|
-
const { flowId } = params;
|
|
634
|
-
return this.http.get(`/v0/orgs/${this.organizationId}/flows/${flowId}`);
|
|
635
|
-
}
|
|
636
|
-
async deleteFlow(params) {
|
|
637
|
-
const { flowId } = params;
|
|
638
|
-
await this.http.delete(`/v0/orgs/${this.organizationId}/flows/${flowId}`);
|
|
639
|
-
}
|
|
640
661
|
// ---------------- Payments ----------------
|
|
641
662
|
async getCustomerPortal() {
|
|
642
663
|
return this.http.post(`/v0/orgs/${this.organizationId}/payments/customer-portal`, {});
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/http-client.ts","../src/docrouter-account.ts","../src/docrouter-org.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, isAxiosError } from 'axios';\nimport { DocRouterConfig, ApiError } from './types';\n\nexport class HttpClient {\n private axios: AxiosInstance;\n private config: DocRouterConfig;\n private isRefreshing = false;\n private failedQueue: Array<{\n resolve: (value?: unknown) => void;\n reject: (error: Error) => void;\n }> = [];\n\n constructor(config: DocRouterConfig) {\n this.config = config;\n this.axios = axios.create({\n baseURL: config.baseURL,\n timeout: config.timeout || 30000,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n this.setupInterceptors();\n }\n\n private setupInterceptors(): void {\n // Request interceptor for auth\n this.axios.interceptors.request.use(\n async (config) => {\n const token = await this.getToken();\n if (token) {\n config.headers.Authorization = `Bearer ${token}`;\n }\n return config;\n },\n (error) => Promise.reject(error)\n );\n\n // Response interceptor for error handling\n this.axios.interceptors.response.use(\n (response) => response,\n async (error) => {\n const originalRequest = error.config;\n\n // Handle 401 errors (unauthorized)\n if (error.response?.status === 401 && !originalRequest._retry) {\n if (this.isRefreshing) {\n return new Promise((resolve, reject) => {\n this.failedQueue.push({ resolve, reject });\n })\n .then(() => this.axios(originalRequest))\n .catch((err) => {\n this.handleAuthError(err);\n return Promise.reject(err);\n });\n }\n\n originalRequest._retry = true;\n this.isRefreshing = true;\n\n try {\n // Try to get a new token\n const newToken = await this.getToken();\n if (newToken) {\n originalRequest.headers.Authorization = `Bearer ${newToken}`;\n this.processQueue();\n return this.axios(originalRequest);\n } else {\n this.handleAuthError(error);\n return Promise.reject(this.createApiError(error));\n }\n } catch (refreshError) {\n this.processQueue(refreshError instanceof Error ? refreshError : new Error('Token refresh failed'));\n this.handleAuthError(error);\n return Promise.reject(this.createApiError(error));\n } finally {\n this.isRefreshing = false;\n }\n }\n\n return Promise.reject(this.createApiError(error));\n }\n );\n }\n\n private async getToken(): Promise<string | null> {\n if (this.config.token) {\n return this.config.token;\n }\n \n if (this.config.tokenProvider) {\n try {\n return await this.config.tokenProvider();\n } catch (error) {\n console.warn('Token provider failed:', error);\n return null;\n }\n }\n\n return null;\n }\n\n private processQueue(error: Error | null = null): void {\n this.failedQueue.forEach(prom => {\n if (error) {\n prom.reject(error);\n } else {\n prom.resolve();\n }\n });\n this.failedQueue = [];\n }\n\n private handleAuthError(error: unknown): void {\n if (this.config.onAuthError) {\n this.config.onAuthError(error instanceof Error ? error : new Error('Authentication failed'));\n }\n }\n\n private createApiError(error: unknown): ApiError {\n if (isAxiosError(error)) {\n const message = error.response?.data?.detail || error.message || 'Request failed';\n const apiError: ApiError = new Error(message);\n apiError.status = error.response?.status;\n apiError.code = error.code;\n apiError.details = error.response?.data;\n return apiError;\n }\n\n if (error instanceof Error) {\n const apiError: ApiError = error;\n return apiError;\n }\n\n return new Error('Unknown error occurred');\n }\n\n // Public methods\n async get<T = unknown>(url: string, config?: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.get(url, config);\n return response.data;\n }\n\n async post<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.post(url, data, config);\n return response.data;\n }\n\n async put<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.put(url, data, config);\n return response.data;\n }\n\n async delete<T = unknown>(url: string, config?: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.delete(url, config);\n return response.data;\n }\n\n async request<T = unknown>(config: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.request(config);\n return response.data;\n }\n\n // For streaming requests\n async stream(\n url: string,\n data: unknown,\n onChunk: (chunk: unknown) => void,\n onError?: (error: Error) => void,\n abortSignal?: AbortSignal\n ): Promise<void> {\n try {\n const token = await this.getToken();\n if (!token) {\n throw new Error('No token available for streaming request');\n }\n\n const response = await fetch(`${this.config.baseURL}${url}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`,\n 'Accept': 'text/plain',\n 'Cache-Control': 'no-cache',\n },\n body: JSON.stringify(data),\n signal: abortSignal,\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n if (!response.body) {\n throw new Error('Response body is not available for streaming');\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = '';\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n \n if (done) {\n break;\n }\n\n // Decode the chunk and add to buffer\n buffer += decoder.decode(value, { stream: true });\n \n // Process complete lines from buffer\n const lines = buffer.split('\\n');\n buffer = lines.pop() || ''; // Keep incomplete line in buffer\n \n for (const line of lines) {\n if (line.startsWith('data: ')) {\n try {\n const chunkData = JSON.parse(line.slice(6));\n onChunk(chunkData);\n \n // Stop if we're done\n if (chunkData.done) {\n return;\n }\n } catch (parseError) {\n console.warn('Failed to parse streaming chunk:', parseError);\n }\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n } catch (error) {\n if (onError) {\n onError(error instanceof Error ? error : new Error('Streaming request failed'));\n } else {\n throw error;\n }\n }\n }\n\n // Update token\n updateToken(token: string): void {\n this.config.token = token;\n }\n\n // Update token provider\n updateTokenProvider(provider: () => Promise<string>): void {\n this.config.tokenProvider = provider;\n }\n}\n","import { HttpClient } from './http-client';\nimport {\n DocRouterAccountConfig,\n AccessToken,\n ListOrganizationsResponse,\n Organization,\n CreateOrganizationRequest,\n UpdateOrganizationRequest,\n CreateTokenRequest,\n ListAccessTokensResponse,\n ListLLMModelsParams,\n ListLLMModelsResponse,\n ListLLMProvidersResponse,\n SetLLMProviderConfigRequest,\n ListUsersParams,\n ListUsersResponse,\n UserCreate,\n UserResponse,\n UserUpdate,\n User,\n AWSConfig,\n} from './types';\n\n/**\n * DocRouterAccount - For account-level operations with account tokens\n * Use this for server-to-server integrations that need full account access\n */\nexport class DocRouterAccount {\n private http: HttpClient;\n\n constructor(config: DocRouterAccountConfig) {\n this.http = new HttpClient({\n baseURL: config.baseURL,\n token: config.accountToken,\n timeout: config.timeout,\n retries: config.retries,\n onAuthError: config.onAuthError,\n });\n }\n\n /**\n * Update the account token\n */\n updateToken(token: string): void {\n this.http.updateToken(token);\n }\n\n // --------------- Organizations ---------------\n async listOrganizations(params?: { \n userId?: string;\n organizationId?: string;\n nameSearch?: string;\n memberSearch?: string;\n skip?: number;\n limit?: number;\n }): Promise<ListOrganizationsResponse> {\n const queryParams = new URLSearchParams();\n if (params?.userId) queryParams.append('user_id', params.userId);\n if (params?.organizationId) queryParams.append('organization_id', params.organizationId);\n if (params?.nameSearch) queryParams.append('name_search', params.nameSearch);\n if (params?.memberSearch) queryParams.append('member_search', params.memberSearch);\n if (params?.skip !== undefined) queryParams.append('skip', String(params.skip));\n if (params?.limit !== undefined) queryParams.append('limit', String(params.limit));\n return this.http.get<ListOrganizationsResponse>(`/v0/account/organizations?${queryParams.toString()}`);\n }\n\n async getOrganization(organizationId: string): Promise<Organization> {\n const response = await this.listOrganizations({ organizationId });\n return response.organizations[0];\n }\n\n async createOrganization(organization: CreateOrganizationRequest): Promise<Organization> {\n const response = await this.http.post<{\n _id?: string;\n id: string;\n name: string;\n members: Organization['members'];\n type: Organization['type'];\n created_at: string;\n updated_at: string;\n }>(`/v0/account/organizations`, organization);\n return {\n id: response._id || response.id,\n name: response.name,\n members: response.members,\n type: response.type,\n created_at: response.created_at,\n updated_at: response.updated_at,\n };\n }\n\n async updateOrganization(organizationId: string, update: UpdateOrganizationRequest): Promise<Organization> {\n return this.http.put(`/v0/account/organizations/${organizationId}`, update);\n }\n\n async deleteOrganization(organizationId: string) {\n return this.http.delete(`/v0/account/organizations/${organizationId}`);\n }\n\n // --------------- Tokens ---------------\n async createAccountToken(request: CreateTokenRequest) {\n return this.http.post(`/v0/account/access_tokens`, request);\n }\n\n async getAccountTokens(): Promise<ListAccessTokensResponse | unknown> {\n const resp = await this.http.get<ListAccessTokensResponse | AccessToken[]>(`/v0/account/access_tokens`);\n // Normalize to array for SDK consumers/tests\n return Array.isArray(resp) ? resp : (resp as ListAccessTokensResponse).access_tokens;\n }\n\n async deleteAccountToken(tokenId: string) {\n return this.http.delete(`/v0/account/access_tokens/${tokenId}`);\n }\n\n async createOrganizationToken(request: CreateTokenRequest, organizationId: string) {\n return this.http.post(`/v0/orgs/${organizationId}/access_tokens`, request);\n }\n\n async getOrganizationTokens(organizationId: string) {\n return this.http.get(`/v0/orgs/${organizationId}/access_tokens`);\n }\n\n async deleteOrganizationToken(tokenId: string, organizationId: string) {\n return this.http.delete(`/v0/orgs/${organizationId}/access_tokens/${tokenId}`);\n }\n\n // --------------- LLM (account-level) ---------------\n async listLLMModels(params: ListLLMModelsParams): Promise<ListLLMModelsResponse> {\n return this.http.get<ListLLMModelsResponse>('/v0/account/llm/models', {\n params: {\n provider_name: params.providerName,\n provider_enabled: params.providerEnabled,\n llm_enabled: params.llmEnabled,\n }\n });\n }\n\n async listLLMProviders(): Promise<ListLLMProvidersResponse> {\n return this.http.get<ListLLMProvidersResponse>('/v0/account/llm/providers');\n }\n\n async setLLMProviderConfig(providerName: string, request: SetLLMProviderConfigRequest) {\n return this.http.put<SetLLMProviderConfigRequest>(`/v0/account/llm/provider/${providerName}`, request);\n }\n\n // --------------- Users ---------------\n async listUsers(params?: ListUsersParams): Promise<ListUsersResponse> {\n const queryParams = new URLSearchParams();\n if (params?.skip) queryParams.append('skip', String(params.skip));\n if (params?.limit) queryParams.append('limit', String(params.limit));\n if (params?.organization_id) queryParams.append('organization_id', params.organization_id);\n if (params?.user_id) queryParams.append('user_id', params.user_id);\n if (params?.search_name) queryParams.append('search_name', params.search_name);\n return this.http.get<ListUsersResponse>(`/v0/account/users?${queryParams.toString()}`);\n }\n\n async getUser(userId: string): Promise<UserResponse> {\n const response = await this.listUsers({ user_id: userId });\n const user = response.users[0];\n return { user } as UserResponse;\n }\n\n async createUser(user: UserCreate): Promise<UserResponse> {\n const created = await this.http.post<UserResponse | { user: User }>(\n '/v0/account/users',\n user\n );\n // Normalize to { user }\n return (created as UserResponse).user\n ? (created as UserResponse)\n : ({ user: created as unknown as User }) as UserResponse;\n }\n\n async updateUser(userId: string, update: UserUpdate): Promise<UserResponse> {\n const updated = await this.http.put<UserResponse | { user: User }>(\n `/v0/account/users/${userId}`,\n update\n );\n return (updated as UserResponse).user\n ? (updated as UserResponse)\n : ({ user: updated as unknown as User }) as UserResponse;\n }\n\n async deleteUser(userId: string): Promise<void> {\n await this.http.delete(`/v0/account/users/${userId}`);\n }\n\n // --------------- Email Verification ---------------\n async sendVerificationEmail(userId: string) {\n return this.http.post(`/v0/account/email/verification/send/${userId}`);\n }\n\n async sendRegistrationVerificationEmail(userId: string) {\n return this.http.post(`/v0/account/email/verification/register/${userId}`);\n }\n\n async verifyEmail(token: string) {\n return this.http.post(`/v0/account/email/verification/${token}`);\n }\n\n // --------------- AWS Config ---------------\n async createAWSConfig(config: Omit<AWSConfig, 'created_at'>) {\n return this.http.post('/v0/account/aws_config', config);\n }\n\n async getAWSConfig() {\n return this.http.get('/v0/account/aws_config');\n }\n\n async deleteAWSConfig() {\n return this.http.delete('/v0/account/aws_config');\n }\n\n /**\n * Get the current HTTP client (for advanced usage)\n */\n getHttpClient(): HttpClient {\n return this.http;\n }\n}\n","import { HttpClient } from './http-client';\nimport {\n DocRouterOrgConfig,\n UploadDocumentsResponse,\n ListDocumentsResponse,\n GetDocumentResponse,\n GetOCRMetadataResponse,\n RunLLMResponse,\n GetLLMResultResponse,\n ListTagsResponse,\n Tag,\n // Forms\n CreateFormParams,\n ListFormsParams,\n ListFormsResponse,\n GetFormParams,\n UpdateFormParams,\n DeleteFormParams,\n SubmitFormParams,\n GetFormSubmissionParams,\n DeleteFormSubmissionParams,\n Form,\n FormSubmission,\n // Prompts\n CreatePromptParams,\n ListPromptsParams,\n ListPromptsResponse,\n GetPromptParams,\n UpdatePromptParams,\n DeletePromptParams,\n Prompt,\n // Schemas\n CreateSchemaParams,\n ListSchemasParams,\n ListSchemasResponse,\n GetSchemaParams,\n UpdateSchemaParams,\n DeleteSchemaParams,\n Schema,\n // Flows\n CreateFlowParams,\n ListFlowsParams,\n ListFlowsResponse,\n GetFlowParams,\n UpdateFlowParams,\n DeleteFlowParams,\n Flow,\n // Payments\n PortalSessionResponse,\n SubscriptionResponse,\n UsageResponse,\n CreditConfig,\n CreditUpdateResponse,\n UsageRangeRequest,\n UsageRangeResponse,\n} from './types';\n\n/**\n * DocRouterOrg - For organization-scoped operations with org tokens\n * Use this when you have an organization token and want to work within that org\n */\nexport class DocRouterOrg {\n public readonly organizationId: string;\n private http: HttpClient;\n\n constructor(config: DocRouterOrgConfig) {\n this.organizationId = config.organizationId;\n this.http = new HttpClient({\n baseURL: config.baseURL,\n token: config.orgToken,\n timeout: config.timeout,\n retries: config.retries,\n onAuthError: config.onAuthError,\n });\n }\n\n /**\n * Update the organization token\n */\n updateToken(token: string): void {\n this.http.updateToken(token);\n }\n\n // ---------------- Documents ----------------\n\n async uploadDocuments(params: { documents: Array<{ name: string; content: ArrayBuffer | Buffer | Uint8Array; type: string; metadata?: Record<string, string>; }>; }): Promise<UploadDocumentsResponse> {\n const documentsPayload = params.documents.map(doc => {\n let base64Content: string;\n if (doc.content instanceof ArrayBuffer) {\n const buffer = Buffer.from(doc.content);\n base64Content = buffer.toString('base64');\n } else if (doc.content instanceof Buffer) {\n base64Content = doc.content.toString('base64');\n } else if (doc.content instanceof Uint8Array) {\n const buffer = Buffer.from(doc.content);\n base64Content = buffer.toString('base64');\n } else {\n // Handle remaining types (ArrayBuffer or Uint8Array)\n const uint8Array = new Uint8Array(doc.content);\n const buffer = Buffer.from(uint8Array);\n base64Content = buffer.toString('base64');\n }\n\n const payload: {\n name: string;\n content: string;\n type?: string;\n metadata?: Record<string, string>;\n } = {\n name: doc.name,\n content: base64Content,\n type: doc.type,\n };\n if (doc.metadata) payload.metadata = doc.metadata;\n return payload;\n });\n\n return this.http.post<UploadDocumentsResponse>(\n `/v0/orgs/${this.organizationId}/documents`,\n { documents: documentsPayload }\n );\n }\n\n async listDocuments(params?: { skip?: number; limit?: number; tagIds?: string; nameSearch?: string; metadataSearch?: string; }): Promise<ListDocumentsResponse> {\n const queryParams: Record<string, string | number | undefined> = {\n skip: params?.skip || 0,\n limit: params?.limit || 10,\n };\n if (params?.tagIds) queryParams.tag_ids = params.tagIds;\n if (params?.nameSearch) queryParams.name_search = params.nameSearch;\n if (params?.metadataSearch) queryParams.metadata_search = params.metadataSearch;\n\n return this.http.get<ListDocumentsResponse>(`/v0/orgs/${this.organizationId}/documents`, {\n params: queryParams\n });\n }\n\n async getDocument(params: { documentId: string; fileType: string; }): Promise<GetDocumentResponse> {\n const { documentId, fileType } = params;\n const response = await this.http.get<{\n id: string;\n pdf_id: string;\n document_name: string;\n upload_date: string;\n uploaded_by: string;\n state: string;\n tag_ids: string[];\n type: string;\n metadata: Record<string, string>;\n content: string;\n }>(`/v0/orgs/${this.organizationId}/documents/${documentId}?file_type=${fileType}`);\n\n const binaryContent = atob(response.content);\n const len = binaryContent.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryContent.charCodeAt(i);\n }\n\n return {\n id: response.id,\n pdf_id: response.pdf_id,\n document_name: response.document_name,\n upload_date: response.upload_date,\n uploaded_by: response.uploaded_by,\n state: response.state,\n tag_ids: response.tag_ids,\n type: response.type,\n metadata: response.metadata,\n content: bytes.buffer\n };\n }\n\n async updateDocument(params: { documentId: string; documentName?: string; tagIds?: string[]; metadata?: Record<string, string>; }) {\n const { documentId, documentName, tagIds, metadata } = params;\n const updateData: { tag_ids?: string[]; document_name?: string; metadata?: Record<string, string> } = {};\n if (documentName !== undefined) updateData.document_name = documentName;\n if (tagIds !== undefined) updateData.tag_ids = tagIds;\n if (metadata !== undefined) updateData.metadata = metadata;\n return this.http.put(`/v0/orgs/${this.organizationId}/documents/${documentId}`, updateData);\n }\n\n async deleteDocument(params: { documentId: string; }) {\n const { documentId } = params;\n return this.http.delete(`/v0/orgs/${this.organizationId}/documents/${documentId}`);\n }\n\n // ---------------- OCR ----------------\n\n async getOCRBlocks(params: { documentId: string; }) {\n const { documentId } = params;\n return this.http.get(`/v0/orgs/${this.organizationId}/ocr/download/blocks/${documentId}`);\n }\n\n async getOCRText(params: { documentId: string; pageNum?: number; }) {\n const { documentId, pageNum } = params;\n const url = `/v0/orgs/${this.organizationId}/ocr/download/text/${documentId}${pageNum ? `?page_num=${pageNum}` : ''}`;\n return this.http.get(url);\n }\n\n async getOCRMetadata(params: { documentId: string; }): Promise<GetOCRMetadataResponse> {\n const { documentId } = params;\n return this.http.get<GetOCRMetadataResponse>(`/v0/orgs/${this.organizationId}/ocr/download/metadata/${documentId}`);\n }\n\n // ---------------- LLM ----------------\n\n async runLLM(params: { documentId: string; promptRevId: string; force?: boolean; }): Promise<RunLLMResponse> {\n const { documentId, promptRevId, force } = params;\n return this.http.post<RunLLMResponse>(\n `/v0/orgs/${this.organizationId}/llm/run/${documentId}`,\n {},\n { params: { prompt_revid: promptRevId, force } }\n );\n }\n\n async getLLMResult(params: { documentId: string; promptRevId: string; fallback?: boolean; }): Promise<GetLLMResultResponse> {\n const { documentId, promptRevId, fallback } = params;\n return this.http.get<GetLLMResultResponse>(\n `/v0/orgs/${this.organizationId}/llm/result/${documentId}`,\n { params: { prompt_revid: promptRevId, fallback } }\n );\n }\n\n async updateLLMResult({\n documentId,\n promptId,\n result,\n isVerified = false\n }: { documentId: string; promptId: string; result: Record<string, unknown>; isVerified?: boolean; }) {\n const response = await this.http.put<{\n status: number;\n data: unknown;\n }>(\n `/v0/orgs/${this.organizationId}/llm/result/${documentId}`,\n { updated_llm_result: result, is_verified: isVerified },\n { params: { prompt_revid: promptId } }\n );\n if (response.status !== 200) {\n throw new Error(`Failed to update LLM result for document ${documentId} and prompt ${promptId}: ${response.data}`);\n }\n return response.data;\n }\n\n async deleteLLMResult(params: { documentId: string; promptId: string; }) {\n const { documentId, promptId } = params;\n return this.http.delete(\n `/v0/orgs/${this.organizationId}/llm/result/${documentId}`,\n { params: { prompt_revid: promptId } }\n );\n }\n\n async downloadAllLLMResults(params: { documentId: string; }) {\n const { documentId } = params;\n return this.http.get(\n `/v0/orgs/${this.organizationId}/llm/results/${documentId}/download`,\n { responseType: 'blob' as const }\n );\n }\n\n // ---------------- Tags ----------------\n\n async createTag(params: { tag: Omit<Tag, 'id' | 'created_at' | 'updated_at'>; }): Promise<Tag> {\n const { tag } = params;\n return this.http.post<Tag>(`/v0/orgs/${this.organizationId}/tags`, tag);\n }\n\n async getTag({ tagId }: { tagId: string; }): Promise<Tag> {\n return this.http.get<Tag>(`/v0/orgs/${this.organizationId}/tags/${tagId}`);\n }\n\n async listTags(params?: { skip?: number; limit?: number; nameSearch?: string; }): Promise<ListTagsResponse> {\n const { skip, limit, nameSearch } = params || {};\n return this.http.get<ListTagsResponse>(`/v0/orgs/${this.organizationId}/tags`, {\n params: { skip: skip || 0, limit: limit || 10, name_search: nameSearch }\n });\n }\n\n async updateTag(params: { tagId: string; tag: Partial<Omit<Tag, 'id' | 'created_at' | 'updated_at'>>; }): Promise<Tag> {\n const { tagId, tag } = params;\n return this.http.put<Tag>(`/v0/orgs/${this.organizationId}/tags/${tagId}`, tag);\n }\n\n async deleteTag(params: { tagId: string; }): Promise<{ message: string }> {\n const { tagId } = params;\n return this.http.delete<{ message: string }>(`/v0/orgs/${this.organizationId}/tags/${tagId}`);\n }\n\n // ---------------- Forms ----------------\n\n async createForm(form: Omit<CreateFormParams, 'organizationId'>): Promise<Form> {\n const { name, response_format } = form;\n return this.http.post<Form>(`/v0/orgs/${this.organizationId}/forms`, { name, response_format });\n }\n\n async listForms(params?: Omit<ListFormsParams, 'organizationId'>): Promise<ListFormsResponse> {\n const { skip, limit, tag_ids } = params || {};\n return this.http.get<ListFormsResponse>(`/v0/orgs/${this.organizationId}/forms`, {\n params: { skip: skip || 0, limit: limit || 10, tag_ids }\n });\n }\n\n async getForm(params: Omit<GetFormParams, 'organizationId'>): Promise<Form> {\n const { formRevId } = params;\n return this.http.get<Form>(`/v0/orgs/${this.organizationId}/forms/${formRevId}`);\n }\n\n async updateForm(params: Omit<UpdateFormParams, 'organizationId'>): Promise<Form> {\n const { formId, form } = params;\n return this.http.put<Form>(`/v0/orgs/${this.organizationId}/forms/${formId}`, form);\n }\n\n async deleteForm(params: Omit<DeleteFormParams, 'organizationId'>): Promise<{ message: string }> {\n const { formId } = params;\n return this.http.delete<{ message: string }>(`/v0/orgs/${this.organizationId}/forms/${formId}`);\n }\n\n async submitForm(params: Omit<SubmitFormParams, 'organizationId'>): Promise<FormSubmission> {\n const { documentId, formRevId, submission_data, submitted_by } = params;\n return this.http.post<FormSubmission>(`/v0/orgs/${this.organizationId}/forms/submissions/${documentId}`, {\n form_revid: formRevId,\n submission_data: submission_data,\n submitted_by: submitted_by\n });\n }\n\n async getFormSubmission(params: Omit<GetFormSubmissionParams, 'organizationId'>): Promise<FormSubmission | null> {\n const { documentId, formRevId } = params;\n return this.http.get<FormSubmission | null>(`/v0/orgs/${this.organizationId}/forms/submissions/${documentId}?form_revid=${formRevId}`);\n }\n\n async deleteFormSubmission(params: Omit<DeleteFormSubmissionParams, 'organizationId'>): Promise<void> {\n const { documentId, formRevId } = params;\n await this.http.delete(`/v0/orgs/${this.organizationId}/forms/submissions/${documentId}`, { params: { form_revid: formRevId } });\n }\n\n // ---------------- Prompts ----------------\n\n async createPrompt(params: Omit<CreatePromptParams, 'organizationId'>): Promise<Prompt> {\n const { prompt } = params;\n return this.http.post<Prompt>(`/v0/orgs/${this.organizationId}/prompts`, prompt);\n }\n\n async listPrompts(params: Omit<ListPromptsParams, 'organizationId'>): Promise<ListPromptsResponse> {\n const { skip, limit, document_id, tag_ids, nameSearch } = params || {};\n return this.http.get<ListPromptsResponse>(`/v0/orgs/${this.organizationId}/prompts`, {\n params: {\n skip: skip || 0,\n limit: limit || 10,\n document_id,\n tag_ids,\n name_search: nameSearch\n }\n });\n }\n\n async getPrompt(params: Omit<GetPromptParams, 'organizationId'>): Promise<Prompt> {\n const { promptRevId } = params;\n return this.http.get<Prompt>(`/v0/orgs/${this.organizationId}/prompts/${promptRevId}`);\n }\n\n async updatePrompt(params: Omit<UpdatePromptParams, 'organizationId'>): Promise<Prompt> {\n const { promptId, prompt } = params;\n return this.http.put<Prompt>(`/v0/orgs/${this.organizationId}/prompts/${promptId}`, prompt);\n }\n\n async deletePrompt(params: Omit<DeletePromptParams, 'organizationId'>): Promise<{ message: string }> {\n const { promptId } = params;\n return this.http.delete<{ message: string }>(`/v0/orgs/${this.organizationId}/prompts/${promptId}`);\n }\n\n // ---------------- Schemas ----------------\n\n async createSchema(schema: Omit<CreateSchemaParams, 'organizationId'>): Promise<Schema> {\n return this.http.post<Schema>(`/v0/orgs/${this.organizationId}/schemas`, schema);\n }\n\n async listSchemas(params: Omit<ListSchemasParams, 'organizationId'>): Promise<ListSchemasResponse> {\n const { skip, limit, nameSearch } = params || {};\n return this.http.get<ListSchemasResponse>(`/v0/orgs/${this.organizationId}/schemas`, {\n params: { skip: skip || 0, limit: limit || 10, name_search: nameSearch }\n });\n }\n\n async getSchema(params: Omit<GetSchemaParams, 'organizationId'>): Promise<Schema> {\n const { schemaRevId } = params;\n return this.http.get<Schema>(`/v0/orgs/${this.organizationId}/schemas/${schemaRevId}`);\n }\n\n async updateSchema(params: Omit<UpdateSchemaParams, 'organizationId'>): Promise<Schema> {\n const { schemaId, schema } = params;\n return this.http.put<Schema>(`/v0/orgs/${this.organizationId}/schemas/${schemaId}`, schema);\n }\n\n async deleteSchema(params: Omit<DeleteSchemaParams, 'organizationId'>): Promise<{ message: string }> {\n const { schemaId } = params;\n return this.http.delete<{ message: string }>(`/v0/orgs/${this.organizationId}/schemas/${schemaId}`);\n }\n\n async validateAgainstSchema(params: { schemaRevId: string; data: Record<string, unknown> }): Promise<{ valid: boolean; errors?: string[] }> {\n const { schemaRevId, data } = params;\n return this.http.post<{ valid: boolean; errors?: string[] }>(`/v0/orgs/${this.organizationId}/schemas/${schemaRevId}/validate`, { data });\n }\n\n // ---------------- Flows ----------------\n\n async createFlow(params: Omit<CreateFlowParams, 'organizationId'>): Promise<Flow> {\n const { flow } = params;\n return this.http.post<Flow>(`/v0/orgs/${this.organizationId}/flows`, flow);\n }\n\n async updateFlow(params: Omit<UpdateFlowParams, 'organizationId'>): Promise<Flow> {\n const { flowId, flow } = params;\n return this.http.put<Flow>(`/v0/orgs/${this.organizationId}/flows/${flowId}`, flow);\n }\n\n async listFlows(params?: Omit<ListFlowsParams, 'organizationId'>): Promise<ListFlowsResponse> {\n const { skip, limit } = params || {};\n return this.http.get<ListFlowsResponse>(`/v0/orgs/${this.organizationId}/flows`, {\n params: { skip: skip || 0, limit: limit || 10 }\n });\n }\n\n async getFlow(params: Omit<GetFlowParams, 'organizationId'>): Promise<Flow> {\n const { flowId } = params;\n return this.http.get<Flow>(`/v0/orgs/${this.organizationId}/flows/${flowId}`);\n }\n\n async deleteFlow(params: Omit<DeleteFlowParams, 'organizationId'>): Promise<void> {\n const { flowId } = params;\n await this.http.delete(`/v0/orgs/${this.organizationId}/flows/${flowId}`);\n }\n\n // ---------------- Payments ----------------\n\n async getCustomerPortal(): Promise<PortalSessionResponse> {\n return this.http.post<PortalSessionResponse>(`/v0/orgs/${this.organizationId}/payments/customer-portal`, {});\n }\n\n async getSubscription(): Promise<SubscriptionResponse> {\n return this.http.get<SubscriptionResponse>(`/v0/orgs/${this.organizationId}/payments/subscription`);\n }\n\n async activateSubscription(): Promise<{ status: string; message: string }> {\n return this.http.put<{ status: string; message: string }>(`/v0/orgs/${this.organizationId}/payments/subscription`, {});\n }\n\n async cancelSubscription(): Promise<{ status: string; message: string }> {\n return this.http.delete<{ status: string; message: string }>(`/v0/orgs/${this.organizationId}/payments/subscription`);\n }\n\n\n async getCurrentUsage(): Promise<UsageResponse> {\n return this.http.get<UsageResponse>(`/v0/orgs/${this.organizationId}/payments/usage`);\n }\n\n async addCredits(amount: number): Promise<CreditUpdateResponse> {\n return this.http.post<CreditUpdateResponse>(`/v0/orgs/${this.organizationId}/payments/credits/add`, { amount });\n }\n\n async getCreditConfig(): Promise<CreditConfig> {\n return this.http.get<CreditConfig>(`/v0/orgs/${this.organizationId}/payments/credits/config`);\n }\n\n async purchaseCredits(request: { credits: number; success_url: string; cancel_url: string; }) {\n return this.http.post(`/v0/orgs/${this.organizationId}/payments/credits/purchase`, request);\n }\n\n async getUsageRange(request: UsageRangeRequest): Promise<UsageRangeResponse> {\n return this.http.get<UsageRangeResponse>(`/v0/orgs/${this.organizationId}/payments/usage/range`, { params: request });\n }\n\n async createCheckoutSession(planId: string): Promise<PortalSessionResponse> {\n return this.http.post<PortalSessionResponse>(`/v0/orgs/${this.organizationId}/payments/checkout-session`, { plan_id: planId });\n }\n\n // ---------------- LLM Chat (Org) ----------------\n\n async runLLMChat(request: { messages: Array<{ role: 'system' | 'user' | 'assistant'; content: string }>; model?: string; temperature?: number; max_tokens?: number; stream?: boolean; }) {\n return this.http.post(`/v0/orgs/${this.organizationId}/llm/run`, request);\n }\n\n async runLLMChatStream(\n request: { messages: Array<{ role: 'system' | 'user' | 'assistant'; content: string }>; model?: string; temperature?: number; max_tokens?: number; stream?: boolean; },\n onChunk: (chunk: unknown) => void,\n onError?: (error: Error) => void,\n abortSignal?: AbortSignal\n ): Promise<void> {\n const streamingRequest = { ...request, stream: true };\n return this.http.stream(`/v0/orgs/${this.organizationId}/llm/run`, streamingRequest, onChunk, onError, abortSignal);\n }\n\n /**\n * Get the current HTTP client (for advanced usage)\n */\n getHttpClient(): HttpClient {\n return this.http;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/http-client.ts","../src/docrouter-account.ts","../src/docrouter-org.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, isAxiosError } from 'axios';\nimport { DocRouterConfig, ApiError, LLMChatStreamChunk, LLMChatStreamError } from './types';\n\nexport class HttpClient {\n private axios: AxiosInstance;\n private config: DocRouterConfig;\n private isRefreshing = false;\n private failedQueue: Array<{\n resolve: (value?: unknown) => void;\n reject: (error: Error) => void;\n }> = [];\n\n constructor(config: DocRouterConfig) {\n this.config = config;\n this.axios = axios.create({\n baseURL: config.baseURL,\n timeout: config.timeout || 30000,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n this.setupInterceptors();\n }\n\n private setupInterceptors(): void {\n // Request interceptor for auth\n this.axios.interceptors.request.use(\n async (config) => {\n const token = await this.getToken();\n if (token) {\n config.headers.Authorization = `Bearer ${token}`;\n }\n return config;\n },\n (error) => Promise.reject(error)\n );\n\n // Response interceptor for error handling\n this.axios.interceptors.response.use(\n (response) => response,\n async (error) => {\n const originalRequest = error.config;\n\n // Handle 401 errors (unauthorized)\n if (error.response?.status === 401 && !originalRequest._retry) {\n if (this.isRefreshing) {\n return new Promise((resolve, reject) => {\n this.failedQueue.push({ resolve, reject });\n })\n .then(() => this.axios(originalRequest))\n .catch((err) => {\n this.handleAuthError(err);\n return Promise.reject(err);\n });\n }\n\n originalRequest._retry = true;\n this.isRefreshing = true;\n\n try {\n // Try to get a new token\n const newToken = await this.getToken();\n if (newToken) {\n originalRequest.headers.Authorization = `Bearer ${newToken}`;\n this.processQueue();\n return this.axios(originalRequest);\n } else {\n this.handleAuthError(error);\n return Promise.reject(this.createApiError(error));\n }\n } catch (refreshError) {\n this.processQueue(refreshError instanceof Error ? refreshError : new Error('Token refresh failed'));\n this.handleAuthError(error);\n return Promise.reject(this.createApiError(error));\n } finally {\n this.isRefreshing = false;\n }\n }\n\n return Promise.reject(this.createApiError(error));\n }\n );\n }\n\n private async getToken(): Promise<string | null> {\n if (this.config.token) {\n return this.config.token;\n }\n \n if (this.config.tokenProvider) {\n try {\n return await this.config.tokenProvider();\n } catch (error) {\n console.warn('Token provider failed:', error);\n return null;\n }\n }\n\n return null;\n }\n\n private processQueue(error: Error | null = null): void {\n this.failedQueue.forEach(prom => {\n if (error) {\n prom.reject(error);\n } else {\n prom.resolve();\n }\n });\n this.failedQueue = [];\n }\n\n private handleAuthError(error: unknown): void {\n if (this.config.onAuthError) {\n this.config.onAuthError(error instanceof Error ? error : new Error('Authentication failed'));\n }\n }\n\n private createApiError(error: unknown): ApiError {\n if (isAxiosError(error)) {\n const message = error.response?.data?.detail || error.message || 'Request failed';\n const apiError: ApiError = new Error(message);\n apiError.status = error.response?.status;\n apiError.code = error.code;\n apiError.details = error.response?.data;\n return apiError;\n }\n\n if (error instanceof Error) {\n const apiError: ApiError = error;\n return apiError;\n }\n\n return new Error('Unknown error occurred');\n }\n\n // Public methods\n async get<T = unknown>(url: string, config?: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.get(url, config);\n return response.data;\n }\n\n async post<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.post(url, data, config);\n return response.data;\n }\n\n async put<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.put(url, data, config);\n return response.data;\n }\n\n async delete<T = unknown>(url: string, config?: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.delete(url, config);\n return response.data;\n }\n\n async request<T = unknown>(config: AxiosRequestConfig): Promise<T> {\n const response: AxiosResponse<T> = await this.axios.request(config);\n return response.data;\n }\n\n // For streaming requests\n async stream(\n url: string,\n data: unknown,\n onChunk: (chunk: LLMChatStreamChunk | LLMChatStreamError) => void,\n onError?: (error: Error) => void,\n abortSignal?: AbortSignal\n ): Promise<void> {\n try {\n const token = await this.getToken();\n if (!token) {\n throw new Error('No token available for streaming request');\n }\n\n const response = await fetch(`${this.config.baseURL}${url}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`,\n 'Accept': 'text/plain',\n 'Cache-Control': 'no-cache',\n },\n body: JSON.stringify(data),\n signal: abortSignal,\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n if (!response.body) {\n throw new Error('Response body is not available for streaming');\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = '';\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n \n if (done) {\n break;\n }\n\n // Decode the chunk and add to buffer\n buffer += decoder.decode(value, { stream: true });\n \n // Process complete lines from buffer\n const lines = buffer.split('\\n');\n buffer = lines.pop() || ''; // Keep incomplete line in buffer\n \n for (const line of lines) {\n if (line.startsWith('data: ')) {\n try {\n const chunkData = JSON.parse(line.slice(6));\n onChunk(chunkData);\n \n // Stop if we're done\n if (chunkData.done) {\n return;\n }\n } catch (parseError) {\n console.warn('Failed to parse streaming chunk:', parseError);\n }\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n } catch (error) {\n if (onError) {\n onError(error instanceof Error ? error : new Error('Streaming request failed'));\n } else {\n throw error;\n }\n }\n }\n\n // Update token\n updateToken(token: string): void {\n this.config.token = token;\n }\n\n // Update token provider\n updateTokenProvider(provider: () => Promise<string>): void {\n this.config.tokenProvider = provider;\n }\n}\n","import { HttpClient } from './http-client';\nimport {\n DocRouterAccountConfig,\n AccessToken,\n ListOrganizationsResponse,\n Organization,\n CreateOrganizationRequest,\n UpdateOrganizationRequest,\n CreateTokenRequest,\n ListAccessTokensResponse,\n ListLLMModelsParams,\n ListLLMModelsResponse,\n ListLLMProvidersResponse,\n SetLLMProviderConfigRequest,\n LLMChatRequest,\n LLMChatResponse,\n LLMChatStreamChunk,\n LLMChatStreamError,\n ListUsersParams,\n ListUsersResponse,\n UserCreate,\n UserUpdate,\n User,\n AWSConfig,\n // Invitation types\n InvitationResponse,\n CreateInvitationRequest,\n ListInvitationsParams,\n ListInvitationsResponse,\n AcceptInvitationRequest,\n // Payment types\n PortalSessionResponse,\n SubscriptionResponse,\n UsageResponse,\n CreditConfig,\n CreditUpdateResponse,\n UsageRangeRequest,\n UsageRangeResponse,\n} from './types';\n\n/**\n * DocRouterAccount - For account-level operations with account tokens\n * Use this for server-to-server integrations that need full account access\n */\nexport class DocRouterAccount {\n private http: HttpClient;\n\n constructor(config: DocRouterAccountConfig) {\n this.http = new HttpClient({\n baseURL: config.baseURL,\n token: config.accountToken,\n timeout: config.timeout,\n retries: config.retries,\n onAuthError: config.onAuthError,\n });\n }\n\n /**\n * Update the account token\n */\n updateToken(token: string): void {\n this.http.updateToken(token);\n }\n\n // --------------- Organizations ---------------\n async listOrganizations(params?: { \n userId?: string;\n organizationId?: string;\n nameSearch?: string;\n memberSearch?: string;\n skip?: number;\n limit?: number;\n }): Promise<ListOrganizationsResponse> {\n const queryParams = new URLSearchParams();\n if (params?.userId) queryParams.append('user_id', params.userId);\n if (params?.organizationId) queryParams.append('organization_id', params.organizationId);\n if (params?.nameSearch) queryParams.append('name_search', params.nameSearch);\n if (params?.memberSearch) queryParams.append('member_search', params.memberSearch);\n if (params?.skip !== undefined) queryParams.append('skip', String(params.skip));\n if (params?.limit !== undefined) queryParams.append('limit', String(params.limit));\n return this.http.get<ListOrganizationsResponse>(`/v0/account/organizations?${queryParams.toString()}`);\n }\n\n async getOrganization(organizationId: string): Promise<Organization> {\n const response = await this.listOrganizations({ organizationId });\n return response.organizations[0];\n }\n\n async createOrganization(organization: CreateOrganizationRequest): Promise<Organization> {\n const response = await this.http.post<{\n _id?: string;\n id: string;\n name: string;\n members: Organization['members'];\n type: Organization['type'];\n created_at: string;\n updated_at: string;\n }>(`/v0/account/organizations`, organization);\n return {\n id: response._id || response.id,\n name: response.name,\n members: response.members,\n type: response.type,\n created_at: response.created_at,\n updated_at: response.updated_at,\n };\n }\n\n async updateOrganization(organizationId: string, update: UpdateOrganizationRequest): Promise<Organization> {\n return this.http.put(`/v0/account/organizations/${organizationId}`, update);\n }\n\n async deleteOrganization(organizationId: string) {\n return this.http.delete(`/v0/account/organizations/${organizationId}`);\n }\n\n // --------------- Tokens ---------------\n async createAccountToken(request: CreateTokenRequest): Promise<AccessToken> {\n return this.http.post(`/v0/account/access_tokens`, request);\n }\n\n async getAccountTokens(): Promise<AccessToken[]> {\n const resp = await this.http.get<ListAccessTokensResponse | AccessToken[]>(`/v0/account/access_tokens`);\n // Normalize to array for SDK consumers/tests\n return Array.isArray(resp) ? resp : (resp as ListAccessTokensResponse).access_tokens;\n }\n\n async deleteAccountToken(tokenId: string): Promise<void> {\n return this.http.delete(`/v0/account/access_tokens/${tokenId}`);\n }\n\n async createOrganizationToken(request: CreateTokenRequest, organizationId: string): Promise<AccessToken> {\n return this.http.post(`/v0/orgs/${organizationId}/access_tokens`, request);\n }\n\n async getOrganizationTokens(organizationId: string): Promise<AccessToken[]> {\n const resp = await this.http.get<ListAccessTokensResponse | AccessToken[]>(`/v0/orgs/${organizationId}/access_tokens`);\n // Normalize to array for SDK consumers/tests\n return Array.isArray(resp) ? resp : (resp as ListAccessTokensResponse).access_tokens;\n }\n\n async deleteOrganizationToken(tokenId: string, organizationId: string): Promise<void> {\n return this.http.delete(`/v0/orgs/${organizationId}/access_tokens/${tokenId}`);\n }\n\n // --------------- LLM (account-level) ---------------\n async listLLMModels(params: ListLLMModelsParams): Promise<ListLLMModelsResponse> {\n return this.http.get<ListLLMModelsResponse>('/v0/account/llm/models', {\n params: {\n provider_name: params.providerName,\n provider_enabled: params.providerEnabled,\n llm_enabled: params.llmEnabled,\n }\n });\n }\n\n async listLLMProviders(): Promise<ListLLMProvidersResponse> {\n return this.http.get<ListLLMProvidersResponse>('/v0/account/llm/providers');\n }\n\n async setLLMProviderConfig(providerName: string, request: SetLLMProviderConfigRequest) {\n return this.http.put<SetLLMProviderConfigRequest>(`/v0/account/llm/provider/${providerName}`, request);\n }\n\n // --------------- Users ---------------\n async listUsers(params?: ListUsersParams): Promise<ListUsersResponse> {\n const queryParams = new URLSearchParams();\n if (params?.skip) queryParams.append('skip', String(params.skip));\n if (params?.limit) queryParams.append('limit', String(params.limit));\n if (params?.organization_id) queryParams.append('organization_id', params.organization_id);\n if (params?.user_id) queryParams.append('user_id', params.user_id);\n if (params?.search_name) queryParams.append('search_name', params.search_name);\n return this.http.get<ListUsersResponse>(`/v0/account/users?${queryParams.toString()}`);\n }\n\n async getUser(userId: string): Promise<User> {\n const response = await this.listUsers({ user_id: userId });\n return response.users[0];\n }\n\n async createUser(user: UserCreate): Promise<User> {\n return this.http.post<User>('/v0/account/users', user);\n }\n\n async updateUser(userId: string, update: UserUpdate): Promise<User> {\n return this.http.put<User>(`/v0/account/users/${userId}`, update);\n }\n\n async deleteUser(userId: string): Promise<void> {\n await this.http.delete(`/v0/account/users/${userId}`);\n }\n\n // --------------- Email Verification ---------------\n async sendVerificationEmail(userId: string) {\n return this.http.post(`/v0/account/email/verification/send/${userId}`);\n }\n\n async sendRegistrationVerificationEmail(userId: string) {\n return this.http.post(`/v0/account/email/verification/register/${userId}`);\n }\n\n async verifyEmail(token: string) {\n return this.http.post(`/v0/account/email/verification/${token}`);\n }\n\n // --------------- AWS Config ---------------\n async createAWSConfig(config: Omit<AWSConfig, 'created_at'>): Promise<AWSConfig> {\n return this.http.post('/v0/account/aws_config', config);\n }\n\n async getAWSConfig(): Promise<AWSConfig> {\n return this.http.get('/v0/account/aws_config');\n }\n\n async deleteAWSConfig(): Promise<void> {\n return this.http.delete('/v0/account/aws_config');\n }\n\n // --------------- Invitations ---------------\n async createInvitation(invitation: CreateInvitationRequest): Promise<InvitationResponse> {\n return this.http.post<InvitationResponse>('/v0/account/email/invitations', invitation);\n }\n\n async getInvitations(params?: ListInvitationsParams): Promise<ListInvitationsResponse> {\n const queryParams = new URLSearchParams();\n if (params?.skip !== undefined) queryParams.append('skip', String(params.skip));\n if (params?.limit !== undefined) queryParams.append('limit', String(params.limit));\n return this.http.get<ListInvitationsResponse>(`/v0/account/email/invitations?${queryParams.toString()}`);\n }\n\n async getInvitation(token: string): Promise<InvitationResponse> {\n return this.http.get<InvitationResponse>(`/v0/account/email/invitations/${token}`);\n }\n\n async acceptInvitation(token: string, data: AcceptInvitationRequest): Promise<{ message: string }> {\n return this.http.post<{ message: string }>(`/v0/account/email/invitations/${token}/accept`, data);\n }\n\n // --------------- Payments & Subscriptions ---------------\n async getCustomerPortal(orgId: string): Promise<PortalSessionResponse> {\n return this.http.post<PortalSessionResponse>(`/v0/orgs/${orgId}/payments/customer-portal`);\n }\n\n async getSubscription(orgId: string): Promise<SubscriptionResponse> {\n return this.http.get<SubscriptionResponse>(`/v0/orgs/${orgId}/payments/subscription`);\n }\n\n async activateSubscription(orgId: string): Promise<{ status: string; message: string }> {\n return this.http.put<{ status: string; message: string }>(`/v0/orgs/${orgId}/payments/subscription`);\n }\n\n async cancelSubscription(orgId: string): Promise<{ status: string; message: string }> {\n return this.http.delete<{ status: string; message: string }>(`/v0/orgs/${orgId}/payments/subscription`);\n }\n\n async getCurrentUsage(orgId: string): Promise<UsageResponse> {\n return this.http.get<UsageResponse>(`/v0/orgs/${orgId}/payments/usage`);\n }\n\n async addCredits(orgId: string, amount: number): Promise<CreditUpdateResponse> {\n return this.http.post<CreditUpdateResponse>(`/v0/orgs/${orgId}/payments/credits/add`, { amount });\n }\n\n async getCreditConfig(orgId: string): Promise<CreditConfig> {\n return this.http.get<CreditConfig>(`/v0/orgs/${orgId}/payments/credits/config`);\n }\n\n async purchaseCredits(orgId: string, request: { credits: number; success_url: string; cancel_url: string }): Promise<{ checkout_url: string; session_id: string }> {\n return this.http.post<{ checkout_url: string; session_id: string }>(`/v0/orgs/${orgId}/payments/credits/purchase`, request);\n }\n\n async getUsageRange(orgId: string, request: UsageRangeRequest): Promise<UsageRangeResponse> {\n const queryParams = new URLSearchParams();\n if (request.start_date) queryParams.append('start_date', request.start_date);\n if (request.end_date) queryParams.append('end_date', request.end_date);\n return this.http.get<UsageRangeResponse>(`/v0/orgs/${orgId}/payments/usage/range?${queryParams.toString()}`);\n }\n\n async createCheckoutSession(orgId: string, planId: string): Promise<PortalSessionResponse> {\n return this.http.post<PortalSessionResponse>(`/v0/orgs/${orgId}/payments/checkout-session`, { plan_id: planId });\n }\n\n /**\n * Run LLM chat (account level)\n */\n async runLLMChat(request: LLMChatRequest): Promise<LLMChatResponse> {\n return this.http.post('/v0/account/llm/run', request);\n }\n\n /**\n * Run LLM chat with streaming (account level)\n */\n async runLLMChatStream(\n request: LLMChatRequest,\n onChunk: (chunk: LLMChatStreamChunk | LLMChatStreamError) => void,\n onError?: (error: Error) => void,\n abortSignal?: AbortSignal\n ): Promise<void> {\n const streamingRequest = { ...request, stream: true };\n return this.http.stream('/v0/account/llm/run', streamingRequest, onChunk, onError, abortSignal);\n }\n\n /**\n * Get the current HTTP client (for advanced usage)\n */\n getHttpClient(): HttpClient {\n return this.http;\n }\n}\n","import { HttpClient } from './http-client';\nimport {\n DocRouterOrgConfig,\n UploadDocumentsResponse,\n ListDocumentsResponse,\n GetDocumentResponse,\n GetOCRMetadataResponse,\n RunLLMResponse,\n GetLLMResultResponse,\n ListTagsResponse,\n JsonValue,\n Tag,\n OCRBlock,\n // Forms\n CreateFormParams,\n ListFormsParams,\n ListFormsResponse,\n GetFormParams,\n UpdateFormParams,\n DeleteFormParams,\n SubmitFormParams,\n GetFormSubmissionParams,\n DeleteFormSubmissionParams,\n Form,\n FormSubmission,\n // Prompts\n CreatePromptParams,\n ListPromptsParams,\n ListPromptsResponse,\n GetPromptParams,\n UpdatePromptParams,\n DeletePromptParams,\n Prompt,\n // Schemas\n CreateSchemaParams,\n ListSchemasParams,\n ListSchemasResponse,\n GetSchemaParams,\n UpdateSchemaParams,\n DeleteSchemaParams,\n Schema,\n // Payments\n PortalSessionResponse,\n SubscriptionResponse,\n UsageResponse,\n CreditConfig,\n CreditUpdateResponse,\n UsageRangeRequest,\n UsageRangeResponse,\n // LLM Chat\n LLMChatRequest,\n LLMChatResponse,\n LLMChatStreamChunk,\n LLMChatStreamError,\n} from './types';\n\n/**\n * DocRouterOrg - For organization-scoped operations with org tokens\n * Use this when you have an organization token and want to work within that org\n */\nexport class DocRouterOrg {\n public readonly organizationId: string;\n private http: HttpClient;\n\n constructor(config: DocRouterOrgConfig) {\n this.organizationId = config.organizationId;\n this.http = new HttpClient({\n baseURL: config.baseURL,\n token: config.orgToken,\n timeout: config.timeout,\n retries: config.retries,\n onAuthError: config.onAuthError,\n });\n }\n\n /**\n * Update the organization token\n */\n updateToken(token: string): void {\n this.http.updateToken(token);\n }\n\n // ---------------- Documents ----------------\n\n async uploadDocuments(params: { documents: Array<{ name: string; content: string; tag_ids?: string[]; metadata?: Record<string, string>; }>; }): Promise<UploadDocumentsResponse> {\n const documentsPayload = params.documents.map(doc => {\n // Handle both plain base64 and data URLs\n let base64Content: string;\n if (doc.content.startsWith('data:')) {\n // Extract base64 from data URL (e.g., \"data:application/pdf;base64,JVBERi0xLjQK...\")\n base64Content = doc.content.split(',')[1];\n } else {\n // Plain base64 string\n base64Content = doc.content;\n }\n\n const payload: {\n name: string;\n content: string;\n tag_ids?: string[];\n metadata?: Record<string, string>;\n } = {\n name: doc.name,\n content: base64Content,\n };\n if (doc.tag_ids && doc.tag_ids.length > 0) payload.tag_ids = doc.tag_ids;\n if (doc.metadata) payload.metadata = doc.metadata;\n return payload;\n });\n\n return this.http.post<UploadDocumentsResponse>(\n `/v0/orgs/${this.organizationId}/documents`,\n { documents: documentsPayload }\n );\n }\n\n async listDocuments(params?: { skip?: number; limit?: number; tagIds?: string; nameSearch?: string; metadataSearch?: string; }): Promise<ListDocumentsResponse> {\n const queryParams: Record<string, string | number | undefined> = {\n skip: params?.skip || 0,\n limit: params?.limit || 10,\n };\n if (params?.tagIds) queryParams.tag_ids = params.tagIds;\n if (params?.nameSearch) queryParams.name_search = params.nameSearch;\n if (params?.metadataSearch) queryParams.metadata_search = params.metadataSearch;\n\n return this.http.get<ListDocumentsResponse>(`/v0/orgs/${this.organizationId}/documents`, {\n params: queryParams\n });\n }\n\n async getDocument(params: { documentId: string; fileType: string; }): Promise<GetDocumentResponse> {\n const { documentId, fileType } = params;\n const response = await this.http.get<{\n id: string;\n pdf_id: string;\n document_name: string;\n upload_date: string;\n uploaded_by: string;\n state: string;\n tag_ids: string[];\n type: string;\n metadata: Record<string, string>;\n content: string;\n }>(`/v0/orgs/${this.organizationId}/documents/${documentId}?file_type=${fileType}`);\n\n const binaryContent = atob(response.content);\n const len = binaryContent.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryContent.charCodeAt(i);\n }\n\n return {\n id: response.id,\n pdf_id: response.pdf_id,\n document_name: response.document_name,\n upload_date: response.upload_date,\n uploaded_by: response.uploaded_by,\n state: response.state,\n tag_ids: response.tag_ids,\n type: response.type,\n metadata: response.metadata,\n content: bytes.buffer\n };\n }\n\n async updateDocument(params: { documentId: string; documentName?: string; tagIds?: string[]; metadata?: Record<string, string>; }) {\n const { documentId, documentName, tagIds, metadata } = params;\n const updateData: { tag_ids?: string[]; document_name?: string; metadata?: Record<string, string> } = {};\n if (documentName !== undefined) updateData.document_name = documentName;\n if (tagIds !== undefined) updateData.tag_ids = tagIds;\n if (metadata !== undefined) updateData.metadata = metadata;\n return this.http.put(`/v0/orgs/${this.organizationId}/documents/${documentId}`, updateData);\n }\n\n async deleteDocument(params: { documentId: string; }) {\n const { documentId } = params;\n return this.http.delete(`/v0/orgs/${this.organizationId}/documents/${documentId}`);\n }\n\n // ---------------- OCR ----------------\n\n async getOCRBlocks(params: { documentId: string; }): Promise<OCRBlock[]> {\n const { documentId } = params;\n return this.http.get<OCRBlock[]>(`/v0/orgs/${this.organizationId}/ocr/download/blocks/${documentId}`);\n }\n\n async getOCRText(params: { documentId: string; pageNum?: number; }): Promise<string> {\n const { documentId, pageNum } = params;\n const url = `/v0/orgs/${this.organizationId}/ocr/download/text/${documentId}${pageNum ? `?page_num=${pageNum}` : ''}`;\n return this.http.get<string>(url);\n }\n\n async getOCRMetadata(params: { documentId: string; }): Promise<GetOCRMetadataResponse> {\n const { documentId } = params;\n return this.http.get<GetOCRMetadataResponse>(`/v0/orgs/${this.organizationId}/ocr/download/metadata/${documentId}`);\n }\n\n // ---------------- LLM ----------------\n\n async runLLM(params: { documentId: string; promptRevId: string; force?: boolean; }): Promise<RunLLMResponse> {\n const { documentId, promptRevId, force } = params;\n return this.http.post<RunLLMResponse>(\n `/v0/orgs/${this.organizationId}/llm/run/${documentId}`,\n {},\n { params: { prompt_revid: promptRevId, force } }\n );\n }\n\n async getLLMResult(params: { documentId: string; promptRevId: string; fallback?: boolean; }): Promise<GetLLMResultResponse> {\n const { documentId, promptRevId, fallback } = params;\n return this.http.get<GetLLMResultResponse>(\n `/v0/orgs/${this.organizationId}/llm/result/${documentId}`,\n { params: { prompt_revid: promptRevId, fallback } }\n );\n }\n\n async updateLLMResult({\n documentId,\n promptId,\n result,\n isVerified = false\n }: { documentId: string; promptId: string; result: Record<string, JsonValue>; isVerified?: boolean; }): Promise<GetLLMResultResponse> {\n const response = await this.http.put<GetLLMResultResponse>(\n `/v0/orgs/${this.organizationId}/llm/result/${documentId}`,\n { updated_llm_result: result, is_verified: isVerified },\n { params: { prompt_revid: promptId } }\n );\n return response;\n }\n\n async deleteLLMResult(params: { documentId: string; promptId: string; }) {\n const { documentId, promptId } = params;\n return this.http.delete(\n `/v0/orgs/${this.organizationId}/llm/result/${documentId}`,\n { params: { prompt_revid: promptId } }\n );\n }\n\n async downloadAllLLMResults(params: { documentId: string; }) {\n const { documentId } = params;\n return this.http.get(\n `/v0/orgs/${this.organizationId}/llm/results/${documentId}/download`,\n { responseType: 'blob' as const }\n );\n }\n\n // ---------------- Prompts ----------------\n\n async createPrompt(params: Omit<CreatePromptParams, 'organizationId'>): Promise<Prompt> {\n const { prompt } = params;\n return this.http.post<Prompt>(`/v0/orgs/${this.organizationId}/prompts`, prompt);\n }\n\n async listPrompts(params?: Omit<ListPromptsParams, 'organizationId'>): Promise<ListPromptsResponse> {\n const { skip, limit, document_id, tag_ids, nameSearch } = params || {};\n return this.http.get<ListPromptsResponse>(`/v0/orgs/${this.organizationId}/prompts`, {\n params: {\n skip: skip || 0,\n limit: limit || 10,\n document_id,\n tag_ids,\n name_search: nameSearch\n }\n });\n }\n\n async getPrompt(params: Omit<GetPromptParams, 'organizationId'>): Promise<Prompt> {\n const { promptRevId } = params;\n return this.http.get<Prompt>(`/v0/orgs/${this.organizationId}/prompts/${promptRevId}`);\n }\n\n async updatePrompt(params: Omit<UpdatePromptParams, 'organizationId'>): Promise<Prompt> {\n const { promptId, prompt } = params;\n return this.http.put<Prompt>(`/v0/orgs/${this.organizationId}/prompts/${promptId}`, prompt);\n }\n\n async deletePrompt(params: Omit<DeletePromptParams, 'organizationId'>): Promise<{ message: string }> {\n const { promptId } = params;\n return this.http.delete<{ message: string }>(`/v0/orgs/${this.organizationId}/prompts/${promptId}`);\n }\n\n // ---------------- Tags ----------------\n\n async createTag(params: { tag: Omit<Tag, 'id' | 'created_at' | 'updated_at'>; }): Promise<Tag> {\n const { tag } = params;\n return this.http.post<Tag>(`/v0/orgs/${this.organizationId}/tags`, tag);\n }\n\n async getTag({ tagId }: { tagId: string; }): Promise<Tag> {\n return this.http.get<Tag>(`/v0/orgs/${this.organizationId}/tags/${tagId}`);\n }\n\n async listTags(params?: { skip?: number; limit?: number; nameSearch?: string; }): Promise<ListTagsResponse> {\n const { skip, limit, nameSearch } = params || {};\n return this.http.get<ListTagsResponse>(`/v0/orgs/${this.organizationId}/tags`, {\n params: { skip: skip || 0, limit: limit || 10, name_search: nameSearch }\n });\n }\n\n async updateTag(params: { tagId: string; tag: Partial<Omit<Tag, 'id' | 'created_at' | 'updated_at'>>; }): Promise<Tag> {\n const { tagId, tag } = params;\n return this.http.put<Tag>(`/v0/orgs/${this.organizationId}/tags/${tagId}`, tag);\n }\n\n async deleteTag(params: { tagId: string; }): Promise<{ message: string }> {\n const { tagId } = params;\n return this.http.delete<{ message: string }>(`/v0/orgs/${this.organizationId}/tags/${tagId}`);\n }\n\n // ---------------- Forms ----------------\n\n async createForm(form: Omit<CreateFormParams, 'organizationId'>): Promise<Form> {\n const { name, response_format } = form;\n return this.http.post<Form>(`/v0/orgs/${this.organizationId}/forms`, { name, response_format });\n }\n\n async listForms(params?: Omit<ListFormsParams, 'organizationId'>): Promise<ListFormsResponse> {\n const { skip, limit, tag_ids } = params || {};\n return this.http.get<ListFormsResponse>(`/v0/orgs/${this.organizationId}/forms`, {\n params: { skip: skip || 0, limit: limit || 10, tag_ids }\n });\n }\n\n async getForm(params: Omit<GetFormParams, 'organizationId'>): Promise<Form> {\n const { formRevId } = params;\n return this.http.get<Form>(`/v0/orgs/${this.organizationId}/forms/${formRevId}`);\n }\n\n async updateForm(params: Omit<UpdateFormParams, 'organizationId'>): Promise<Form> {\n const { formId, form } = params;\n return this.http.put<Form>(`/v0/orgs/${this.organizationId}/forms/${formId}`, form);\n }\n\n async deleteForm(params: Omit<DeleteFormParams, 'organizationId'>): Promise<{ message: string }> {\n const { formId } = params;\n return this.http.delete<{ message: string }>(`/v0/orgs/${this.organizationId}/forms/${formId}`);\n }\n\n async submitForm(params: Omit<SubmitFormParams, 'organizationId'>): Promise<FormSubmission> {\n const { documentId, formRevId, submission_data, submitted_by } = params;\n return this.http.post<FormSubmission>(`/v0/orgs/${this.organizationId}/forms/submissions/${documentId}`, {\n form_revid: formRevId,\n submission_data: submission_data,\n submitted_by: submitted_by\n });\n }\n\n async getFormSubmission(params: Omit<GetFormSubmissionParams, 'organizationId'>): Promise<FormSubmission | null> {\n const { documentId, formRevId } = params;\n return this.http.get<FormSubmission | null>(`/v0/orgs/${this.organizationId}/forms/submissions/${documentId}?form_revid=${formRevId}`);\n }\n\n async deleteFormSubmission(params: Omit<DeleteFormSubmissionParams, 'organizationId'>): Promise<void> {\n const { documentId, formRevId } = params;\n await this.http.delete(`/v0/orgs/${this.organizationId}/forms/submissions/${documentId}`, { params: { form_revid: formRevId } });\n }\n\n\n // ---------------- Schemas ----------------\n\n async createSchema(schema: Omit<CreateSchemaParams, 'organizationId'>): Promise<Schema> {\n return this.http.post<Schema>(`/v0/orgs/${this.organizationId}/schemas`, schema);\n }\n\n async listSchemas(params: Omit<ListSchemasParams, 'organizationId'>): Promise<ListSchemasResponse> {\n const { skip, limit, nameSearch } = params || {};\n return this.http.get<ListSchemasResponse>(`/v0/orgs/${this.organizationId}/schemas`, {\n params: { skip: skip || 0, limit: limit || 10, name_search: nameSearch }\n });\n }\n\n async getSchema(params: Omit<GetSchemaParams, 'organizationId'>): Promise<Schema> {\n const { schemaRevId } = params;\n return this.http.get<Schema>(`/v0/orgs/${this.organizationId}/schemas/${schemaRevId}`);\n }\n\n async updateSchema(params: Omit<UpdateSchemaParams, 'organizationId'>): Promise<Schema> {\n const { schemaId, schema } = params;\n return this.http.put<Schema>(`/v0/orgs/${this.organizationId}/schemas/${schemaId}`, schema);\n }\n\n async deleteSchema(params: Omit<DeleteSchemaParams, 'organizationId'>): Promise<{ message: string }> {\n const { schemaId } = params;\n return this.http.delete<{ message: string }>(`/v0/orgs/${this.organizationId}/schemas/${schemaId}`);\n }\n\n async validateAgainstSchema(params: { schemaRevId: string; data: Record<string, unknown> }): Promise<{ valid: boolean; errors?: string[] }> {\n const { schemaRevId, data } = params;\n return this.http.post<{ valid: boolean; errors?: string[] }>(`/v0/orgs/${this.organizationId}/schemas/${schemaRevId}/validate`, { data });\n }\n\n // ---------------- Payments ----------------\n\n async getCustomerPortal(): Promise<PortalSessionResponse> {\n return this.http.post<PortalSessionResponse>(`/v0/orgs/${this.organizationId}/payments/customer-portal`, {});\n }\n\n async getSubscription(): Promise<SubscriptionResponse> {\n return this.http.get<SubscriptionResponse>(`/v0/orgs/${this.organizationId}/payments/subscription`);\n }\n\n async activateSubscription(): Promise<{ status: string; message: string }> {\n return this.http.put<{ status: string; message: string }>(`/v0/orgs/${this.organizationId}/payments/subscription`, {});\n }\n\n async cancelSubscription(): Promise<{ status: string; message: string }> {\n return this.http.delete<{ status: string; message: string }>(`/v0/orgs/${this.organizationId}/payments/subscription`);\n }\n\n\n async getCurrentUsage(): Promise<UsageResponse> {\n return this.http.get<UsageResponse>(`/v0/orgs/${this.organizationId}/payments/usage`);\n }\n\n async addCredits(amount: number): Promise<CreditUpdateResponse> {\n return this.http.post<CreditUpdateResponse>(`/v0/orgs/${this.organizationId}/payments/credits/add`, { amount });\n }\n\n async getCreditConfig(): Promise<CreditConfig> {\n return this.http.get<CreditConfig>(`/v0/orgs/${this.organizationId}/payments/credits/config`);\n }\n\n async purchaseCredits(request: { credits: number; success_url: string; cancel_url: string; }) {\n return this.http.post(`/v0/orgs/${this.organizationId}/payments/credits/purchase`, request);\n }\n\n async getUsageRange(request: UsageRangeRequest): Promise<UsageRangeResponse> {\n return this.http.get<UsageRangeResponse>(`/v0/orgs/${this.organizationId}/payments/usage/range`, { params: request });\n }\n\n async createCheckoutSession(planId: string): Promise<PortalSessionResponse> {\n return this.http.post<PortalSessionResponse>(`/v0/orgs/${this.organizationId}/payments/checkout-session`, { plan_id: planId });\n }\n\n // ---------------- LLM Chat (Org) ----------------\n\n async runLLMChat(request: LLMChatRequest): Promise<LLMChatResponse> {\n return this.http.post(`/v0/orgs/${this.organizationId}/llm/run`, request);\n }\n\n async runLLMChatStream(\n request: LLMChatRequest,\n onChunk: (chunk: LLMChatStreamChunk | LLMChatStreamError) => void,\n onError?: (error: Error) => void,\n abortSignal?: AbortSignal\n ): Promise<void> {\n const streamingRequest = { ...request, stream: true };\n return this.http.stream(`/v0/orgs/${this.organizationId}/llm/run`, streamingRequest, onChunk, onError, abortSignal);\n }\n\n /**\n * Get the current HTTP client (for advanced usage)\n */\n getHttpClient(): HttpClient {\n return this.http;\n }\n}\n"]}
|