@mjquinlan2000/practicepanther-mcp 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +130 -0
- package/dist/auth.d.ts +4 -0
- package/dist/auth.js +9 -0
- package/dist/auth.js.map +1 -0
- package/dist/chunk-A6QUURB5.js +234 -0
- package/dist/chunk-A6QUURB5.js.map +1 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.js +1779 -0
- package/dist/server.js.map +1 -0
- package/openapi.json +11493 -0
- package/package.json +34 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server.ts","../src/client/core/bodySerializer.gen.ts","../src/client/core/params.gen.ts","../src/client/core/serverSentEvents.gen.ts","../src/client/core/pathSerializer.gen.ts","../src/client/core/utils.gen.ts","../src/client/core/auth.gen.ts","../src/client/client/utils.gen.ts","../src/client/client/client.gen.ts","../src/client/client.gen.ts","../src/pp.ts","../src/client/sdk.gen.ts","../src/schemas.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { z } from \"zod\";\n\n// Configure client (sets baseUrl + auth)\nimport \"./pp.js\";\n\nimport {\n accountsGetAccount,\n accountsGetAccounts,\n bankAccountsGetBankAccount,\n bankAccountsGetBankAccounts,\n callLogsGetCallLog,\n callLogsGetCallLogs,\n contactsGetContact,\n contactsGetContacts,\n customFieldsGetCustomField,\n customFieldsGetCustomFieldsForAccount,\n customFieldsGetCustomFieldsForContact,\n customFieldsGetCustomFieldsForMatter,\n emailsGetEmail,\n emailsGetEmails,\n eventsGetEvent,\n eventsGetEvents,\n expenseCategoriesGetExpenseCategories,\n expenseCategoriesGetExpenseCategory,\n expensesGetExpense,\n expensesGetExpensess,\n filesDownloadFile,\n filesGetFile,\n filesGetFiles,\n flatFeesGetFlatFee,\n flatFeesGetFlatFees,\n invoicesGetInvoice,\n invoicesGetInvoices,\n itemsGetItem,\n itemsGetItems,\n mattersGetMatter,\n mattersGetMatters,\n messagesGetMessagesAsync,\n notesGetNote,\n notesGetNotes,\n paymentsGetPayment,\n paymentsGetPayments,\n relationshipsGetRelationship,\n relationshipsGetRelationships,\n tagsGetTagsForAccounts,\n tagsGetTagsForActivities,\n tagsGetTagsForProjects,\n tasksGetTask,\n tasksGetTasks,\n timeEntriesGetTimeEntry,\n timeEntriesGetTimeEntrys,\n usersGetUser,\n usersGetUsers,\n usersMe,\n} from \"./client/index.js\";\n\nimport {\n AccountSchema,\n BankAccountSchema,\n CallLogSchema,\n ContactSchema,\n CustomFieldSchema,\n EmailSchema,\n EventSchema,\n ExpenseCategorySchema,\n ExpenseSchema,\n FileSchema,\n FlatFeeSchema,\n InvoiceSchema,\n ItemSchema,\n listOf,\n MatterSchema,\n MessageSchema,\n NoteSchema,\n PaymentDetailSchema,\n PaymentSchema,\n RelationshipSchema,\n TagSchema,\n TaskSchema,\n TimeEntrySchema,\n UserSchema,\n} from \"./schemas.js\";\n\nconst server = new McpServer(\n {\n name: \"practicepanther\",\n version: \"1.0.0\",\n },\n {\n instructions: [\n \"PracticePanther is a legal practice management system.\",\n \"IMPORTANT: The API does not support pagination.\",\n \"List endpoints return ALL matching records, which can be very large.\",\n \"Always constrain list calls with filters (date ranges, account/matter IDs, tags, etc.) to avoid returning excessive data.\",\n \"Prefer using created_since/updated_since or date_from/date_to to narrow results.\",\n \"If looking for a specific record, use a get-by-id tool instead of listing and filtering client-side.\",\n ].join(\" \"),\n },\n);\n\n// Helper to strip undefined values from query objects\nfunction cleanQuery<T extends Record<string, unknown>>(q: T): T {\n return Object.fromEntries(\n Object.entries(q).filter(([, v]) => v !== undefined),\n ) as T;\n}\n\n// Helper to format error responses\nfunction err(e: unknown) {\n const msg = e instanceof Error ? e.message : String(e);\n return {\n content: [{ type: \"text\" as const, text: `Error: ${msg}` }],\n isError: true as const,\n };\n}\n\n// ── Tool config types ──\n\ninterface ToolConfig {\n name: string;\n description: string;\n // biome-ignore lint/suspicious/noExplicitAny: SDK functions have varying signatures\n sdkFn: (options?: any) => Promise<any>;\n schema?: z.ZodTypeAny;\n isList?: boolean;\n pathParams?: Record<string, string>; // { mcpName: description } — SDK name is always the same\n queryParams?: Record<string, z.ZodType>;\n rawContent?: boolean;\n}\n\n// ── Tool definitions ──\n\nconst tools: ToolConfig[] = [\n // ── Accounts ──\n {\n name: \"get_account\",\n description:\n \"Get a single account (company or individual) by ID. Returns contacts, tags, custom fields, and assigned users.\",\n sdkFn: accountsGetAccount,\n schema: AccountSchema,\n pathParams: { id: \"Account ID\" },\n },\n {\n name: \"list_accounts\",\n description:\n \"List accounts with optional filters. An account represents one or more contacts (e.g. a company).\",\n sdkFn: accountsGetAccounts,\n schema: AccountSchema,\n isList: true,\n queryParams: {\n assigned_to_user_id: z\n .string()\n .optional()\n .describe(\"Filter by assigned user ID\"),\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n search_text: z.string().optional().describe(\"Search text\"),\n account_tag: z.string().optional().describe(\"Filter by account tag\"),\n },\n },\n\n // ── Bank Accounts ──\n {\n name: \"get_bank_account\",\n description:\n \"Get a single bank account (operating, trust, or credit card) by ID.\",\n sdkFn: bankAccountsGetBankAccount,\n schema: BankAccountSchema,\n pathParams: { id: \"Bank Account ID\" },\n },\n {\n name: \"list_bank_accounts\",\n description: \"List all bank accounts.\",\n sdkFn: bankAccountsGetBankAccounts,\n schema: BankAccountSchema,\n isList: true,\n queryParams: {\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n },\n },\n\n // ── Call Logs ──\n {\n name: \"get_call_log\",\n description: \"Get a single call log entry by ID.\",\n sdkFn: callLogsGetCallLog,\n schema: CallLogSchema,\n pathParams: { id: \"Call Log ID\" },\n },\n {\n name: \"list_call_logs\",\n description:\n \"List call log entries with optional filters by account, matter, user, date range, or tag.\",\n sdkFn: callLogsGetCallLogs,\n schema: CallLogSchema,\n isList: true,\n queryParams: {\n assigned_to_user_id: z\n .string()\n .optional()\n .describe(\"Filter by assigned user ID\"),\n account_id: z.string().optional().describe(\"Filter by account ID\"),\n matter_id: z.string().optional().describe(\"Filter by matter ID\"),\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n date_from: z\n .string()\n .optional()\n .describe(\"ISO date — filter from this date\"),\n date_to: z.string().optional().describe(\"ISO date — filter to this date\"),\n activity_tag: z.string().optional().describe(\"Filter by activity tag\"),\n },\n },\n\n // ── Contacts ──\n {\n name: \"get_contact\",\n description:\n \"Get a single contact by ID. Each account can have multiple contacts; one is the primary.\",\n sdkFn: contactsGetContact,\n schema: ContactSchema,\n pathParams: { id: \"Contact ID\" },\n },\n {\n name: \"list_contacts\",\n description:\n \"List contacts with optional filters by account, status, user, search text, or company.\",\n sdkFn: contactsGetContacts,\n schema: ContactSchema,\n isList: true,\n queryParams: {\n assigned_to_user_id: z\n .string()\n .optional()\n .describe(\"Filter by assigned user ID\"),\n account_id: z.string().optional().describe(\"Filter by account ID\"),\n status: z\n .enum([\"Active\", \"Archived\"])\n .optional()\n .describe(\"Filter by status\"),\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n search_text: z.string().optional().describe(\"Search text\"),\n account_tag: z.string().optional().describe(\"Filter by account tag\"),\n company_name: z.string().optional().describe(\"Filter by company name\"),\n },\n },\n\n // ── Custom Fields ──\n {\n name: \"get_custom_field\",\n description: \"Get a single custom field definition by ID.\",\n sdkFn: customFieldsGetCustomField,\n schema: CustomFieldSchema,\n pathParams: { id: \"Custom Field ID\" },\n },\n {\n name: \"list_custom_fields_for_company\",\n description: \"List custom field definitions for companies (accounts).\",\n sdkFn: customFieldsGetCustomFieldsForAccount,\n schema: CustomFieldSchema,\n isList: true,\n queryParams: {\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n },\n },\n {\n name: \"list_custom_fields_for_matter\",\n description: \"List custom field definitions for matters.\",\n sdkFn: customFieldsGetCustomFieldsForMatter,\n schema: CustomFieldSchema,\n isList: true,\n queryParams: {\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n },\n },\n {\n name: \"list_custom_fields_for_contact\",\n description: \"List custom field definitions for contacts.\",\n sdkFn: customFieldsGetCustomFieldsForContact,\n schema: CustomFieldSchema,\n isList: true,\n queryParams: {\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n },\n },\n\n // ── Emails ──\n {\n name: \"get_email\",\n description:\n \"Get a single email by ID. Returns full HTML body when fetched individually.\",\n sdkFn: emailsGetEmail,\n schema: EmailSchema,\n pathParams: { id: \"Email ID\" },\n },\n {\n name: \"list_emails\",\n description:\n \"List emails with optional filters by account, matter, user, tag, or external message ID.\",\n sdkFn: emailsGetEmails,\n schema: EmailSchema,\n isList: true,\n queryParams: {\n assigned_to_user_id: z\n .string()\n .optional()\n .describe(\"Filter by assigned user ID\"),\n account_id: z.string().optional().describe(\"Filter by account ID\"),\n matter_id: z.string().optional().describe(\"Filter by matter ID\"),\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n activity_tag: z.string().optional().describe(\"Filter by activity tag\"),\n external_message_id: z\n .string()\n .optional()\n .describe(\"Filter by external message ID\"),\n },\n },\n\n // ── Events ──\n {\n name: \"get_event\",\n description: \"Get a single calendar event by ID.\",\n sdkFn: eventsGetEvent,\n schema: EventSchema,\n pathParams: { id: \"Event ID\" },\n },\n {\n name: \"list_events\",\n description:\n \"List calendar events with optional filters by account, matter, user, date range, or tag.\",\n sdkFn: eventsGetEvents,\n schema: EventSchema,\n isList: true,\n queryParams: {\n assigned_to_user_id: z\n .string()\n .optional()\n .describe(\"Filter by assigned user ID\"),\n account_id: z.string().optional().describe(\"Filter by account ID\"),\n matter_id: z.string().optional().describe(\"Filter by matter ID\"),\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n date_from: z\n .string()\n .optional()\n .describe(\"ISO date — filter from this date\"),\n date_to: z.string().optional().describe(\"ISO date — filter to this date\"),\n activity_tag: z.string().optional().describe(\"Filter by activity tag\"),\n },\n },\n\n // ── Expense Categories ──\n {\n name: \"get_expense_category\",\n description: \"Get a single expense category by ID.\",\n sdkFn: expenseCategoriesGetExpenseCategory,\n schema: ExpenseCategorySchema,\n pathParams: { id: \"Expense Category ID\" },\n },\n {\n name: \"list_expense_categories\",\n description: \"List all expense categories.\",\n sdkFn: expenseCategoriesGetExpenseCategories,\n schema: ExpenseCategorySchema,\n isList: true,\n queryParams: {\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n },\n },\n\n // ── Expenses ──\n {\n name: \"get_expense\",\n description:\n \"Get a single expense by ID. Includes billable status, amount, and category.\",\n sdkFn: expensesGetExpense,\n schema: ExpenseSchema,\n pathParams: { id: \"Expense ID\" },\n },\n {\n name: \"list_expenses\",\n description:\n \"List expenses with optional filters by account, matter, billing user, category, or date range.\",\n sdkFn: expensesGetExpensess,\n schema: ExpenseSchema,\n isList: true,\n queryParams: {\n account_id: z.string().optional().describe(\"Filter by account ID\"),\n matter_id: z.string().optional().describe(\"Filter by matter ID\"),\n billed_by_user_id: z\n .string()\n .optional()\n .describe(\"Filter by billing user ID\"),\n expense_category_id: z\n .string()\n .optional()\n .describe(\"Filter by expense category ID\"),\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n date_from: z\n .string()\n .optional()\n .describe(\"ISO date — filter from this date\"),\n date_to: z.string().optional().describe(\"ISO date — filter to this date\"),\n },\n },\n\n // ── Files ──\n {\n name: \"get_file\",\n description: \"Get file metadata by ID (name, size, content type).\",\n sdkFn: filesGetFile,\n schema: FileSchema,\n pathParams: { id: \"File ID\" },\n },\n {\n name: \"download_file\",\n description: \"Download a file's contents by ID.\",\n sdkFn: filesDownloadFile,\n pathParams: { id: \"File ID to download\" },\n rawContent: true,\n },\n {\n name: \"list_files\",\n description:\n \"List files with optional filters by account, matter, activity, creator, or search text.\",\n sdkFn: filesGetFiles,\n schema: FileSchema,\n isList: true,\n queryParams: {\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n search_text: z.string().optional().describe(\"Search text\"),\n account_id: z.string().optional().describe(\"Filter by account ID\"),\n matter_id: z.string().optional().describe(\"Filter by matter ID\"),\n activity_id: z.string().optional().describe(\"Filter by activity ID\"),\n created_by_user_id: z\n .string()\n .optional()\n .describe(\"Filter by creating user ID\"),\n },\n },\n\n // ── Flat Fees ──\n {\n name: \"get_flat_fee\",\n description: \"Get a single flat fee entry by ID.\",\n sdkFn: flatFeesGetFlatFee,\n schema: FlatFeeSchema,\n pathParams: { id: \"Flat Fee ID\" },\n },\n {\n name: \"list_flat_fees\",\n description:\n \"List flat fees with optional filters by account, matter, user, item, or date range.\",\n sdkFn: flatFeesGetFlatFees,\n schema: FlatFeeSchema,\n isList: true,\n queryParams: {\n account_id: z.string().optional().describe(\"Filter by account ID\"),\n matter_id: z.string().optional().describe(\"Filter by matter ID\"),\n user_id: z.string().optional().describe(\"Filter by user ID\"),\n item_id: z.string().optional().describe(\"Filter by item ID\"),\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n date_from: z\n .string()\n .optional()\n .describe(\"ISO date — filter from this date\"),\n date_to: z.string().optional().describe(\"ISO date — filter to this date\"),\n },\n },\n\n // ── Invoices ──\n {\n name: \"get_invoice\",\n description:\n \"Get a single invoice by ID with line items (time entries, expenses, flat fees).\",\n sdkFn: invoicesGetInvoice,\n schema: InvoiceSchema,\n pathParams: { id: \"Invoice ID\" },\n },\n {\n name: \"list_invoices\",\n description:\n \"List invoices with optional filters by account, matter, or date range.\",\n sdkFn: invoicesGetInvoices,\n schema: InvoiceSchema,\n isList: true,\n queryParams: {\n account_id: z.string().optional().describe(\"Filter by account ID\"),\n matter_id: z.string().optional().describe(\"Filter by matter ID\"),\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n date_from: z\n .string()\n .optional()\n .describe(\"ISO date — filter from this date\"),\n date_to: z.string().optional().describe(\"ISO date — filter to this date\"),\n },\n },\n\n // ── Items ──\n {\n name: \"get_item\",\n description: \"Get a single billing item/service by ID.\",\n sdkFn: itemsGetItem,\n schema: ItemSchema,\n pathParams: { id: \"Item ID\" },\n },\n {\n name: \"list_items\",\n description: \"List all billing items/services.\",\n sdkFn: itemsGetItems,\n schema: ItemSchema,\n isList: true,\n queryParams: {\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n },\n },\n\n // ── Matters ──\n {\n name: \"get_matter\",\n description:\n \"Get a single matter (case/project) by ID. Returns status, assigned users, tags, and custom fields.\",\n sdkFn: mattersGetMatter,\n schema: MatterSchema,\n pathParams: { id: \"Matter ID\" },\n },\n {\n name: \"list_matters\",\n description:\n \"List matters with optional filters by account, status (Open/Closed/Pending/Archived), user, search text, or tags.\",\n sdkFn: mattersGetMatters,\n schema: MatterSchema,\n isList: true,\n queryParams: {\n assigned_to_user_id: z\n .string()\n .optional()\n .describe(\"Filter by assigned user ID\"),\n account_id: z.string().optional().describe(\"Filter by account ID\"),\n status: z\n .enum([\"Closed\", \"Pending\", \"Open\", \"Archived\"])\n .optional()\n .describe(\"Filter by matter status\"),\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n search_text: z.string().optional().describe(\"Search text\"),\n account_tag: z.string().optional().describe(\"Filter by account tag\"),\n matter_tag: z.string().optional().describe(\"Filter by matter tag\"),\n },\n },\n\n // ── Messages ──\n {\n name: \"list_messages\",\n description: \"List all messages.\",\n sdkFn: messagesGetMessagesAsync,\n schema: MessageSchema,\n isList: true,\n },\n\n // ── Notes ──\n {\n name: \"get_note\",\n description: \"Get a single note by ID.\",\n sdkFn: notesGetNote,\n schema: NoteSchema,\n pathParams: { id: \"Note ID\" },\n },\n {\n name: \"list_notes\",\n description:\n \"List notes with optional filters by account, matter, user, date range, or tag.\",\n sdkFn: notesGetNotes,\n schema: NoteSchema,\n isList: true,\n queryParams: {\n assigned_to_user_id: z\n .string()\n .optional()\n .describe(\"Filter by assigned user ID\"),\n account_id: z.string().optional().describe(\"Filter by account ID\"),\n matter_id: z.string().optional().describe(\"Filter by matter ID\"),\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n date_from: z\n .string()\n .optional()\n .describe(\"ISO date — filter from this date\"),\n date_to: z.string().optional().describe(\"ISO date — filter to this date\"),\n activity_tag: z.string().optional().describe(\"Filter by activity tag\"),\n },\n },\n\n // ── Payments ──\n {\n name: \"get_payment\",\n description:\n \"Get a single payment by ID with full details including status.\",\n sdkFn: paymentsGetPayment,\n schema: PaymentDetailSchema,\n pathParams: { id: \"Payment ID\" },\n },\n {\n name: \"list_payments\",\n description:\n \"List payments with optional filters by account, matter, bank account, type, or date range.\",\n sdkFn: paymentsGetPayments,\n schema: PaymentSchema,\n isList: true,\n queryParams: {\n account_id: z.string().optional().describe(\"Filter by account ID\"),\n matter_id: z.string().optional().describe(\"Filter by matter ID\"),\n bank_account_id: z\n .string()\n .optional()\n .describe(\"Filter by bank account ID\"),\n bank_account_type: z\n .enum([\"Operating\", \"Trust\", \"CreditCard\"])\n .optional()\n .describe(\"Filter by bank account type\"),\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n date_from: z\n .string()\n .optional()\n .describe(\"ISO date — filter from this date\"),\n date_to: z.string().optional().describe(\"ISO date — filter to this date\"),\n },\n },\n\n // ── Relationships ──\n {\n name: \"get_relationship\",\n description: \"Get a single matter-contact relationship by ID.\",\n sdkFn: relationshipsGetRelationship,\n schema: RelationshipSchema,\n pathParams: { id: \"Relationship ID\" },\n },\n {\n name: \"list_relationships\",\n description:\n \"List relationships between contacts and matters with optional filters.\",\n sdkFn: relationshipsGetRelationships,\n schema: RelationshipSchema,\n isList: true,\n queryParams: {\n contact_id: z.string().optional().describe(\"Filter by contact ID\"),\n matter_id: z.string().optional().describe(\"Filter by matter ID\"),\n account_id: z.string().optional().describe(\"Filter by account ID\"),\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n },\n },\n\n // ── Tags ──\n {\n name: \"list_account_tags\",\n description: \"List all tags available for accounts.\",\n sdkFn: tagsGetTagsForAccounts,\n schema: TagSchema,\n isList: true,\n },\n {\n name: \"list_matter_tags\",\n description: \"List all tags available for matters.\",\n sdkFn: tagsGetTagsForProjects,\n schema: TagSchema,\n isList: true,\n },\n {\n name: \"list_activity_tags\",\n description:\n \"List all tags available for activities (call logs, events, notes, etc.).\",\n sdkFn: tagsGetTagsForActivities,\n schema: TagSchema,\n isList: true,\n },\n\n // ── Tasks ──\n {\n name: \"get_task\",\n description: \"Get a single task by ID.\",\n sdkFn: tasksGetTask,\n schema: TaskSchema,\n pathParams: { id: \"Task ID\" },\n },\n {\n name: \"list_tasks\",\n description:\n \"List tasks with optional filters by account, matter, user, status, due date range, or tag.\",\n sdkFn: tasksGetTasks,\n schema: TaskSchema,\n isList: true,\n queryParams: {\n assigned_to_user_id: z\n .string()\n .optional()\n .describe(\"Filter by assigned user ID\"),\n account_id: z.string().optional().describe(\"Filter by account ID\"),\n matter_id: z.string().optional().describe(\"Filter by matter ID\"),\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n status: z\n .enum([\"NotCompleted\", \"InProgress\", \"Completed\", \"Conditional\"])\n .optional()\n .describe(\"Filter by task status\"),\n due_date_from: z\n .string()\n .optional()\n .describe(\"ISO date — filter by due date from\"),\n due_date_to: z\n .string()\n .optional()\n .describe(\"ISO date — filter by due date to\"),\n activity_tag: z.string().optional().describe(\"Filter by activity tag\"),\n },\n },\n\n // ── Time Entries ──\n {\n name: \"get_time_entry\",\n description:\n \"Get a single time entry by ID. Hours are decimal (e.g. 1.5 = 1h30m).\",\n sdkFn: timeEntriesGetTimeEntry,\n schema: TimeEntrySchema,\n pathParams: { id: \"Time Entry ID\" },\n },\n {\n name: \"list_time_entries\",\n description:\n \"List time entries with optional filters by account, matter, user, item, or date range.\",\n sdkFn: timeEntriesGetTimeEntrys,\n schema: TimeEntrySchema,\n isList: true,\n queryParams: {\n account_id: z.string().optional().describe(\"Filter by account ID\"),\n matter_id: z.string().optional().describe(\"Filter by matter ID\"),\n user_id: z.string().optional().describe(\"Filter by user ID\"),\n item_id: z.string().optional().describe(\"Filter by item ID\"),\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n date_from: z\n .string()\n .optional()\n .describe(\"ISO date — filter from this date\"),\n date_to: z.string().optional().describe(\"ISO date — filter to this date\"),\n },\n },\n\n // ── Users ──\n {\n name: \"get_me\",\n description: \"Get the currently authenticated user's profile.\",\n sdkFn: usersMe,\n schema: UserSchema,\n },\n {\n name: \"get_user\",\n description: \"Get a single user by ID.\",\n sdkFn: usersGetUser,\n schema: UserSchema,\n pathParams: { id: \"User ID\" },\n },\n {\n name: \"list_users\",\n description:\n \"List users with optional filters by creation date, update date, or email address.\",\n sdkFn: usersGetUsers,\n schema: UserSchema,\n isList: true,\n queryParams: {\n created_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records created after this date\"),\n updated_since: z\n .string()\n .optional()\n .describe(\"ISO date — return records updated after this date\"),\n email_address: z.string().optional().describe(\"Filter by email address\"),\n },\n },\n];\n\n// ── Register all tools ──\n\nfor (const tool of tools) {\n const inputSchema: Record<string, z.ZodType> = {};\n\n // Add path params as required strings\n if (tool.pathParams) {\n for (const [paramName, description] of Object.entries(tool.pathParams)) {\n inputSchema[paramName] = z.string().describe(description);\n }\n }\n\n // Add query params (already full Zod types)\n if (tool.queryParams) {\n for (const [paramName, zodType] of Object.entries(tool.queryParams)) {\n inputSchema[paramName] = zodType;\n }\n }\n\n const outputSchema = tool.schema\n ? tool.isList\n ? listOf(tool.schema)\n : tool.schema\n : undefined;\n\n server.registerTool(\n tool.name,\n {\n description: tool.description,\n inputSchema:\n Object.keys(inputSchema).length > 0 ? inputSchema : undefined,\n outputSchema,\n },\n async (params: Record<string, unknown>) => {\n try {\n // Build SDK options\n const options: Record<string, unknown> = {};\n\n // Map path params\n if (tool.pathParams) {\n const path: Record<string, string> = {};\n for (const paramName of Object.keys(tool.pathParams)) {\n path[paramName] = params[paramName] as string;\n }\n options.path = path;\n }\n\n // Map query params\n if (tool.queryParams) {\n const query: Record<string, unknown> = {};\n for (const paramName of Object.keys(tool.queryParams)) {\n if (params[paramName] !== undefined) {\n query[paramName] = params[paramName];\n }\n }\n if (Object.keys(query).length > 0) {\n options.query = cleanQuery(query);\n }\n }\n\n const res = await tool.sdkFn(\n Object.keys(options).length > 0 ? options : undefined,\n );\n\n if (tool.rawContent) {\n return {\n content: [\n {\n type: \"text\" as const,\n text: JSON.stringify(res.data, null, 2),\n },\n ],\n };\n }\n\n if (tool.isList) {\n return {\n content: [],\n structuredContent: { items: res.data } as Record<string, unknown>,\n };\n }\n\n return {\n content: [],\n structuredContent: res.data as Record<string, unknown>,\n };\n } catch (e) {\n return err(e);\n }\n },\n );\n}\n\n// ── Start server ──\n\nconst command = process.argv[2];\nif (command === \"auth\") {\n const { runCli } = await import(\"./auth.js\");\n runCli(process.argv[3]);\n} else {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer.gen.js';\n\nexport type QuerySerializer = (query: Record<string, unknown>) => string;\n\nexport type BodySerializer = (body: unknown) => unknown;\n\ntype QuerySerializerOptionsObject = {\n allowReserved?: boolean;\n array?: Partial<SerializerOptions<ArrayStyle>>;\n object?: Partial<SerializerOptions<ObjectStyle>>;\n};\n\nexport type QuerySerializerOptions = QuerySerializerOptionsObject & {\n /**\n * Per-parameter serialization overrides. When provided, these settings\n * override the global array/object settings for specific parameter names.\n */\n parameters?: Record<string, QuerySerializerOptionsObject>;\n};\n\nconst serializeFormDataPair = (data: FormData, key: string, value: unknown): void => {\n if (typeof value === 'string' || value instanceof Blob) {\n data.append(key, value);\n } else if (value instanceof Date) {\n data.append(key, value.toISOString());\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nconst serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => {\n if (typeof value === 'string') {\n data.append(key, value);\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nexport const formDataBodySerializer = {\n bodySerializer: (body: unknown): FormData => {\n const data = new FormData();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeFormDataPair(data, key, v));\n } else {\n serializeFormDataPair(data, key, value);\n }\n });\n\n return data;\n },\n};\n\nexport const jsonBodySerializer = {\n bodySerializer: (body: unknown): string =>\n JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString() : value)),\n};\n\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: (body: unknown): string => {\n const data = new URLSearchParams();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n } else {\n serializeUrlSearchParamsPair(data, key, value);\n }\n });\n\n return data.toString();\n },\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\ntype Slot = 'body' | 'headers' | 'path' | 'query';\n\nexport type Field =\n | {\n in: Exclude<Slot, 'body'>;\n /**\n * Field name. This is the name we want the user to see and use.\n */\n key: string;\n /**\n * Field mapped name. This is the name we want to use in the request.\n * If omitted, we use the same value as `key`.\n */\n map?: string;\n }\n | {\n in: Extract<Slot, 'body'>;\n /**\n * Key isn't required for bodies.\n */\n key?: string;\n map?: string;\n }\n | {\n /**\n * Field name. This is the name we want the user to see and use.\n */\n key: string;\n /**\n * Field mapped name. This is the name we want to use in the request.\n * If `in` is omitted, `map` aliases `key` to the transport layer.\n */\n map: Slot;\n };\n\nexport interface Fields {\n allowExtra?: Partial<Record<Slot, boolean>>;\n args?: ReadonlyArray<Field>;\n}\n\nexport type FieldsConfig = ReadonlyArray<Field | Fields>;\n\nconst extraPrefixesMap: Record<string, Slot> = {\n $body_: 'body',\n $headers_: 'headers',\n $path_: 'path',\n $query_: 'query',\n};\nconst extraPrefixes = Object.entries(extraPrefixesMap);\n\ntype KeyMap = Map<\n string,\n | {\n in: Slot;\n map?: string;\n }\n | {\n in?: never;\n map: Slot;\n }\n>;\n\nconst buildKeyMap = (fields: FieldsConfig, map?: KeyMap): KeyMap => {\n if (!map) {\n map = new Map();\n }\n\n for (const config of fields) {\n if ('in' in config) {\n if (config.key) {\n map.set(config.key, {\n in: config.in,\n map: config.map,\n });\n }\n } else if ('key' in config) {\n map.set(config.key, {\n map: config.map,\n });\n } else if (config.args) {\n buildKeyMap(config.args, map);\n }\n }\n\n return map;\n};\n\ninterface Params {\n body: unknown;\n headers: Record<string, unknown>;\n path: Record<string, unknown>;\n query: Record<string, unknown>;\n}\n\nconst stripEmptySlots = (params: Params) => {\n for (const [slot, value] of Object.entries(params)) {\n if (value && typeof value === 'object' && !Array.isArray(value) && !Object.keys(value).length) {\n delete params[slot as Slot];\n }\n }\n};\n\nexport const buildClientParams = (args: ReadonlyArray<unknown>, fields: FieldsConfig) => {\n const params: Params = {\n body: {},\n headers: {},\n path: {},\n query: {},\n };\n\n const map = buildKeyMap(fields);\n\n let config: FieldsConfig[number] | undefined;\n\n for (const [index, arg] of args.entries()) {\n if (fields[index]) {\n config = fields[index];\n }\n\n if (!config) {\n continue;\n }\n\n if ('in' in config) {\n if (config.key) {\n const field = map.get(config.key)!;\n const name = field.map || config.key;\n if (field.in) {\n (params[field.in] as Record<string, unknown>)[name] = arg;\n }\n } else {\n params.body = arg;\n }\n } else {\n for (const [key, value] of Object.entries(arg ?? {})) {\n const field = map.get(key);\n\n if (field) {\n if (field.in) {\n const name = field.map || key;\n (params[field.in] as Record<string, unknown>)[name] = value;\n } else {\n params[field.map] = value;\n }\n } else {\n const extra = extraPrefixes.find(([prefix]) => key.startsWith(prefix));\n\n if (extra) {\n const [prefix, slot] = extra;\n (params[slot] as Record<string, unknown>)[key.slice(prefix.length)] = value;\n } else if ('allowExtra' in config && config.allowExtra) {\n for (const [slot, allowed] of Object.entries(config.allowExtra)) {\n if (allowed) {\n (params[slot as Slot] as Record<string, unknown>)[key] = value;\n break;\n }\n }\n }\n }\n }\n }\n }\n\n stripEmptySlots(params);\n\n return params;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Config } from './types.gen.js';\n\nexport type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, 'method'> &\n Pick<Config, 'method' | 'responseTransformer' | 'responseValidator'> & {\n /**\n * Fetch API implementation. You can use this option to provide a custom\n * fetch instance.\n *\n * @default globalThis.fetch\n */\n fetch?: typeof fetch;\n /**\n * Implementing clients can call request interceptors inside this hook.\n */\n onRequest?: (url: string, init: RequestInit) => Promise<Request>;\n /**\n * Callback invoked when a network or parsing error occurs during streaming.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param error The error that occurred.\n */\n onSseError?: (error: unknown) => void;\n /**\n * Callback invoked when an event is streamed from the server.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param event Event streamed from the server.\n * @returns Nothing (void).\n */\n onSseEvent?: (event: StreamEvent<TData>) => void;\n serializedBody?: RequestInit['body'];\n /**\n * Default retry delay in milliseconds.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 3000\n */\n sseDefaultRetryDelay?: number;\n /**\n * Maximum number of retry attempts before giving up.\n */\n sseMaxRetryAttempts?: number;\n /**\n * Maximum retry delay in milliseconds.\n *\n * Applies only when exponential backoff is used.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 30000\n */\n sseMaxRetryDelay?: number;\n /**\n * Optional sleep function for retry backoff.\n *\n * Defaults to using `setTimeout`.\n */\n sseSleepFn?: (ms: number) => Promise<void>;\n url: string;\n };\n\nexport interface StreamEvent<TData = unknown> {\n data: TData;\n event?: string;\n id?: string;\n retry?: number;\n}\n\nexport type ServerSentEventsResult<TData = unknown, TReturn = void, TNext = unknown> = {\n stream: AsyncGenerator<\n TData extends Record<string, unknown> ? TData[keyof TData] : TData,\n TReturn,\n TNext\n >;\n};\n\nexport const createSseClient = <TData = unknown>({\n onRequest,\n onSseError,\n onSseEvent,\n responseTransformer,\n responseValidator,\n sseDefaultRetryDelay,\n sseMaxRetryAttempts,\n sseMaxRetryDelay,\n sseSleepFn,\n url,\n ...options\n}: ServerSentEventsOptions): ServerSentEventsResult<TData> => {\n let lastEventId: string | undefined;\n\n const sleep = sseSleepFn ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms)));\n\n const createStream = async function* () {\n let retryDelay: number = sseDefaultRetryDelay ?? 3000;\n let attempt = 0;\n const signal = options.signal ?? new AbortController().signal;\n\n while (true) {\n if (signal.aborted) break;\n\n attempt++;\n\n const headers =\n options.headers instanceof Headers\n ? options.headers\n : new Headers(options.headers as Record<string, string> | undefined);\n\n if (lastEventId !== undefined) {\n headers.set('Last-Event-ID', lastEventId);\n }\n\n try {\n const requestInit: RequestInit = {\n redirect: 'follow',\n ...options,\n body: options.serializedBody,\n headers,\n signal,\n };\n let request = new Request(url, requestInit);\n if (onRequest) {\n request = await onRequest(url, requestInit);\n }\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = options.fetch ?? globalThis.fetch;\n const response = await _fetch(request);\n\n if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`);\n\n if (!response.body) throw new Error('No body in SSE response');\n\n const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();\n\n let buffer = '';\n\n const abortHandler = () => {\n try {\n reader.cancel();\n } catch {\n // noop\n }\n };\n\n signal.addEventListener('abort', abortHandler);\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += value;\n // Normalize line endings: CRLF -> LF, then CR -> LF\n buffer = buffer.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n const chunks = buffer.split('\\n\\n');\n buffer = chunks.pop() ?? '';\n\n for (const chunk of chunks) {\n const lines = chunk.split('\\n');\n const dataLines: Array<string> = [];\n let eventName: string | undefined;\n\n for (const line of lines) {\n if (line.startsWith('data:')) {\n dataLines.push(line.replace(/^data:\\s*/, ''));\n } else if (line.startsWith('event:')) {\n eventName = line.replace(/^event:\\s*/, '');\n } else if (line.startsWith('id:')) {\n lastEventId = line.replace(/^id:\\s*/, '');\n } else if (line.startsWith('retry:')) {\n const parsed = Number.parseInt(line.replace(/^retry:\\s*/, ''), 10);\n if (!Number.isNaN(parsed)) {\n retryDelay = parsed;\n }\n }\n }\n\n let data: unknown;\n let parsedJson = false;\n\n if (dataLines.length) {\n const rawData = dataLines.join('\\n');\n try {\n data = JSON.parse(rawData);\n parsedJson = true;\n } catch {\n data = rawData;\n }\n }\n\n if (parsedJson) {\n if (responseValidator) {\n await responseValidator(data);\n }\n\n if (responseTransformer) {\n data = await responseTransformer(data);\n }\n }\n\n onSseEvent?.({\n data,\n event: eventName,\n id: lastEventId,\n retry: retryDelay,\n });\n\n if (dataLines.length) {\n yield data as any;\n }\n }\n }\n } finally {\n signal.removeEventListener('abort', abortHandler);\n reader.releaseLock();\n }\n\n break; // exit loop on normal completion\n } catch (error) {\n // connection failed or aborted; retry after delay\n onSseError?.(error);\n\n if (sseMaxRetryAttempts !== undefined && attempt >= sseMaxRetryAttempts) {\n break; // stop after firing error\n }\n\n // exponential backoff: double retry each attempt, cap at 30s\n const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000);\n await sleep(backoff);\n }\n }\n };\n\n const stream = createStream();\n\n return { stream };\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\ninterface SerializeOptions<T> extends SerializePrimitiveOptions, SerializerOptions<T> {}\n\ninterface SerializePrimitiveOptions {\n allowReserved?: boolean;\n name: string;\n}\n\nexport interface SerializerOptions<T> {\n /**\n * @default true\n */\n explode: boolean;\n style: T;\n}\n\nexport type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited';\nexport type ArraySeparatorStyle = ArrayStyle | MatrixStyle;\ntype MatrixStyle = 'label' | 'matrix' | 'simple';\nexport type ObjectStyle = 'form' | 'deepObject';\ntype ObjectSeparatorStyle = ObjectStyle | MatrixStyle;\n\ninterface SerializePrimitiveParam extends SerializePrimitiveOptions {\n value: string;\n}\n\nexport const separatorArrayExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const separatorArrayNoExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case 'form':\n return ',';\n case 'pipeDelimited':\n return '|';\n case 'spaceDelimited':\n return '%20';\n default:\n return ',';\n }\n};\n\nexport const separatorObjectExplode = (style: ObjectSeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const serializeArrayParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n}: SerializeOptions<ArraySeparatorStyle> & {\n value: unknown[];\n}) => {\n if (!explode) {\n const joinedValues = (\n allowReserved ? value : value.map((v) => encodeURIComponent(v as string))\n ).join(separatorArrayNoExplode(style));\n switch (style) {\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n case 'simple':\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === 'label' || style === 'simple') {\n return allowReserved ? v : encodeURIComponent(v as string);\n }\n\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v as string,\n });\n })\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n\nexport const serializePrimitiveParam = ({\n allowReserved,\n name,\n value,\n}: SerializePrimitiveParam) => {\n if (value === undefined || value === null) {\n return '';\n }\n\n if (typeof value === 'object') {\n throw new Error(\n 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.',\n );\n }\n\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\n\nexport const serializeObjectParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n valueOnly,\n}: SerializeOptions<ObjectSeparatorStyle> & {\n value: Record<string, unknown> | Date;\n valueOnly?: boolean;\n}) => {\n if (value instanceof Date) {\n return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n }\n\n if (style !== 'deepObject' && !explode) {\n let values: string[] = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)];\n });\n const joinedValues = values.join(',');\n switch (style) {\n case 'form':\n return `${name}=${joinedValues}`;\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n default:\n return joinedValues;\n }\n }\n\n const separator = separatorObjectExplode(style);\n const joinedValues = Object.entries(value)\n .map(([key, v]) =>\n serializePrimitiveParam({\n allowReserved,\n name: style === 'deepObject' ? `${name}[${key}]` : key,\n value: v as string,\n }),\n )\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { BodySerializer, QuerySerializer } from './bodySerializer.gen.js';\nimport {\n type ArraySeparatorStyle,\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from './pathSerializer.gen.js';\n\nexport interface PathSerializer {\n path: Record<string, unknown>;\n url: string;\n}\n\nexport const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style: ArraySeparatorStyle = 'simple';\n\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n } else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n\n const value = path[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n url = url.replace(match, serializeArrayParam({ explode, name, style, value }));\n continue;\n }\n\n if (typeof value === 'object') {\n url = url.replace(\n match,\n serializeObjectParam({\n explode,\n name,\n style,\n value: value as Record<string, unknown>,\n valueOnly: true,\n }),\n );\n continue;\n }\n\n if (style === 'matrix') {\n url = url.replace(\n match,\n `;${serializePrimitiveParam({\n name,\n value: value as string,\n })}`,\n );\n continue;\n }\n\n const replaceValue = encodeURIComponent(\n style === 'label' ? `.${value as string}` : (value as string),\n );\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\n\nexport const getUrl = ({\n baseUrl,\n path,\n query,\n querySerializer,\n url: _url,\n}: {\n baseUrl?: string;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n querySerializer: QuerySerializer;\n url: string;\n}) => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\n\nexport function getValidRequestBody(options: {\n body?: unknown;\n bodySerializer?: BodySerializer | null;\n serializedBody?: unknown;\n}) {\n const hasBody = options.body !== undefined;\n const isSerializedBody = hasBody && options.bodySerializer;\n\n if (isSerializedBody) {\n if ('serializedBody' in options) {\n const hasSerializedBody =\n options.serializedBody !== undefined && options.serializedBody !== '';\n\n return hasSerializedBody ? options.serializedBody : null;\n }\n\n // not all clients implement a serializedBody property (i.e. client-axios)\n return options.body !== '' ? options.body : null;\n }\n\n // plain/text body\n if (hasBody) {\n return options.body;\n }\n\n // no body was provided\n return undefined;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type AuthToken = string | undefined;\n\nexport interface Auth {\n /**\n * Which part of the request do we use to send the auth?\n *\n * @default 'header'\n */\n in?: 'header' | 'query' | 'cookie';\n /**\n * Header or query parameter name.\n *\n * @default 'Authorization'\n */\n name?: string;\n scheme?: 'basic' | 'bearer';\n type: 'apiKey' | 'http';\n}\n\nexport const getAuthToken = async (\n auth: Auth,\n callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken,\n): Promise<string | undefined> => {\n const token = typeof callback === 'function' ? await callback(auth) : callback;\n\n if (!token) {\n return;\n }\n\n if (auth.scheme === 'bearer') {\n return `Bearer ${token}`;\n }\n\n if (auth.scheme === 'basic') {\n return `Basic ${btoa(token)}`;\n }\n\n return token;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { getAuthToken } from '../core/auth.gen.js';\nimport type { QuerySerializerOptions } from '../core/bodySerializer.gen.js';\nimport { jsonBodySerializer } from '../core/bodySerializer.gen.js';\nimport {\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from '../core/pathSerializer.gen.js';\nimport { getUrl } from '../core/utils.gen.js';\nimport type { Client, ClientOptions, Config, RequestOptions } from './types.gen.js';\n\nexport const createQuerySerializer = <T = unknown>({\n parameters = {},\n ...args\n}: QuerySerializerOptions = {}) => {\n const querySerializer = (queryParams: T) => {\n const search: string[] = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n const options = parameters[name] || args;\n\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...options.array,\n });\n if (serializedArray) search.push(serializedArray);\n } else if (typeof value === 'object') {\n const serializedObject = serializeObjectParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value as Record<string, unknown>,\n ...options.object,\n });\n if (serializedObject) search.push(serializedObject);\n } else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved: options.allowReserved,\n name,\n value: value as string,\n });\n if (serializedPrimitive) search.push(serializedPrimitive);\n }\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (contentType: string | null): Exclude<Config['parseAs'], 'auto'> => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return 'stream';\n }\n\n const cleanContent = contentType.split(';')[0]?.trim();\n\n if (!cleanContent) {\n return;\n }\n\n if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) {\n return 'json';\n }\n\n if (cleanContent === 'multipart/form-data') {\n return 'formData';\n }\n\n if (\n ['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type))\n ) {\n return 'blob';\n }\n\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n\n return;\n};\n\nconst checkForExistence = (\n options: Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n },\n name?: string,\n): boolean => {\n if (!name) {\n return false;\n }\n if (\n options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get('Cookie')?.includes(`${name}=`)\n ) {\n return true;\n }\n return false;\n};\n\nexport const setAuthParams = async ({\n security,\n ...options\n}: Pick<Required<RequestOptions>, 'security'> &\n Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n }) => {\n for (const auth of security) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n\n const token = await getAuthToken(auth, options.auth);\n\n if (!token) {\n continue;\n }\n\n const name = auth.name ?? 'Authorization';\n\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'cookie':\n options.headers.append('Cookie', `${name}=${token}`);\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n }\n};\n\nexport const buildUrl: Client['buildUrl'] = (options) =>\n getUrl({\n baseUrl: options.baseUrl as string,\n path: options.path,\n query: options.query,\n querySerializer:\n typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n });\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\n\nconst headersEntries = (headers: Headers): Array<[string, string]> => {\n const entries: Array<[string, string]> = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n};\n\nexport const mergeHeaders = (\n ...headers: Array<Required<Config>['headers'] | undefined>\n): Headers => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header) {\n continue;\n }\n\n const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);\n\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v as string);\n }\n } else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e. their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(\n key,\n typeof value === 'object' ? JSON.stringify(value) : (value as string),\n );\n }\n }\n }\n return mergedHeaders;\n};\n\ntype ErrInterceptor<Err, Res, Req, Options> = (\n error: Err,\n response: Res,\n request: Req,\n options: Options,\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>;\n\ntype ResInterceptor<Res, Req, Options> = (\n response: Res,\n request: Req,\n options: Options,\n) => Res | Promise<Res>;\n\nclass Interceptors<Interceptor> {\n fns: Array<Interceptor | null> = [];\n\n clear(): void {\n this.fns = [];\n }\n\n eject(id: number | Interceptor): void {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = null;\n }\n }\n\n exists(id: number | Interceptor): boolean {\n const index = this.getInterceptorIndex(id);\n return Boolean(this.fns[index]);\n }\n\n getInterceptorIndex(id: number | Interceptor): number {\n if (typeof id === 'number') {\n return this.fns[id] ? id : -1;\n }\n return this.fns.indexOf(id);\n }\n\n update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = fn;\n return id;\n }\n return false;\n }\n\n use(fn: Interceptor): number {\n this.fns.push(fn);\n return this.fns.length - 1;\n }\n}\n\nexport interface Middleware<Req, Res, Err, Options> {\n error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;\n request: Interceptors<ReqInterceptor<Req, Options>>;\n response: Interceptors<ResInterceptor<Res, Req, Options>>;\n}\n\nexport const createInterceptors = <Req, Res, Err, Options>(): Middleware<\n Req,\n Res,\n Err,\n Options\n> => ({\n error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(),\n request: new Interceptors<ReqInterceptor<Req, Options>>(),\n response: new Interceptors<ResInterceptor<Res, Req, Options>>(),\n});\n\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: 'form',\n },\n object: {\n explode: true,\n style: 'deepObject',\n },\n});\n\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n};\n\nexport const createConfig = <T extends ClientOptions = ClientOptions>(\n override: Config<Omit<ClientOptions, keyof T> & T> = {},\n): Config<Omit<ClientOptions, keyof T> & T> => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: 'auto',\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { createSseClient } from '../core/serverSentEvents.gen.js';\nimport type { HttpMethod } from '../core/types.gen.js';\nimport { getValidRequestBody } from '../core/utils.gen.js';\nimport type { Client, Config, RequestOptions, ResolvedRequestOptions } from './types.gen.js';\nimport {\n buildUrl,\n createConfig,\n createInterceptors,\n getParseAs,\n mergeConfigs,\n mergeHeaders,\n setAuthParams,\n} from './utils.gen.js';\n\ntype ReqInit = Omit<RequestInit, 'body' | 'headers'> & {\n body?: any;\n headers: ReturnType<typeof mergeHeaders>;\n};\n\nexport const createClient = (config: Config = {}): Client => {\n let _config = mergeConfigs(createConfig(), config);\n\n const getConfig = (): Config => ({ ..._config });\n\n const setConfig = (config: Config): Config => {\n _config = mergeConfigs(_config, config);\n return getConfig();\n };\n\n const interceptors = createInterceptors<Request, Response, unknown, ResolvedRequestOptions>();\n\n const beforeRequest = async (options: RequestOptions) => {\n const opts = {\n ..._config,\n ...options,\n fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n headers: mergeHeaders(_config.headers, options.headers),\n serializedBody: undefined as string | undefined,\n };\n\n if (opts.security) {\n await setAuthParams({\n ...opts,\n security: opts.security,\n });\n }\n\n if (opts.requestValidator) {\n await opts.requestValidator(opts);\n }\n\n if (opts.body !== undefined && opts.bodySerializer) {\n opts.serializedBody = opts.bodySerializer(opts.body) as string | undefined;\n }\n\n // remove Content-Type header if body is empty to avoid sending invalid requests\n if (opts.body === undefined || opts.serializedBody === '') {\n opts.headers.delete('Content-Type');\n }\n\n const url = buildUrl(opts);\n\n return { opts, url };\n };\n\n const request: Client['request'] = async (options) => {\n // @ts-expect-error\n const { opts, url } = await beforeRequest(options);\n const requestInit: ReqInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n\n let request = new Request(url, requestInit);\n\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch!;\n let response: Response;\n\n try {\n response = await _fetch(request);\n } catch (error) {\n // Handle fetch exceptions (AbortError, network errors, etc.)\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = (await fn(error, undefined as any, request, opts)) as unknown;\n }\n }\n\n finalError = finalError || ({} as unknown);\n\n if (opts.throwOnError) {\n throw finalError;\n }\n\n // Return error response\n return opts.responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response: undefined as any,\n };\n }\n\n for (const fn of interceptors.response.fns) {\n if (fn) {\n response = await fn(response, request, opts);\n }\n }\n\n const result = {\n request,\n response,\n };\n\n if (response.ok) {\n const parseAs =\n (opts.parseAs === 'auto'\n ? getParseAs(response.headers.get('Content-Type'))\n : opts.parseAs) ?? 'json';\n\n if (response.status === 204 || response.headers.get('Content-Length') === '0') {\n let emptyData: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'text':\n emptyData = await response[parseAs]();\n break;\n case 'formData':\n emptyData = new FormData();\n break;\n case 'stream':\n emptyData = response.body;\n break;\n case 'json':\n default:\n emptyData = {};\n break;\n }\n return opts.responseStyle === 'data'\n ? emptyData\n : {\n data: emptyData,\n ...result,\n };\n }\n\n let data: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'formData':\n case 'text':\n data = await response[parseAs]();\n break;\n case 'json': {\n // Some servers return 200 with no Content-Length and empty body.\n // response.json() would throw; read as text and parse if non-empty.\n const text = await response.text();\n data = text ? JSON.parse(text) : {};\n break;\n }\n case 'stream':\n return opts.responseStyle === 'data'\n ? response.body\n : {\n data: response.body,\n ...result,\n };\n }\n\n if (parseAs === 'json') {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n\n return opts.responseStyle === 'data'\n ? data\n : {\n data,\n ...result,\n };\n }\n\n const textError = await response.text();\n let jsonError: unknown;\n\n try {\n jsonError = JSON.parse(textError);\n } catch {\n // noop\n }\n\n const error = jsonError ?? textError;\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = (await fn(error, response, request, opts)) as string;\n }\n }\n\n finalError = finalError || ({} as string);\n\n if (opts.throwOnError) {\n throw finalError;\n }\n\n // TODO: we probably want to return error and improve types\n return opts.responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n ...result,\n };\n };\n\n const makeMethodFn = (method: Uppercase<HttpMethod>) => (options: RequestOptions) =>\n request({ ...options, method });\n\n const makeSseFn = (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => {\n const { opts, url } = await beforeRequest(options);\n return createSseClient({\n ...opts,\n body: opts.body as BodyInit | null | undefined,\n headers: opts.headers as unknown as Record<string, string>,\n method,\n onRequest: async (url, init) => {\n let request = new Request(url, init);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n return request;\n },\n serializedBody: getValidRequestBody(opts) as BodyInit | null | undefined,\n url,\n });\n };\n\n const _buildUrl: Client['buildUrl'] = (options) => buildUrl({ ..._config, ...options });\n\n return {\n buildUrl: _buildUrl,\n connect: makeMethodFn('CONNECT'),\n delete: makeMethodFn('DELETE'),\n get: makeMethodFn('GET'),\n getConfig,\n head: makeMethodFn('HEAD'),\n interceptors,\n options: makeMethodFn('OPTIONS'),\n patch: makeMethodFn('PATCH'),\n post: makeMethodFn('POST'),\n put: makeMethodFn('PUT'),\n request,\n setConfig,\n sse: {\n connect: makeSseFn('CONNECT'),\n delete: makeSseFn('DELETE'),\n get: makeSseFn('GET'),\n head: makeSseFn('HEAD'),\n options: makeSseFn('OPTIONS'),\n patch: makeSseFn('PATCH'),\n post: makeSseFn('POST'),\n put: makeSseFn('PUT'),\n trace: makeSseFn('TRACE'),\n },\n trace: makeMethodFn('TRACE'),\n } as Client;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type ClientOptions, type Config, createClient, createConfig } from './client/index.js';\nimport type { ClientOptions as ClientOptions2 } from './types.gen.js';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;\n\nexport const client = createClient(createConfig<ClientOptions2>({ baseUrl: 'https://app.practicepanther.com' }));\n","import { getAccessToken } from \"./auth.js\";\nimport { client } from \"./client/client.gen.js\";\n\nclient.setConfig({\n baseUrl: \"https://app.practicepanther.com\",\n auth: async () => getAccessToken(),\n});\n\nexport { client };\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { client } from './client.gen.js';\nimport type { Client, Options as Options2, TDataShape } from './client/index.js';\nimport type { AccountsDeleteData, AccountsDeleteResponses, AccountsGetAccountData, AccountsGetAccountResponses, AccountsGetAccountsData, AccountsGetAccountsResponses, AccountsPostAccountData, AccountsPostAccountResponses, AccountsPutAccountData, AccountsPutAccountResponses, BankAccountsDeleteData, BankAccountsDeleteResponses, BankAccountsGetBankAccountData, BankAccountsGetBankAccountResponses, BankAccountsGetBankAccountsData, BankAccountsGetBankAccountsResponses, BankAccountsPostBankAccountData, BankAccountsPostBankAccountResponses, BankAccountsPutBankAccountData, BankAccountsPutBankAccountResponses, CallLogsDeleteData, CallLogsDeleteResponses, CallLogsGetCallLogData, CallLogsGetCallLogResponses, CallLogsGetCallLogsData, CallLogsGetCallLogsResponses, CallLogsPostCallLogData, CallLogsPostCallLogResponses, CallLogsPutCallLogData, CallLogsPutCallLogResponses, ContactsGetContactData, ContactsGetContactResponses, ContactsGetContactsData, ContactsGetContactsResponses, CustomFieldsGetCustomFieldData, CustomFieldsGetCustomFieldResponses, CustomFieldsGetCustomFieldsForAccountData, CustomFieldsGetCustomFieldsForAccountResponses, CustomFieldsGetCustomFieldsForContactData, CustomFieldsGetCustomFieldsForContactResponses, CustomFieldsGetCustomFieldsForMatterData, CustomFieldsGetCustomFieldsForMatterResponses, EmailsDeleteData, EmailsDeleteResponses, EmailsGetEmailData, EmailsGetEmailResponses, EmailsGetEmailsData, EmailsGetEmailsResponses, EmailsPostEmailData, EmailsPostEmailResponses, EmailsPutAccountData, EmailsPutAccountResponses, EventsDeleteData, EventsDeleteResponses, EventsGetEventData, EventsGetEventResponses, EventsGetEventsData, EventsGetEventsResponses, EventsPostAccountData, EventsPostAccountResponses, EventsPutAccountData, EventsPutAccountResponses, ExpenseCategoriesDeleteData, ExpenseCategoriesDeleteResponses, ExpenseCategoriesGetExpenseCategoriesData, ExpenseCategoriesGetExpenseCategoriesResponses, ExpenseCategoriesGetExpenseCategoryData, ExpenseCategoriesGetExpenseCategoryResponses, ExpenseCategoriesPostExpenseCategoryData, ExpenseCategoriesPostExpenseCategoryResponses, ExpenseCategoriesPutExpenseCategoryData, ExpenseCategoriesPutExpenseCategoryResponses, ExpensesDeleteData, ExpensesDeleteResponses, ExpensesGetExpenseData, ExpensesGetExpenseResponses, ExpensesGetExpensessData, ExpensesGetExpensessResponses, ExpensesPostAccountData, ExpensesPostAccountResponses, ExpensesPutAccountData, ExpensesPutAccountResponses, FilesDeleteData, FilesDeleteResponses, FilesDownloadFileData, FilesDownloadFileResponses, FilesGetFileData, FilesGetFileResponses, FilesGetFilesData, FilesGetFilesResponses, FilesPostFileData, FilesPostFileResponses, FilesPostFileToBoxData, FilesPostFileToBoxResponses, FilesPutFileData, FilesPutFileResponses, FlatFeesDeleteData, FlatFeesDeleteResponses, FlatFeesGetFlatFeeData, FlatFeesGetFlatFeeResponses, FlatFeesGetFlatFeesData, FlatFeesGetFlatFeesResponses, FlatFeesPostAccountData, FlatFeesPostAccountResponses, FlatFeesPutAccountData, FlatFeesPutAccountResponses, InvoicesDeleteData, InvoicesDeleteResponses, InvoicesGetInvoiceData, InvoicesGetInvoiceResponses, InvoicesGetInvoicesData, InvoicesGetInvoicesResponses, ItemsDeleteData, ItemsDeleteResponses, ItemsGetItemData, ItemsGetItemResponses, ItemsGetItemsData, ItemsGetItemsResponses, ItemsPostItemData, ItemsPostItemResponses, ItemsPutItemData, ItemsPutItemResponses, MattersDeleteData, MattersDeleteResponses, MattersGetMatterData, MattersGetMatterResponses, MattersGetMattersData, MattersGetMattersResponses, MattersPostAccountData, MattersPostAccountResponses, MattersPutAccountData, MattersPutAccountResponses, MessagesDeleteData, MessagesDeleteResponses, MessagesGetMessagesAsyncData, MessagesGetMessagesAsyncResponses, MessagesPostMessageData, MessagesPostMessageResponses, MessagesPutMessageData, MessagesPutMessageResponses, NotesDeleteData, NotesDeleteResponses, NotesGetNoteData, NotesGetNoteResponses, NotesGetNotesData, NotesGetNotesResponses, NotesPostNoteData, NotesPostNoteResponses, NotesPutNoteData, NotesPutNoteResponses, PaymentsDeleteData, PaymentsDeleteResponses, PaymentsGetPaymentData, PaymentsGetPaymentResponses, PaymentsGetPaymentsData, PaymentsGetPaymentsResponses, RelationshipsDeleteData, RelationshipsDeleteResponses, RelationshipsGetRelationshipData, RelationshipsGetRelationshipResponses, RelationshipsGetRelationshipsData, RelationshipsGetRelationshipsResponses, RelationshipsPostAccountData, RelationshipsPostAccountResponses, RelationshipsPutRelationshipData, RelationshipsPutRelationshipResponses, TagsGetTagsForAccountsData, TagsGetTagsForAccountsResponses, TagsGetTagsForActivitiesData, TagsGetTagsForActivitiesResponses, TagsGetTagsForProjectsData, TagsGetTagsForProjectsResponses, TasksDeleteData, TasksDeleteResponses, TasksGetTaskData, TasksGetTaskResponses, TasksGetTasksData, TasksGetTasksResponses, TasksPostAccountData, TasksPostAccountResponses, TasksPutAccountData, TasksPutAccountResponses, TimeEntriesDeleteData, TimeEntriesDeleteResponses, TimeEntriesGetTimeEntryData, TimeEntriesGetTimeEntryResponses, TimeEntriesGetTimeEntrysData, TimeEntriesGetTimeEntrysResponses, TimeEntriesPostAccountData, TimeEntriesPostAccountResponses, TimeEntriesPutAccountData, TimeEntriesPutAccountResponses, UsersDeleteData, UsersDeleteResponses, UsersGetUserData, UsersGetUserResponses, UsersGetUsersData, UsersGetUsersResponses, UsersMeData, UsersMeResponses } from './types.gen.js';\n\nexport type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = Options2<TData, ThrowOnError> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: Record<string, unknown>;\n};\n\nexport const accountsGetAccount = <ThrowOnError extends boolean = false>(options: Options<AccountsGetAccountData, ThrowOnError>) => (options.client ?? client).get<AccountsGetAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/accounts/{id}',\n ...options\n});\n\nexport const accountsDelete = <ThrowOnError extends boolean = false>(options: Options<AccountsDeleteData, ThrowOnError>) => (options.client ?? client).delete<AccountsDeleteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/accounts',\n ...options\n});\n\nexport const accountsGetAccounts = <ThrowOnError extends boolean = false>(options?: Options<AccountsGetAccountsData, ThrowOnError>) => (options?.client ?? client).get<AccountsGetAccountsResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/accounts',\n ...options\n});\n\nexport const accountsPostAccount = <ThrowOnError extends boolean = false>(options: Options<AccountsPostAccountData, ThrowOnError>) => (options.client ?? client).post<AccountsPostAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/accounts',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const accountsPutAccount = <ThrowOnError extends boolean = false>(options: Options<AccountsPutAccountData, ThrowOnError>) => (options.client ?? client).put<AccountsPutAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/accounts',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const bankAccountsGetBankAccount = <ThrowOnError extends boolean = false>(options: Options<BankAccountsGetBankAccountData, ThrowOnError>) => (options.client ?? client).get<BankAccountsGetBankAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/bankaccounts/{id}',\n ...options\n});\n\nexport const bankAccountsDelete = <ThrowOnError extends boolean = false>(options: Options<BankAccountsDeleteData, ThrowOnError>) => (options.client ?? client).delete<BankAccountsDeleteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/bankaccounts',\n ...options\n});\n\nexport const bankAccountsGetBankAccounts = <ThrowOnError extends boolean = false>(options?: Options<BankAccountsGetBankAccountsData, ThrowOnError>) => (options?.client ?? client).get<BankAccountsGetBankAccountsResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/bankaccounts',\n ...options\n});\n\nexport const bankAccountsPostBankAccount = <ThrowOnError extends boolean = false>(options: Options<BankAccountsPostBankAccountData, ThrowOnError>) => (options.client ?? client).post<BankAccountsPostBankAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/bankaccounts',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const bankAccountsPutBankAccount = <ThrowOnError extends boolean = false>(options: Options<BankAccountsPutBankAccountData, ThrowOnError>) => (options.client ?? client).put<BankAccountsPutBankAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/bankaccounts',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const callLogsGetCallLog = <ThrowOnError extends boolean = false>(options: Options<CallLogsGetCallLogData, ThrowOnError>) => (options.client ?? client).get<CallLogsGetCallLogResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/calllogs/{id}',\n ...options\n});\n\nexport const callLogsDelete = <ThrowOnError extends boolean = false>(options: Options<CallLogsDeleteData, ThrowOnError>) => (options.client ?? client).delete<CallLogsDeleteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/calllogs',\n ...options\n});\n\nexport const callLogsGetCallLogs = <ThrowOnError extends boolean = false>(options?: Options<CallLogsGetCallLogsData, ThrowOnError>) => (options?.client ?? client).get<CallLogsGetCallLogsResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/calllogs',\n ...options\n});\n\nexport const callLogsPostCallLog = <ThrowOnError extends boolean = false>(options: Options<CallLogsPostCallLogData, ThrowOnError>) => (options.client ?? client).post<CallLogsPostCallLogResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/calllogs',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const callLogsPutCallLog = <ThrowOnError extends boolean = false>(options: Options<CallLogsPutCallLogData, ThrowOnError>) => (options.client ?? client).put<CallLogsPutCallLogResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/calllogs',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const contactsGetContact = <ThrowOnError extends boolean = false>(options: Options<ContactsGetContactData, ThrowOnError>) => (options.client ?? client).get<ContactsGetContactResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/contacts/{id}',\n ...options\n});\n\nexport const contactsGetContacts = <ThrowOnError extends boolean = false>(options?: Options<ContactsGetContactsData, ThrowOnError>) => (options?.client ?? client).get<ContactsGetContactsResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/contacts',\n ...options\n});\n\nexport const customFieldsGetCustomFieldsForAccount = <ThrowOnError extends boolean = false>(options?: Options<CustomFieldsGetCustomFieldsForAccountData, ThrowOnError>) => (options?.client ?? client).get<CustomFieldsGetCustomFieldsForAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/customfields/company',\n ...options\n});\n\nexport const customFieldsGetCustomFieldsForMatter = <ThrowOnError extends boolean = false>(options?: Options<CustomFieldsGetCustomFieldsForMatterData, ThrowOnError>) => (options?.client ?? client).get<CustomFieldsGetCustomFieldsForMatterResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/customfields/matter',\n ...options\n});\n\nexport const customFieldsGetCustomFieldsForContact = <ThrowOnError extends boolean = false>(options?: Options<CustomFieldsGetCustomFieldsForContactData, ThrowOnError>) => (options?.client ?? client).get<CustomFieldsGetCustomFieldsForContactResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/customfields/contact',\n ...options\n});\n\nexport const customFieldsGetCustomField = <ThrowOnError extends boolean = false>(options: Options<CustomFieldsGetCustomFieldData, ThrowOnError>) => (options.client ?? client).get<CustomFieldsGetCustomFieldResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/customfields/{id}',\n ...options\n});\n\nexport const emailsGetEmail = <ThrowOnError extends boolean = false>(options: Options<EmailsGetEmailData, ThrowOnError>) => (options.client ?? client).get<EmailsGetEmailResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/emails/{id}',\n ...options\n});\n\nexport const emailsDelete = <ThrowOnError extends boolean = false>(options: Options<EmailsDeleteData, ThrowOnError>) => (options.client ?? client).delete<EmailsDeleteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/emails',\n ...options\n});\n\nexport const emailsGetEmails = <ThrowOnError extends boolean = false>(options?: Options<EmailsGetEmailsData, ThrowOnError>) => (options?.client ?? client).get<EmailsGetEmailsResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/emails',\n ...options\n});\n\nexport const emailsPostEmail = <ThrowOnError extends boolean = false>(options: Options<EmailsPostEmailData, ThrowOnError>) => (options.client ?? client).post<EmailsPostEmailResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/emails',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const emailsPutAccount = <ThrowOnError extends boolean = false>(options: Options<EmailsPutAccountData, ThrowOnError>) => (options.client ?? client).put<EmailsPutAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/emails',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const eventsGetEvent = <ThrowOnError extends boolean = false>(options: Options<EventsGetEventData, ThrowOnError>) => (options.client ?? client).get<EventsGetEventResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/events/{id}',\n ...options\n});\n\nexport const eventsDelete = <ThrowOnError extends boolean = false>(options: Options<EventsDeleteData, ThrowOnError>) => (options.client ?? client).delete<EventsDeleteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/events',\n ...options\n});\n\nexport const eventsGetEvents = <ThrowOnError extends boolean = false>(options?: Options<EventsGetEventsData, ThrowOnError>) => (options?.client ?? client).get<EventsGetEventsResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/events',\n ...options\n});\n\nexport const eventsPostAccount = <ThrowOnError extends boolean = false>(options: Options<EventsPostAccountData, ThrowOnError>) => (options.client ?? client).post<EventsPostAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/events',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const eventsPutAccount = <ThrowOnError extends boolean = false>(options: Options<EventsPutAccountData, ThrowOnError>) => (options.client ?? client).put<EventsPutAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/events',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const expenseCategoriesGetExpenseCategory = <ThrowOnError extends boolean = false>(options: Options<ExpenseCategoriesGetExpenseCategoryData, ThrowOnError>) => (options.client ?? client).get<ExpenseCategoriesGetExpenseCategoryResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/ExpenseCategories/{id}',\n ...options\n});\n\nexport const expenseCategoriesDelete = <ThrowOnError extends boolean = false>(options: Options<ExpenseCategoriesDeleteData, ThrowOnError>) => (options.client ?? client).delete<ExpenseCategoriesDeleteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/ExpenseCategories',\n ...options\n});\n\nexport const expenseCategoriesGetExpenseCategories = <ThrowOnError extends boolean = false>(options?: Options<ExpenseCategoriesGetExpenseCategoriesData, ThrowOnError>) => (options?.client ?? client).get<ExpenseCategoriesGetExpenseCategoriesResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/ExpenseCategories',\n ...options\n});\n\nexport const expenseCategoriesPostExpenseCategory = <ThrowOnError extends boolean = false>(options: Options<ExpenseCategoriesPostExpenseCategoryData, ThrowOnError>) => (options.client ?? client).post<ExpenseCategoriesPostExpenseCategoryResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/ExpenseCategories',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const expenseCategoriesPutExpenseCategory = <ThrowOnError extends boolean = false>(options: Options<ExpenseCategoriesPutExpenseCategoryData, ThrowOnError>) => (options.client ?? client).put<ExpenseCategoriesPutExpenseCategoryResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/ExpenseCategories',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const expensesGetExpense = <ThrowOnError extends boolean = false>(options: Options<ExpensesGetExpenseData, ThrowOnError>) => (options.client ?? client).get<ExpensesGetExpenseResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/Expenses/{id}',\n ...options\n});\n\nexport const expensesDelete = <ThrowOnError extends boolean = false>(options: Options<ExpensesDeleteData, ThrowOnError>) => (options.client ?? client).delete<ExpensesDeleteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/Expenses',\n ...options\n});\n\nexport const expensesGetExpensess = <ThrowOnError extends boolean = false>(options?: Options<ExpensesGetExpensessData, ThrowOnError>) => (options?.client ?? client).get<ExpensesGetExpensessResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/Expenses',\n ...options\n});\n\nexport const expensesPostAccount = <ThrowOnError extends boolean = false>(options: Options<ExpensesPostAccountData, ThrowOnError>) => (options.client ?? client).post<ExpensesPostAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/Expenses',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const expensesPutAccount = <ThrowOnError extends boolean = false>(options: Options<ExpensesPutAccountData, ThrowOnError>) => (options.client ?? client).put<ExpensesPutAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/Expenses',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const filesGetFile = <ThrowOnError extends boolean = false>(options: Options<FilesGetFileData, ThrowOnError>) => (options.client ?? client).get<FilesGetFileResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/files/{id}',\n ...options\n});\n\nexport const filesDownloadFile = <ThrowOnError extends boolean = false>(options: Options<FilesDownloadFileData, ThrowOnError>) => (options.client ?? client).get<FilesDownloadFileResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/files/download/{id}',\n ...options\n});\n\nexport const filesPostFileToBox = <ThrowOnError extends boolean = false>(options?: Options<FilesPostFileToBoxData, ThrowOnError>) => (options?.client ?? client).post<FilesPostFileToBoxResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/files/box',\n ...options\n});\n\nexport const filesDelete = <ThrowOnError extends boolean = false>(options: Options<FilesDeleteData, ThrowOnError>) => (options.client ?? client).delete<FilesDeleteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/files',\n ...options\n});\n\nexport const filesGetFiles = <ThrowOnError extends boolean = false>(options?: Options<FilesGetFilesData, ThrowOnError>) => (options?.client ?? client).get<FilesGetFilesResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/files',\n ...options\n});\n\nexport const filesPostFile = <ThrowOnError extends boolean = false>(options?: Options<FilesPostFileData, ThrowOnError>) => (options?.client ?? client).post<FilesPostFileResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/files',\n ...options\n});\n\nexport const filesPutFile = <ThrowOnError extends boolean = false>(options: Options<FilesPutFileData, ThrowOnError>) => (options.client ?? client).put<FilesPutFileResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/files',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const flatFeesGetFlatFee = <ThrowOnError extends boolean = false>(options: Options<FlatFeesGetFlatFeeData, ThrowOnError>) => (options.client ?? client).get<FlatFeesGetFlatFeeResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/flatfees/{id}',\n ...options\n});\n\nexport const flatFeesDelete = <ThrowOnError extends boolean = false>(options: Options<FlatFeesDeleteData, ThrowOnError>) => (options.client ?? client).delete<FlatFeesDeleteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/flatfees',\n ...options\n});\n\nexport const flatFeesGetFlatFees = <ThrowOnError extends boolean = false>(options?: Options<FlatFeesGetFlatFeesData, ThrowOnError>) => (options?.client ?? client).get<FlatFeesGetFlatFeesResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/flatfees',\n ...options\n});\n\nexport const flatFeesPostAccount = <ThrowOnError extends boolean = false>(options: Options<FlatFeesPostAccountData, ThrowOnError>) => (options.client ?? client).post<FlatFeesPostAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/flatfees',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const flatFeesPutAccount = <ThrowOnError extends boolean = false>(options: Options<FlatFeesPutAccountData, ThrowOnError>) => (options.client ?? client).put<FlatFeesPutAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/flatfees',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const invoicesGetInvoice = <ThrowOnError extends boolean = false>(options: Options<InvoicesGetInvoiceData, ThrowOnError>) => (options.client ?? client).get<InvoicesGetInvoiceResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/invoices/{id}',\n ...options\n});\n\nexport const invoicesDelete = <ThrowOnError extends boolean = false>(options: Options<InvoicesDeleteData, ThrowOnError>) => (options.client ?? client).delete<InvoicesDeleteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/invoices',\n ...options\n});\n\nexport const invoicesGetInvoices = <ThrowOnError extends boolean = false>(options?: Options<InvoicesGetInvoicesData, ThrowOnError>) => (options?.client ?? client).get<InvoicesGetInvoicesResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/invoices',\n ...options\n});\n\nexport const itemsGetItem = <ThrowOnError extends boolean = false>(options: Options<ItemsGetItemData, ThrowOnError>) => (options.client ?? client).get<ItemsGetItemResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/Items/{id}',\n ...options\n});\n\nexport const itemsDelete = <ThrowOnError extends boolean = false>(options: Options<ItemsDeleteData, ThrowOnError>) => (options.client ?? client).delete<ItemsDeleteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/Items',\n ...options\n});\n\nexport const itemsGetItems = <ThrowOnError extends boolean = false>(options?: Options<ItemsGetItemsData, ThrowOnError>) => (options?.client ?? client).get<ItemsGetItemsResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/Items',\n ...options\n});\n\nexport const itemsPostItem = <ThrowOnError extends boolean = false>(options: Options<ItemsPostItemData, ThrowOnError>) => (options.client ?? client).post<ItemsPostItemResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/Items',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const itemsPutItem = <ThrowOnError extends boolean = false>(options: Options<ItemsPutItemData, ThrowOnError>) => (options.client ?? client).put<ItemsPutItemResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/Items',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const mattersGetMatter = <ThrowOnError extends boolean = false>(options: Options<MattersGetMatterData, ThrowOnError>) => (options.client ?? client).get<MattersGetMatterResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/matters/{id}',\n ...options\n});\n\nexport const mattersDelete = <ThrowOnError extends boolean = false>(options: Options<MattersDeleteData, ThrowOnError>) => (options.client ?? client).delete<MattersDeleteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/matters',\n ...options\n});\n\nexport const mattersGetMatters = <ThrowOnError extends boolean = false>(options?: Options<MattersGetMattersData, ThrowOnError>) => (options?.client ?? client).get<MattersGetMattersResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/matters',\n ...options\n});\n\nexport const mattersPostAccount = <ThrowOnError extends boolean = false>(options: Options<MattersPostAccountData, ThrowOnError>) => (options.client ?? client).post<MattersPostAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/matters',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const mattersPutAccount = <ThrowOnError extends boolean = false>(options: Options<MattersPutAccountData, ThrowOnError>) => (options.client ?? client).put<MattersPutAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/matters',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const messagesDelete = <ThrowOnError extends boolean = false>(options: Options<MessagesDeleteData, ThrowOnError>) => (options.client ?? client).delete<MessagesDeleteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/messages',\n ...options\n});\n\nexport const messagesGetMessagesAsync = <ThrowOnError extends boolean = false>(options?: Options<MessagesGetMessagesAsyncData, ThrowOnError>) => (options?.client ?? client).get<MessagesGetMessagesAsyncResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/messages',\n ...options\n});\n\nexport const messagesPostMessage = <ThrowOnError extends boolean = false>(options: Options<MessagesPostMessageData, ThrowOnError>) => (options.client ?? client).post<MessagesPostMessageResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/messages',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const messagesPutMessage = <ThrowOnError extends boolean = false>(options: Options<MessagesPutMessageData, ThrowOnError>) => (options.client ?? client).put<MessagesPutMessageResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/messages',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const notesGetNote = <ThrowOnError extends boolean = false>(options: Options<NotesGetNoteData, ThrowOnError>) => (options.client ?? client).get<NotesGetNoteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/notes/{id}',\n ...options\n});\n\nexport const notesDelete = <ThrowOnError extends boolean = false>(options: Options<NotesDeleteData, ThrowOnError>) => (options.client ?? client).delete<NotesDeleteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/notes',\n ...options\n});\n\nexport const notesGetNotes = <ThrowOnError extends boolean = false>(options?: Options<NotesGetNotesData, ThrowOnError>) => (options?.client ?? client).get<NotesGetNotesResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/notes',\n ...options\n});\n\nexport const notesPostNote = <ThrowOnError extends boolean = false>(options: Options<NotesPostNoteData, ThrowOnError>) => (options.client ?? client).post<NotesPostNoteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/notes',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const notesPutNote = <ThrowOnError extends boolean = false>(options: Options<NotesPutNoteData, ThrowOnError>) => (options.client ?? client).put<NotesPutNoteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/notes',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const paymentsGetPayment = <ThrowOnError extends boolean = false>(options: Options<PaymentsGetPaymentData, ThrowOnError>) => (options.client ?? client).get<PaymentsGetPaymentResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/payments/{id}',\n ...options\n});\n\nexport const paymentsDelete = <ThrowOnError extends boolean = false>(options: Options<PaymentsDeleteData, ThrowOnError>) => (options.client ?? client).delete<PaymentsDeleteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/payments',\n ...options\n});\n\nexport const paymentsGetPayments = <ThrowOnError extends boolean = false>(options?: Options<PaymentsGetPaymentsData, ThrowOnError>) => (options?.client ?? client).get<PaymentsGetPaymentsResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/payments',\n ...options\n});\n\nexport const relationshipsGetRelationship = <ThrowOnError extends boolean = false>(options: Options<RelationshipsGetRelationshipData, ThrowOnError>) => (options.client ?? client).get<RelationshipsGetRelationshipResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/relationships/{id}',\n ...options\n});\n\nexport const relationshipsDelete = <ThrowOnError extends boolean = false>(options: Options<RelationshipsDeleteData, ThrowOnError>) => (options.client ?? client).delete<RelationshipsDeleteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/relationships',\n ...options\n});\n\nexport const relationshipsGetRelationships = <ThrowOnError extends boolean = false>(options?: Options<RelationshipsGetRelationshipsData, ThrowOnError>) => (options?.client ?? client).get<RelationshipsGetRelationshipsResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/relationships',\n ...options\n});\n\nexport const relationshipsPostAccount = <ThrowOnError extends boolean = false>(options: Options<RelationshipsPostAccountData, ThrowOnError>) => (options.client ?? client).post<RelationshipsPostAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/relationships',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const relationshipsPutRelationship = <ThrowOnError extends boolean = false>(options: Options<RelationshipsPutRelationshipData, ThrowOnError>) => (options.client ?? client).put<RelationshipsPutRelationshipResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/relationships',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const tagsGetTagsForAccounts = <ThrowOnError extends boolean = false>(options?: Options<TagsGetTagsForAccountsData, ThrowOnError>) => (options?.client ?? client).get<TagsGetTagsForAccountsResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/tags/account',\n ...options\n});\n\nexport const tagsGetTagsForProjects = <ThrowOnError extends boolean = false>(options?: Options<TagsGetTagsForProjectsData, ThrowOnError>) => (options?.client ?? client).get<TagsGetTagsForProjectsResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/tags/matter',\n ...options\n});\n\nexport const tagsGetTagsForActivities = <ThrowOnError extends boolean = false>(options?: Options<TagsGetTagsForActivitiesData, ThrowOnError>) => (options?.client ?? client).get<TagsGetTagsForActivitiesResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/tags/activity',\n ...options\n});\n\nexport const tasksGetTask = <ThrowOnError extends boolean = false>(options: Options<TasksGetTaskData, ThrowOnError>) => (options.client ?? client).get<TasksGetTaskResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/tasks/{id}',\n ...options\n});\n\nexport const tasksDelete = <ThrowOnError extends boolean = false>(options: Options<TasksDeleteData, ThrowOnError>) => (options.client ?? client).delete<TasksDeleteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/tasks',\n ...options\n});\n\nexport const tasksGetTasks = <ThrowOnError extends boolean = false>(options?: Options<TasksGetTasksData, ThrowOnError>) => (options?.client ?? client).get<TasksGetTasksResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/tasks',\n ...options\n});\n\nexport const tasksPostAccount = <ThrowOnError extends boolean = false>(options: Options<TasksPostAccountData, ThrowOnError>) => (options.client ?? client).post<TasksPostAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/tasks',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const tasksPutAccount = <ThrowOnError extends boolean = false>(options: Options<TasksPutAccountData, ThrowOnError>) => (options.client ?? client).put<TasksPutAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/tasks',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const timeEntriesGetTimeEntry = <ThrowOnError extends boolean = false>(options: Options<TimeEntriesGetTimeEntryData, ThrowOnError>) => (options.client ?? client).get<TimeEntriesGetTimeEntryResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/timeentries/{id}',\n ...options\n});\n\nexport const timeEntriesDelete = <ThrowOnError extends boolean = false>(options: Options<TimeEntriesDeleteData, ThrowOnError>) => (options.client ?? client).delete<TimeEntriesDeleteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/timeentries',\n ...options\n});\n\nexport const timeEntriesGetTimeEntrys = <ThrowOnError extends boolean = false>(options?: Options<TimeEntriesGetTimeEntrysData, ThrowOnError>) => (options?.client ?? client).get<TimeEntriesGetTimeEntrysResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/timeentries',\n ...options\n});\n\nexport const timeEntriesPostAccount = <ThrowOnError extends boolean = false>(options: Options<TimeEntriesPostAccountData, ThrowOnError>) => (options.client ?? client).post<TimeEntriesPostAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/timeentries',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const timeEntriesPutAccount = <ThrowOnError extends boolean = false>(options: Options<TimeEntriesPutAccountData, ThrowOnError>) => (options.client ?? client).put<TimeEntriesPutAccountResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/timeentries',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\nexport const usersMe = <ThrowOnError extends boolean = false>(options?: Options<UsersMeData, ThrowOnError>) => (options?.client ?? client).get<UsersMeResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/users/me',\n ...options\n});\n\nexport const usersGetUser = <ThrowOnError extends boolean = false>(options: Options<UsersGetUserData, ThrowOnError>) => (options.client ?? client).get<UsersGetUserResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/users/{id}',\n ...options\n});\n\nexport const usersDelete = <ThrowOnError extends boolean = false>(options: Options<UsersDeleteData, ThrowOnError>) => (options.client ?? client).delete<UsersDeleteResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/users',\n ...options\n});\n\nexport const usersGetUsers = <ThrowOnError extends boolean = false>(options?: Options<UsersGetUsersData, ThrowOnError>) => (options?.client ?? client).get<UsersGetUsersResponses, unknown, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v2/users',\n ...options\n});\n","import { readFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { z } from \"zod\";\n\n// ── Read OpenAPI spec ──\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nconst spec = JSON.parse(\n readFileSync(join(__dirname, \"..\", \"openapi.json\"), \"utf8\"),\n);\ninterface PropDef {\n $ref?: string;\n type?: string;\n items?: PropDef;\n properties?: Record<string, PropDef>;\n}\n\nconst defs = spec.components.schemas as Record<string, PropDef>;\n\n// ── Schema builder ──\n\nconst cache = new Map<string, z.ZodTypeAny>();\n\nfunction buildProp(prop: PropDef): z.ZodTypeAny {\n if (prop.$ref) {\n const name = prop.$ref.split(\"/\").pop();\n if (name) return buildSchema(name);\n }\n if (prop.type === \"array\" && prop.items) {\n return z.array(buildProp(prop.items));\n }\n if (prop.type === \"integer\" || prop.type === \"number\") return z.number();\n if (prop.type === \"boolean\") return z.boolean();\n return z.string();\n}\n\nfunction buildSchema(name: string): z.ZodTypeAny {\n const cached = cache.get(name);\n if (cached) return cached;\n\n const def = defs[name];\n const shape: Record<string, z.ZodTypeAny> = {};\n for (const [key, prop] of Object.entries(def?.properties ?? {})) {\n shape[key] = buildProp(prop).nullable().optional();\n }\n const schema = z.looseObject(shape);\n cache.set(name, schema);\n return schema;\n}\n\nfor (const name of Object.keys(defs)) buildSchema(name);\n\n// ── Exports: Payment_Detail → PaymentDetailSchema ──\n\nfunction get(name: string) {\n const s = cache.get(name);\n if (!s) throw new Error(`Schema ${name} not found`);\n return s;\n}\n\nexport const AccountSchema = get(\"Account\");\nexport const AccountReferenceSchema = get(\"AccountReference\");\nexport const ActivityReferenceSchema = get(\"ActivityReference\");\nexport const BankAccountSchema = get(\"BankAccount\");\nexport const CallLogSchema = get(\"CallLog\");\nexport const ContactSchema = get(\"Contact\");\nexport const ContactReferenceSchema = get(\"ContactReference\");\nexport const CustomFieldSchema = get(\"CustomField\");\nexport const CustomFieldRefSchema = get(\"CustomFieldRef\");\nexport const CustomFieldValueSchema = get(\"CustomFieldValue\");\nexport const EmailSchema = get(\"Email\");\nexport const EmailAddressSchema = get(\"EmailAddress\");\nexport const EventSchema = get(\"Event\");\nexport const ExpenseCategorySchema = get(\"ExpenseCategory\");\nexport const ExpenseSchema = get(\"Expense\");\nexport const FileSchema = get(\"File\");\nexport const FileReferenceSchema = get(\"FileReference\");\nexport const FlatFeeSchema = get(\"FlatFee\");\nexport const InvoiceSchema = get(\"Invoice\");\nexport const InvoiceLineItemSchema = get(\"InvoiceLineItem\");\nexport const ItemSchema = get(\"Item\");\nexport const ItemReferenceSchema = get(\"ItemReference\");\nexport const MatterSchema = get(\"Matter\");\nexport const MatterReferenceSchema = get(\"MatterReference\");\nexport const MessageSchema = get(\"Message\");\nexport const NoteSchema = get(\"Note\");\nexport const PaymentSchema = get(\"Payment\");\nexport const PaymentDetailSchema = get(\"Payment_Detail\");\nexport const RelationshipSchema = get(\"Relationship\");\nexport const TagSchema = get(\"Tag\");\nexport const TaskSchema = get(\"Task\");\nexport const TimeEntrySchema = get(\"TimeEntry\");\nexport const UserSchema = get(\"User\");\nexport const UserReferenceSchema = get(\"UserReference\");\n\n// ── List wrapper helper ──\n\nexport function listOf<T extends z.ZodTypeAny>(schema: T) {\n return z.looseObject({ items: z.array(schema) });\n}\n"],"mappings":"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","names":["z","joinedValues","config","request","error","finalError","url","z"]}
|