@docrouter/sdk 0.1.0 → 0.2.1

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/dist/index.js CHANGED
@@ -269,11 +269,20 @@ var DocRouterAccount = class {
269
269
  return this.http.post(`/v0/orgs/${organizationId}/access_tokens`, request);
270
270
  }
271
271
  async getOrganizationTokens(organizationId) {
272
- return this.http.get(`/v0/orgs/${organizationId}/access_tokens`);
272
+ const resp = await this.http.get(`/v0/orgs/${organizationId}/access_tokens`);
273
+ return Array.isArray(resp) ? resp : resp.access_tokens;
273
274
  }
274
275
  async deleteOrganizationToken(tokenId, organizationId) {
275
276
  return this.http.delete(`/v0/orgs/${organizationId}/access_tokens/${tokenId}`);
276
277
  }
278
+ /**
279
+ * Get the organization ID associated with an API token
280
+ * @param token The API token to resolve
281
+ * @returns The organization ID for org-specific tokens, or null for account-level tokens
282
+ */
283
+ async getOrganizationFromToken(token) {
284
+ return this.http.get(`/v0/account/token/organization?token=${encodeURIComponent(token)}`);
285
+ }
277
286
  // --------------- LLM (account-level) ---------------
278
287
  async listLLMModels(params) {
279
288
  return this.http.get("/v0/account/llm/models", {
@@ -302,22 +311,13 @@ var DocRouterAccount = class {
302
311
  }
303
312
  async getUser(userId) {
304
313
  const response = await this.listUsers({ user_id: userId });
305
- const user = response.users[0];
306
- return { user };
314
+ return response.users[0];
307
315
  }
308
316
  async createUser(user) {
309
- const created = await this.http.post(
310
- "/v0/account/users",
311
- user
312
- );
313
- return created.user ? created : { user: created };
317
+ return this.http.post("/v0/account/users", user);
314
318
  }
315
319
  async updateUser(userId, update) {
316
- const updated = await this.http.put(
317
- `/v0/account/users/${userId}`,
318
- update
319
- );
320
- return updated.user ? updated : { user: updated };
320
+ return this.http.put(`/v0/account/users/${userId}`, update);
321
321
  }
322
322
  async deleteUser(userId) {
323
323
  await this.http.delete(`/v0/account/users/${userId}`);
@@ -342,6 +342,69 @@ var DocRouterAccount = class {
342
342
  async deleteAWSConfig() {
343
343
  return this.http.delete("/v0/account/aws_config");
344
344
  }
345
+ // --------------- Invitations ---------------
346
+ async createInvitation(invitation) {
347
+ return this.http.post("/v0/account/email/invitations", invitation);
348
+ }
349
+ async getInvitations(params) {
350
+ const queryParams = new URLSearchParams();
351
+ if (params?.skip !== void 0) queryParams.append("skip", String(params.skip));
352
+ if (params?.limit !== void 0) queryParams.append("limit", String(params.limit));
353
+ return this.http.get(`/v0/account/email/invitations?${queryParams.toString()}`);
354
+ }
355
+ async getInvitation(token) {
356
+ return this.http.get(`/v0/account/email/invitations/${token}`);
357
+ }
358
+ async acceptInvitation(token, data) {
359
+ return this.http.post(`/v0/account/email/invitations/${token}/accept`, data);
360
+ }
361
+ // --------------- Payments & Subscriptions ---------------
362
+ async getCustomerPortal(orgId) {
363
+ return this.http.post(`/v0/orgs/${orgId}/payments/customer-portal`);
364
+ }
365
+ async getSubscription(orgId) {
366
+ return this.http.get(`/v0/orgs/${orgId}/payments/subscription`);
367
+ }
368
+ async activateSubscription(orgId) {
369
+ return this.http.put(`/v0/orgs/${orgId}/payments/subscription`);
370
+ }
371
+ async cancelSubscription(orgId) {
372
+ return this.http.delete(`/v0/orgs/${orgId}/payments/subscription`);
373
+ }
374
+ async getCurrentUsage(orgId) {
375
+ return this.http.get(`/v0/orgs/${orgId}/payments/usage`);
376
+ }
377
+ async addCredits(orgId, amount) {
378
+ return this.http.post(`/v0/orgs/${orgId}/payments/credits/add`, { amount });
379
+ }
380
+ async getCreditConfig(orgId) {
381
+ return this.http.get(`/v0/orgs/${orgId}/payments/credits/config`);
382
+ }
383
+ async purchaseCredits(orgId, request) {
384
+ return this.http.post(`/v0/orgs/${orgId}/payments/credits/purchase`, request);
385
+ }
386
+ async getUsageRange(orgId, request) {
387
+ const queryParams = new URLSearchParams();
388
+ if (request.start_date) queryParams.append("start_date", request.start_date);
389
+ if (request.end_date) queryParams.append("end_date", request.end_date);
390
+ return this.http.get(`/v0/orgs/${orgId}/payments/usage/range?${queryParams.toString()}`);
391
+ }
392
+ async createCheckoutSession(orgId, planId) {
393
+ return this.http.post(`/v0/orgs/${orgId}/payments/checkout-session`, { plan_id: planId });
394
+ }
395
+ /**
396
+ * Run LLM chat (account level)
397
+ */
398
+ async runLLMChat(request) {
399
+ return this.http.post("/v0/account/llm/run", request);
400
+ }
401
+ /**
402
+ * Run LLM chat with streaming (account level)
403
+ */
404
+ async runLLMChatStream(request, onChunk, onError, abortSignal) {
405
+ const streamingRequest = { ...request, stream: true };
406
+ return this.http.stream("/v0/account/llm/run", streamingRequest, onChunk, onError, abortSignal);
407
+ }
345
408
  /**
346
409
  * Get the current HTTP client (for advanced usage)
347
410
  */
@@ -372,24 +435,16 @@ var DocRouterOrg = class {
372
435
  async uploadDocuments(params) {
373
436
  const documentsPayload = params.documents.map((doc) => {
374
437
  let base64Content;
375
- if (doc.content instanceof ArrayBuffer) {
376
- const buffer = Buffer.from(doc.content);
377
- base64Content = buffer.toString("base64");
378
- } else if (doc.content instanceof Buffer) {
379
- base64Content = doc.content.toString("base64");
380
- } else if (doc.content instanceof Uint8Array) {
381
- const buffer = Buffer.from(doc.content);
382
- base64Content = buffer.toString("base64");
438
+ if (doc.content.startsWith("data:")) {
439
+ base64Content = doc.content.split(",")[1];
383
440
  } else {
384
- const uint8Array = new Uint8Array(doc.content);
385
- const buffer = Buffer.from(uint8Array);
386
- base64Content = buffer.toString("base64");
441
+ base64Content = doc.content;
387
442
  }
388
443
  const payload = {
389
444
  name: doc.name,
390
- content: base64Content,
391
- type: doc.type
445
+ content: base64Content
392
446
  };
447
+ if (doc.tag_ids && doc.tag_ids.length > 0) payload.tag_ids = doc.tag_ids;
393
448
  if (doc.metadata) payload.metadata = doc.metadata;
394
449
  return payload;
395
450
  });
@@ -485,10 +540,7 @@ var DocRouterOrg = class {
485
540
  { updated_llm_result: result, is_verified: isVerified },
486
541
  { params: { prompt_revid: promptId } }
487
542
  );
488
- if (response.status !== 200) {
489
- throw new Error(`Failed to update LLM result for document ${documentId} and prompt ${promptId}: ${response.data}`);
490
- }
491
- return response.data;
543
+ return response;
492
544
  }
493
545
  async deleteLLMResult(params) {
494
546
  const { documentId, promptId } = params;
@@ -504,6 +556,35 @@ var DocRouterOrg = class {
504
556
  { responseType: "blob" }
505
557
  );
506
558
  }
559
+ // ---------------- Prompts ----------------
560
+ async createPrompt(params) {
561
+ const { prompt } = params;
562
+ return this.http.post(`/v0/orgs/${this.organizationId}/prompts`, prompt);
563
+ }
564
+ async listPrompts(params) {
565
+ const { skip, limit, document_id, tag_ids, nameSearch } = params || {};
566
+ return this.http.get(`/v0/orgs/${this.organizationId}/prompts`, {
567
+ params: {
568
+ skip: skip || 0,
569
+ limit: limit || 10,
570
+ document_id,
571
+ tag_ids,
572
+ name_search: nameSearch
573
+ }
574
+ });
575
+ }
576
+ async getPrompt(params) {
577
+ const { promptRevId } = params;
578
+ return this.http.get(`/v0/orgs/${this.organizationId}/prompts/${promptRevId}`);
579
+ }
580
+ async updatePrompt(params) {
581
+ const { promptId, prompt } = params;
582
+ return this.http.put(`/v0/orgs/${this.organizationId}/prompts/${promptId}`, prompt);
583
+ }
584
+ async deletePrompt(params) {
585
+ const { promptId } = params;
586
+ return this.http.delete(`/v0/orgs/${this.organizationId}/prompts/${promptId}`);
587
+ }
507
588
  // ---------------- Tags ----------------
508
589
  async createTag(params) {
509
590
  const { tag } = params;
@@ -565,35 +646,6 @@ var DocRouterOrg = class {
565
646
  const { documentId, formRevId } = params;
566
647
  await this.http.delete(`/v0/orgs/${this.organizationId}/forms/submissions/${documentId}`, { params: { form_revid: formRevId } });
567
648
  }
568
- // ---------------- Prompts ----------------
569
- async createPrompt(params) {
570
- const { prompt } = params;
571
- return this.http.post(`/v0/orgs/${this.organizationId}/prompts`, prompt);
572
- }
573
- async listPrompts(params) {
574
- const { skip, limit, document_id, tag_ids, nameSearch } = params || {};
575
- return this.http.get(`/v0/orgs/${this.organizationId}/prompts`, {
576
- params: {
577
- skip: skip || 0,
578
- limit: limit || 10,
579
- document_id,
580
- tag_ids,
581
- name_search: nameSearch
582
- }
583
- });
584
- }
585
- async getPrompt(params) {
586
- const { promptRevId } = params;
587
- return this.http.get(`/v0/orgs/${this.organizationId}/prompts/${promptRevId}`);
588
- }
589
- async updatePrompt(params) {
590
- const { promptId, prompt } = params;
591
- return this.http.put(`/v0/orgs/${this.organizationId}/prompts/${promptId}`, prompt);
592
- }
593
- async deletePrompt(params) {
594
- const { promptId } = params;
595
- return this.http.delete(`/v0/orgs/${this.organizationId}/prompts/${promptId}`);
596
- }
597
649
  // ---------------- Schemas ----------------
598
650
  async createSchema(schema) {
599
651
  return this.http.post(`/v0/orgs/${this.organizationId}/schemas`, schema);
@@ -620,29 +672,6 @@ var DocRouterOrg = class {
620
672
  const { schemaRevId, data } = params;
621
673
  return this.http.post(`/v0/orgs/${this.organizationId}/schemas/${schemaRevId}/validate`, { data });
622
674
  }
623
- // ---------------- Flows ----------------
624
- async createFlow(params) {
625
- const { flow } = params;
626
- return this.http.post(`/v0/orgs/${this.organizationId}/flows`, flow);
627
- }
628
- async updateFlow(params) {
629
- const { flowId, flow } = params;
630
- return this.http.put(`/v0/orgs/${this.organizationId}/flows/${flowId}`, flow);
631
- }
632
- async listFlows(params) {
633
- const { skip, limit } = params || {};
634
- return this.http.get(`/v0/orgs/${this.organizationId}/flows`, {
635
- params: { skip: skip || 0, limit: limit || 10 }
636
- });
637
- }
638
- async getFlow(params) {
639
- const { flowId } = params;
640
- return this.http.get(`/v0/orgs/${this.organizationId}/flows/${flowId}`);
641
- }
642
- async deleteFlow(params) {
643
- const { flowId } = params;
644
- await this.http.delete(`/v0/orgs/${this.organizationId}/flows/${flowId}`);
645
- }
646
675
  // ---------------- Payments ----------------
647
676
  async getCustomerPortal() {
648
677
  return this.http.post(`/v0/orgs/${this.organizationId}/payments/customer-portal`, {});
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/http-client.ts","../src/docrouter-account.ts","../src/docrouter-org.ts"],"names":["axios","isAxiosError"],"mappings":"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","file":"index.js","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":["axios","isAxiosError"],"mappings":"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","file":"index.js","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 TokenOrganizationResponse,\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 /**\n * Get the organization ID associated with an API token\n * @param token The API token to resolve\n * @returns The organization ID for org-specific tokens, or null for account-level tokens\n */\n async getOrganizationFromToken(token: string): Promise<TokenOrganizationResponse> {\n return this.http.get<TokenOrganizationResponse>(`/v0/account/token/organization?token=${encodeURIComponent(token)}`);\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"]}