@orvello/sdk 0.7.3 → 0.7.4
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/CONTRACT_SHA256 +1 -1
- package/dist/contract.cjs +81 -1
- package/dist/contract.cjs.map +1 -1
- package/dist/contract.d.cts +1101 -3
- package/dist/contract.d.ts +1101 -3
- package/dist/contract.js +81 -2
- package/dist/contract.js.map +1 -1
- package/dist/index.cjs +8 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/openapi.json +5771 -0
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/contract-hash.ts","../src/diagnose.ts","../src/helpers.ts","../src/route-index.generated.ts","../src/operations.ts","../src/capabilities.ts","../src/preflight.ts","../src/client.ts"],"names":["SDK_VERSION"],"mappings":"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","file":"index.js","sourcesContent":["// GENERATED by scripts/sync-contract.mjs — do not edit by hand.\n//\n// The fingerprint of the node-bill contract vendored into this package, using\n// the same digest as `sync-contract.mjs` and as node-bill's own\n// `GET /health/contract`. Comparing the two answers the only question that\n// matters after pinning an SDK version: does the deployment I am calling still\n// speak the contract I compiled against?\n//\n// `test/diagnose.test.ts` recomputes this from `src/generated` on every\n// `npm run check`, so a hand-edited contract cannot leave the constant stale.\nexport const CONTRACT_SHA256 = \"b414bb56aaac36ef5eae18b77139b36fed7ca09c638a70472b00acb2650aedd9\";\n","import { CONTRACT_SHA256 } from \"./contract-hash.js\";\n\n// Replaced at build time by tsup/vitest `define`.\ndeclare const __ORVELLO_SDK_VERSION__: string;\nconst SDK_VERSION: string = typeof __ORVELLO_SDK_VERSION__ === \"string\" ? __ORVELLO_SDK_VERSION__ : \"0.0.0-unbuilt\";\n\nexport type OrvelloContractStatus = \"match\" | \"drift\" | \"unknown\";\n\nexport type OrvelloDiagnosis = {\n ok: boolean;\n baseUrl: string | null;\n sdkVersion: string;\n reachable: boolean;\n contract: {\n status: OrvelloContractStatus;\n sdk: string;\n live: string | null;\n files: number | null;\n };\n problems: string[];\n checkedAt: string;\n};\n\nexport type BaseUrlProvider = string | (() => string | Promise<string>);\n\nexport type OrvelloDiagnoseOptions = {\n client?: { baseUrl: BaseUrlProvider };\n baseUrl?: BaseUrlProvider;\n fetch?: typeof globalThis.fetch;\n timeoutMs?: number;\n signal?: AbortSignal;\n};\n\ntype ContractResponse = {\n service?: unknown;\n contractSha256?: unknown;\n files?: unknown;\n};\n\nfunction normalizeBaseUrl(raw: string): string {\n const trimmed = raw.trim();\n if (!trimmed) throw new Error(\"Base URL cannot be empty\");\n return trimmed.replace(/\\/+$/, \"\");\n}\n\nasync function resolveBaseUrl(options: OrvelloDiagnoseOptions): Promise<string> {\n const provider = options.client?.baseUrl ?? options.baseUrl;\n if (!provider) {\n throw new Error(\n \"Diagnosing requires a target platform: pass { baseUrl } (the services checks its own \" +\n \"baseUrl) — the SDK ships no baked-in default endpoint.\"\n );\n }\n const value = typeof provider === \"function\" ? await provider() : provider;\n return normalizeBaseUrl(value);\n}\n\n/**\n * Ask a running orvello accounting/invoicing service which contract it speaks\n * and compare it to the one this SDK was built against.\n *\n * Read-only, unauthenticated, and cheap — designed for health-checks and AMP\n * connection-reconciliation (TSK-000084 / Kanten-Modell: connection_kind = 'invoicing').\n */\nexport async function diagnoseOrvello(options: OrvelloDiagnoseOptions = {}): Promise<OrvelloDiagnosis> {\n const checkedAt = new Date().toISOString();\n let baseUrl: string | null = null;\n try {\n baseUrl = await resolveBaseUrl(options);\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n return {\n ok: false,\n baseUrl: null,\n sdkVersion: SDK_VERSION,\n reachable: false,\n contract: { status: \"unknown\", sdk: CONTRACT_SHA256, live: null, files: null },\n problems: [`Invalid base URL: ${detail}`],\n checkedAt,\n };\n }\n\n const doFetch = options.fetch ?? globalThis.fetch;\n const timeoutMs = options.timeoutMs ?? 5_000;\n\n const base: OrvelloDiagnosis = {\n ok: false,\n baseUrl,\n sdkVersion: SDK_VERSION,\n reachable: false,\n contract: { status: \"unknown\", sdk: CONTRACT_SHA256, live: null, files: null },\n problems: [],\n checkedAt,\n };\n\n if (typeof doFetch !== \"function\") {\n return { ...base, problems: [\"No fetch implementation available; pass `fetch` explicitly.\"] };\n }\n\n const controller = new AbortController();\n const onAbort = () => controller.abort(options.signal?.reason);\n options.signal?.addEventListener(\"abort\", onAbort, { once: true });\n if (options.signal?.aborted) controller.abort(options.signal.reason);\n const timer = setTimeout(() => controller.abort(new Error(`Contract probe timed out after ${timeoutMs}ms`)), timeoutMs);\n\n let response: Response;\n try {\n response = await doFetch(`${baseUrl}/health/contract`, {\n method: \"GET\",\n headers: { accept: \"application/json\" },\n signal: controller.signal,\n });\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n return { ...base, problems: [`the orvello service at ${baseUrl} could not be reached: ${detail}`] };\n } finally {\n clearTimeout(timer);\n options.signal?.removeEventListener(\"abort\", onAbort);\n }\n\n if (response.status === 404) {\n return {\n ...base,\n reachable: true,\n problems: [\n `the orvello service at ${baseUrl} does not serve GET /health/contract, so the contract cannot be verified.`,\n ],\n };\n }\n\n if (!response.ok) {\n return {\n ...base,\n reachable: true,\n problems: [`the orvello service at ${baseUrl} answered ${response.status} for GET /health/contract; contract not verified.`],\n };\n }\n\n let body: ContractResponse;\n try {\n body = (await response.json()) as ContractResponse;\n } catch {\n return { ...base, reachable: true, problems: [`the orvello service at ${baseUrl} returned a non-JSON contract fingerprint.`] };\n }\n\n const live = typeof body.contractSha256 === \"string\" && body.contractSha256 ? body.contractSha256 : null;\n const files = typeof body.files === \"number\" ? body.files : null;\n\n if (!live) {\n return {\n ...base,\n reachable: true,\n contract: { ...base.contract, files },\n problems: [`the orvello service at ${baseUrl} could not compute its own contract fingerprint; contract not verified.`],\n };\n }\n\n if (live !== CONTRACT_SHA256) {\n return {\n ...base,\n reachable: true,\n contract: { status: \"drift\", sdk: CONTRACT_SHA256, live, files },\n problems: [\n `Contract drift: the orvello service at ${baseUrl} speaks ${live.slice(0, 12)}, `\n + `@orvello/sdk ${SDK_VERSION} was built against ${CONTRACT_SHA256.slice(0, 12)}. `\n + \"Pin a newer SDK version, or deploy the orvello service the SDK was built from.\",\n ],\n };\n }\n\n return {\n ...base,\n ok: true,\n reachable: true,\n contract: { status: \"match\", sdk: CONTRACT_SHA256, live, files },\n };\n}\n","import type { ManagingCompaniesCurrentExternalResponseData } from \"./generated/api/features/routes.managing_companies_external.js\";\nimport type { PaymentAccount } from \"./generated/frontend-types.js\";\n\n/**\n * Receipt upload payload for expense creation (`createExpense`).\n * Transmitted as base64 in the JSON payload, supported natively by the orvello service.\n */\nexport interface ExpenseReceiptUpload {\n base64String: string;\n fileName: string;\n mimeType: string;\n size: number;\n}\n\n/**\n * Simplified bank account details for invoices, UI, and external payment references.\n */\nexport interface BankAccountDetails {\n id?: number;\n iban: string;\n bic: string;\n bank: string;\n accountHolder: string;\n currency?: string;\n isDefault?: boolean;\n}\n\n/**\n * Convert a binary buffer / Uint8Array into a structured `ExpenseReceiptUpload`\n * object for the `createExpense` endpoint. Works seamlessly in Node.js, Next.js, and browser runtimes.\n */\nexport function buildBase64Receipt(\n data: Uint8Array | ArrayBuffer | string,\n fileName: string,\n mimeType: string\n): ExpenseReceiptUpload {\n let base64String: string;\n let size: number;\n\n if (typeof data === \"string\") {\n // If already base64 or data URL\n base64String = data.startsWith(\"data:\") ? data.split(\",\")[1] || data : data;\n size = Math.round((base64String.length * 3) / 4);\n } else {\n const bytes = data instanceof Uint8Array ? data : new Uint8Array(data);\n size = bytes.byteLength;\n if (typeof Buffer !== \"undefined\") {\n base64String = Buffer.from(bytes).toString(\"base64\");\n } else {\n let binary = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i] ?? 0);\n }\n base64String = globalThis.btoa(binary);\n }\n }\n\n return {\n base64String,\n fileName,\n mimeType,\n size,\n };\n}\n\n/**\n * Check if the current managing company is subject to the German Kleinunternehmer regulation (§ 19 UStG).\n */\nexport function isKleinunternehmer(context: ManagingCompaniesCurrentExternalResponseData): boolean {\n return (\n context.taxation?.defaultVatTreatmentHint === \"KLEINUNTERNEHMER_0\" ||\n context.taxation?.regime?.toLowerCase() === \"kleinunternehmer\" ||\n context.taxation?.shouldShowVatOnInvoices === false\n );\n}\n\n/**\n * Calculate net, VAT, and gross amounts with standard 2-decimal financial rounding.\n */\nexport function calculateVat(\n netAmount: number | string,\n vatRatePercent: number\n): { net: string; vat: string; gross: string } {\n const netNum = typeof netAmount === \"string\" ? parseFloat(netAmount) : netAmount;\n if (isNaN(netNum)) {\n throw new Error(`Invalid net amount: \"${netAmount}\"`);\n }\n\n const vatNum = Math.round(netNum * vatRatePercent) / 100;\n const grossNum = Math.round((netNum + vatNum) * 100) / 100;\n\n return {\n net: netNum.toFixed(2),\n vat: vatNum.toFixed(2),\n gross: grossNum.toFixed(2),\n };\n}\n\n/**\n * Format a monetary amount (in EUR or specified currency) to localized German currency format.\n */\nexport function formatAmount(\n amount: number | string,\n currency = \"EUR\",\n locale = \"de-DE\"\n): string {\n const num = typeof amount === \"string\" ? parseFloat(amount) : amount;\n if (isNaN(num)) return String(amount);\n return new Intl.NumberFormat(locale, {\n style: \"currency\",\n currency,\n }).format(num);\n}\n\n/**\n * Extract clean `BankAccountDetails` from an orvello `PaymentAccount`.\n */\nexport function mapPaymentAccountToBankDetails(account: PaymentAccount): BankAccountDetails {\n return {\n id: account.id,\n iban: account.iban || \"\",\n bic: account.bic || \"\",\n bank: account.bankName || \"\",\n accountHolder: account.accountOwner || \"\",\n currency: account.currency,\n isDefault: account.isDefault,\n };\n}\n","// GENERATED by scripts/build-route-index.mjs — do not edit by hand.\n//\n// Die Laufzeit-Tabelle des Vertrags: je Operation nur, was fuer einen Aufruf\n// gebraucht wird. Die vollstaendigen Angaben inklusive Beschreibungen stehen\n// unveraendert im Unterpfad `@orvello/sdk/contract`.\n//\n// Aufbau je Eintrag:\n// [ HTTP-Methode, Pfad-Vorlage, Bahn, Auth-Art laut Vertrag, Validierungs-Bits, Scopes? ]\n//\n// Bahn: \"b\" = Bearer, \"k\" = x-api-key, \"n\" = oeffentlich\n// Validierungs-Bits: 1 = params, 2 = query, 4 = body (verodert)\n//\n// `test/route-index.test.ts` rechnet diese Datei bei jedem Lauf aus `apiRoutes`\n// nach — eine von Hand geaenderte Zeile ueberlebt keinen Testlauf.\n\nexport type RouteChannelCode = \"b\" | \"k\" | \"n\";\n\nexport type RouteIndexEntry = readonly [\n method: string,\n path: string,\n channel: RouteChannelCode,\n authType: string,\n validated: number,\n scopes?: readonly string[],\n];\n\nexport const ROUTE_INDEX: Readonly<Record<string, RouteIndexEntry>> = {\n \"GET__api_amp_mail_brand_logo\": [\"GET\", \"/api/amp-mail/brands/:slug/logo\", \"n\", \"public\", 1],\n \"GET__api_amp_mail_file\": [\"GET\", \"/api/amp-mail/files/:token\", \"n\", \"public\", 1],\n \"GET__security_public\": [\"GET\", \"/security/public\", \"k\", \"x_api_key_https\", 0],\n \"admin_vat_create_system_settings\": [\"POST\", \"/admin/vat/system-settings\", \"b\", \"frontend_permission_http\", 4],\n \"admin_vat_get_company_settings_history\": [\"GET\", \"/admin/vat/company/:companyId/settings-history\", \"b\", \"frontend_permission_http\", 1],\n \"admin_vat_get_system_settings\": [\"GET\", \"/admin/vat/system-settings\", \"b\", \"frontend_permission_http\", 0],\n \"admin_vat_get_system_settings_history\": [\"GET\", \"/admin/vat/system-settings/history\", \"b\", \"frontend_permission_http\", 2],\n \"admin_vat_update_company_settings\": [\"PUT\", \"/admin/vat/company/:companyId/settings\", \"b\", \"frontend_permission_http\", 5],\n \"admin_vat_update_system_settings\": [\"PUT\", \"/admin/vat/system-settings/:id\", \"b\", \"frontend_permission_http\", 5],\n \"app_info_capabilities\": [\"GET\", \"/app-info/capabilities\", \"n\", \"public\", 2],\n \"app_info_get\": [\"GET\", \"/app-info\", \"b\", \"frontend_bearer_http\", 2],\n \"app_info_health\": [\"GET\", \"/app-info/health\", \"n\", \"public\", 0],\n \"app_info_manifest\": [\"GET\", \"/app-info/manifest\", \"n\", \"public\", 0],\n \"app_info_own_permissions_get\": [\"GET\", \"/app-info/ownPermissions\", \"b\", \"frontend_bearer_http\", 2],\n \"auth_google_config\": [\"GET\", \"/auth/google/config\", \"n\", \"public\", 2],\n \"auth_google_link\": [\"POST\", \"/auth/google/link\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_google_login\": [\"POST\", \"/auth/google\", \"n\", \"public\", 4],\n \"auth_google_unlink\": [\"DELETE\", \"/auth/google/link\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_login\": [\"POST\", \"/auth/login\", \"n\", \"public\", 4],\n \"auth_logout\": [\"POST\", \"/auth/logout\", \"n\", \"public\", 4],\n \"auth_me\": [\"GET\", \"/auth/me\", \"b\", \"frontend_bearer_http\", 2],\n \"auth_me_email_patch\": [\"PATCH\", \"/auth/me/email\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_me_image_delete\": [\"DELETE\", \"/auth/me/image\", \"b\", \"frontend_bearer_http\", 2],\n \"auth_me_image_replace\": [\"PUT\", \"/auth/me/image\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_me_profile_update\": [\"PATCH\", \"/auth/me/profile\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_mfa_complete\": [\"POST\", \"/auth/mfa/complete\", \"n\", \"public\", 4],\n \"auth_mfa_disable\": [\"POST\", \"/auth/mfa/disable\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_mfa_enable\": [\"POST\", \"/auth/mfa/enable\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_mfa_setup\": [\"POST\", \"/auth/mfa/setup\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_mfa_status\": [\"GET\", \"/auth/mfa\", \"b\", \"frontend_bearer_http\", 2],\n \"auth_password_change\": [\"POST\", \"/auth/password/change\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_password_reset_confirm\": [\"POST\", \"/auth/password/reset/confirm\", \"n\", \"public\", 4],\n \"auth_password_reset_landing\": [\"GET\", \"/auth/password/reset\", \"n\", \"public\", 2],\n \"auth_password_reset_request\": [\"POST\", \"/auth/password/reset/request\", \"n\", \"public\", 4],\n \"auth_push_token_upsert\": [\"POST\", \"/auth/push-token\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_refresh\": [\"POST\", \"/auth/refresh\", \"n\", \"public\", 4],\n \"auth_register\": [\"POST\", \"/auth/register\", \"n\", \"public\", 4],\n \"auth_sessions_list\": [\"GET\", \"/auth/sessions\", \"b\", \"frontend_bearer_http\", 2],\n \"auth_sessions_revoke\": [\"DELETE\", \"/auth/sessions/:sessionId\", \"b\", \"frontend_bearer_http\", 1],\n \"auth_sessions_revoke_other\": [\"POST\", \"/auth/sessions/revoke-other\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_verify_email_confirm\": [\"POST\", \"/auth/verify-email/confirm\", \"n\", \"public\", 4],\n \"auth_verify_email_landing\": [\"GET\", \"/auth/verify-email\", \"n\", \"public\", 2],\n \"auth_verify_email_request\": [\"POST\", \"/auth/verify-email/request\", \"b\", \"frontend_bearer_http\", 4],\n \"bookkeeping_assets_add_cost_component\": [\"POST\", \"/bookkeeping/assets/:assetId/cost-components\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_assets_apply_sonderafa\": [\"POST\", \"/bookkeeping/assets/:assetId/sonderafa\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_assets_create\": [\"POST\", \"/bookkeeping/assets\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_assets_delete\": [\"DELETE\", \"/bookkeeping/assets/:assetId\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_assets_delete_cost_component\": [\"DELETE\", \"/bookkeeping/assets/:assetId/cost-components/:componentId\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_assets_dispose\": [\"POST\", \"/bookkeeping/assets/:assetId/dispose\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_assets_finalize_depreciation\": [\"POST\", \"/bookkeeping/assets/depreciation/finalize\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_assets_generate_depreciation\": [\"POST\", \"/bookkeeping/assets/depreciation/generate\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_assets_get_by_id\": [\"GET\", \"/bookkeeping/assets/:assetId\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_assets_get_depreciation_records\": [\"GET\", \"/bookkeeping/assets/depreciation/records\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_assets_get_sammelposten_pool\": [\"GET\", \"/bookkeeping/assets/sammelposten-pools/:poolId\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_assets_iab_create\": [\"POST\", \"/bookkeeping/assets/iab\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_assets_iab_delete\": [\"DELETE\", \"/bookkeeping/assets/iab/:iabId\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_assets_iab_dissolve\": [\"POST\", \"/bookkeeping/assets/iab/:iabId/dissolve\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_assets_iab_get\": [\"GET\", \"/bookkeeping/assets/iab/:iabId\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_assets_iab_list\": [\"GET\", \"/bookkeeping/assets/iab\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_assets_iab_reverse\": [\"POST\", \"/bookkeeping/assets/iab/:iabId/reverse\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_assets_list_cost_components\": [\"GET\", \"/bookkeeping/assets/:assetId/cost-components\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_assets_list_sammelposten_pools\": [\"GET\", \"/bookkeeping/assets/sammelposten-pools\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_assets_search\": [\"GET\", \"/bookkeeping/assets\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_assets_switch_to_linear\": [\"POST\", \"/bookkeeping/assets/:assetId/switch-to-linear\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_assets_update\": [\"PUT\", \"/bookkeeping/assets/:assetId\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_audit_logs\": [\"GET\", \"/bookkeeping/audit/logs\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_capital_movements_cash_confirm\": [\"POST\", \"/bookkeeping/capital-movements/:id/cash-confirm\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_capital_movements_confirm\": [\"POST\", \"/bookkeeping/capital-movements/:id/confirm\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_capital_movements_create\": [\"POST\", \"/bookkeeping/capital-movements\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_capital_movements_delete\": [\"DELETE\", \"/bookkeeping/capital-movements/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_capital_movements_get_by_id\": [\"GET\", \"/bookkeeping/capital-movements/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_capital_movements_kapitalkonto\": [\"GET\", \"/bookkeeping/capital-movements/kapitalkonto\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_capital_movements_reverse\": [\"POST\", \"/bookkeeping/capital-movements/:id/reverse\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_capital_movements_revoke_cash_confirm\": [\"POST\", \"/bookkeeping/capital-movements/:id/revoke-cash-confirm\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_capital_movements_search\": [\"GET\", \"/bookkeeping/capital-movements\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_capital_movements_update\": [\"PATCH\", \"/bookkeeping/capital-movements/:id\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_expenses_analyze_receipt\": [\"POST\", \"/bookkeeping/expenses/analyze-receipt\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_expenses_bulk_confirm\": [\"POST\", \"/bookkeeping/expenses/bulk-confirm\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_expenses_confirm\": [\"POST\", \"/bookkeeping/expenses/:id/confirm\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_expenses_confirm_cash\": [\"POST\", \"/bookkeeping/expenses/:id/confirm-cash\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_expenses_create\": [\"POST\", \"/bookkeeping/expenses\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_expenses_create_external\": [\"POST\", \"/bookkeeping/expenses/external\", \"b\", \"unified_bearer\", 4, [\"expenses:write\"]],\n \"bookkeeping_expenses_delete\": [\"DELETE\", \"/bookkeeping/expenses/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_expenses_get_by_id\": [\"GET\", \"/bookkeeping/expenses/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_expenses_mark_as_asset\": [\"POST\", \"/bookkeeping/expenses/:id/mark-as-asset\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_expenses_revoke_cash_confirm\": [\"POST\", \"/bookkeeping/expenses/:id/revoke-cash-confirm\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_expenses_search\": [\"GET\", \"/bookkeeping/expenses\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_expenses_update\": [\"PUT\", \"/bookkeeping/expenses/:id\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_expenses_upload_receipt\": [\"POST\", \"/bookkeeping/expenses/:id/upload-receipt\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_iap_payouts_import\": [\"POST\", \"/bookkeeping/iap-payouts/import\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_iap_payouts_list\": [\"GET\", \"/bookkeeping/iap-payouts\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_income_tax_create_employment\": [\"POST\", \"/bookkeeping/income-tax/employment\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_income_tax_create_sonderausgaben\": [\"POST\", \"/bookkeeping/income-tax/sonderausgaben\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_income_tax_create_steuerminderungen\": [\"POST\", \"/bookkeeping/income-tax/steuerminderungen\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_income_tax_create_vorsorge\": [\"POST\", \"/bookkeeping/income-tax/vorsorge\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_income_tax_create_werbungskosten\": [\"POST\", \"/bookkeeping/income-tax/werbungskosten\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_income_tax_delete_employment\": [\"DELETE\", \"/bookkeeping/income-tax/employment/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_income_tax_delete_sonderausgaben\": [\"DELETE\", \"/bookkeeping/income-tax/sonderausgaben/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_income_tax_delete_steuerminderungen\": [\"DELETE\", \"/bookkeeping/income-tax/steuerminderungen/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_income_tax_delete_vorsorge\": [\"DELETE\", \"/bookkeeping/income-tax/vorsorge/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_income_tax_delete_werbungskosten\": [\"DELETE\", \"/bookkeeping/income-tax/werbungskosten/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_income_tax_get_employment\": [\"GET\", \"/bookkeeping/income-tax/employment/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_income_tax_get_estimate\": [\"GET\", \"/bookkeeping/income-tax/estimate\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_income_tax_get_settings\": [\"GET\", \"/bookkeeping/income-tax/settings\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_income_tax_get_summary\": [\"GET\", \"/bookkeeping/income-tax/summary\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_income_tax_get_vorauszahlungen\": [\"GET\", \"/bookkeeping/income-tax/vorauszahlungen\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_income_tax_list_employment\": [\"GET\", \"/bookkeeping/income-tax/employment\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_income_tax_list_sonderausgaben\": [\"GET\", \"/bookkeeping/income-tax/sonderausgaben\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_income_tax_list_steuerminderungen\": [\"GET\", \"/bookkeeping/income-tax/steuerminderungen\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_income_tax_list_vorsorge\": [\"GET\", \"/bookkeeping/income-tax/vorsorge\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_income_tax_list_werbungskosten\": [\"GET\", \"/bookkeeping/income-tax/werbungskosten\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_income_tax_update_employment\": [\"PUT\", \"/bookkeeping/income-tax/employment/:id\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_income_tax_update_sonderausgaben\": [\"PUT\", \"/bookkeeping/income-tax/sonderausgaben/:id\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_income_tax_update_steuerminderungen\": [\"PUT\", \"/bookkeeping/income-tax/steuerminderungen/:id\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_income_tax_update_vorsorge\": [\"PUT\", \"/bookkeeping/income-tax/vorsorge/:id\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_income_tax_update_werbungskosten\": [\"PUT\", \"/bookkeeping/income-tax/werbungskosten/:id\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_income_tax_upsert_settings\": [\"POST\", \"/bookkeeping/income-tax/settings\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_locks_get_state\": [\"GET\", \"/bookkeeping/locks/state\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_locks_overview\": [\"GET\", \"/bookkeeping/locks/overview\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_locks_recommendation\": [\"GET\", \"/bookkeeping/locks/recommendation\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_locks_set\": [\"POST\", \"/bookkeeping/locks/set\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_payments_create_manual_external\": [\"POST\", \"/bookkeeping/payments/external/manual\", \"b\", \"unified_bearer\", 4, [\"payments:write\"]],\n \"bookkeeping_payments_list_accounts_external\": [\"GET\", \"/bookkeeping/payments/external/accounts\", \"b\", \"unified_bearer\", 2, [\"payments:read\"]],\n \"bookkeeping_payments_settle_invoice_external\": [\"POST\", \"/bookkeeping/payments/external/settle-invoice\", \"b\", \"unified_bearer\", 4, [\"payments:write\",\"invoices:write\"]],\n \"bookkeeping_reports_asset_register\": [\"GET\", \"/bookkeeping/reports/assets\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_reports_category_breakdown\": [\"GET\", \"/bookkeeping/reports/category-breakdown\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_reports_euer\": [\"GET\", \"/bookkeeping/reports/euer\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_reports_monthly_trend\": [\"GET\", \"/bookkeeping/reports/monthly-trend\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_reports_summary\": [\"GET\", \"/bookkeeping/reports/summary\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_reports_vat_periods\": [\"GET\", \"/bookkeeping/reports/vat/periods\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_reports_vat_status\": [\"GET\", \"/bookkeeping/reports/vat/status\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_reports_vat_ustva\": [\"GET\", \"/bookkeeping/reports/vat/ustva\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_reports_vendor_breakdown\": [\"GET\", \"/bookkeeping/reports/vendor-breakdown\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_revenues_analyze_receipt\": [\"POST\", \"/bookkeeping/revenues/analyze-receipt\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_revenues_bulk_confirm\": [\"POST\", \"/bookkeeping/revenues/bulk-confirm\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_revenues_confirm\": [\"POST\", \"/bookkeeping/revenues/:id/confirm\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_revenues_confirm_cash\": [\"POST\", \"/bookkeeping/revenues/:id/confirm-cash\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_revenues_create\": [\"POST\", \"/bookkeeping/revenues\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_revenues_create_external\": [\"POST\", \"/bookkeeping/revenues/external\", \"b\", \"unified_bearer\", 4, [\"revenues:write\"]],\n \"bookkeeping_revenues_delete\": [\"DELETE\", \"/bookkeeping/revenues/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_revenues_get_by_id\": [\"GET\", \"/bookkeeping/revenues/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_revenues_invoice_adjustment_external\": [\"POST\", \"/bookkeeping/revenues/external/invoice-adjustment\", \"b\", \"unified_bearer\", 4, [\"revenues:write\"]],\n \"bookkeeping_revenues_revoke_cash_confirm\": [\"POST\", \"/bookkeeping/revenues/:id/revoke-cash-confirm\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_revenues_search\": [\"GET\", \"/bookkeeping/revenues\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_revenues_update\": [\"PUT\", \"/bookkeeping/revenues/:id\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_revenues_upload_receipt\": [\"POST\", \"/bookkeeping/revenues/:id/upload-receipt\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_tax_params_create\": [\"POST\", \"/bookkeeping/tax-params\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_tax_params_health\": [\"GET\", \"/bookkeeping/tax-params/health\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_tax_params_history\": [\"GET\", \"/bookkeeping/tax-params/:key/history\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_tax_params_list\": [\"GET\", \"/bookkeeping/tax-params\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_tax_params_sync\": [\"POST\", \"/bookkeeping/tax-params/sync\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_tax_params_update\": [\"PATCH\", \"/bookkeeping/tax-params/:id\", \"b\", \"frontend_permission_http\", 5],\n \"currency_rates_get\": [\"GET\", \"/currency-rates/:fromCurrency/:toCurrency\", \"k\", \"x_api_key_http\", 3],\n \"customer_companies_create\": [\"POST\", \"/customer-companies/create\", \"b\", \"frontend_permission_http\", 4],\n \"customer_companies_create_external\": [\"POST\", \"/customer-companies/external\", \"b\", \"unified_bearer\", 4, [\"companies:write\"]],\n \"customer_companies_delete\": [\"DELETE\", \"/customer-companies/delete/:companyId\", \"b\", \"frontend_permission_http\", 1],\n \"customer_companies_delete_external\": [\"DELETE\", \"/customer-companies/external/:companyId\", \"b\", \"unified_bearer\", 1, [\"companies:delete\"]],\n \"customer_companies_employee_assignments_by_company_id\": [\"GET\", \"/customer-companies/employee-assignments/byCompanyId/:companyId\", \"b\", \"frontend_permission_http\", 3],\n \"customer_companies_employee_assignments_by_employee_id\": [\"GET\", \"/customer-companies/employee-assignments/byEmployeeId/:employeeId\", \"b\", \"frontend_permission_http\", 3],\n \"customer_companies_employee_assignments_create\": [\"POST\", \"/customer-companies/employee-assignments/create\", \"b\", \"frontend_permission_http\", 4],\n \"customer_companies_employee_assignments_update\": [\"PUT\", \"/customer-companies/employee-assignments/update/:assignmentId\", \"b\", \"frontend_permission_http\", 5],\n \"customer_companies_employees_create\": [\"POST\", \"/customer-companies/employees/create\", \"b\", \"frontend_permission_http\", 4],\n \"customer_companies_employees_delete\": [\"DELETE\", \"/customer-companies/employees/delete/:employeeId\", \"b\", \"frontend_permission_http\", 1],\n \"customer_companies_employees_get_by_id\": [\"GET\", \"/customer-companies/employees/byId/:employeeId\", \"b\", \"frontend_permission_http\", 1],\n \"customer_companies_employees_search\": [\"GET\", \"/customer-companies/employees/search\", \"b\", \"frontend_permission_http\", 2],\n \"customer_companies_employees_update\": [\"PUT\", \"/customer-companies/employees/update/:employeeId\", \"b\", \"frontend_permission_http\", 5],\n \"customer_companies_get_by_id\": [\"GET\", \"/customer-companies/byId/:companyId\", \"b\", \"frontend_permission_http\", 1],\n \"customer_companies_get_by_id_external\": [\"GET\", \"/customer-companies/external/:companyId\", \"b\", \"unified_bearer\", 1, [\"companies:read\"]],\n \"customer_companies_get_full_by_id\": [\"GET\", \"/customer-companies/byId/:companyId/full\", \"b\", \"frontend_permission_http\", 3],\n \"customer_companies_search\": [\"GET\", \"/customer-companies/search\", \"b\", \"frontend_permission_http\", 2],\n \"customer_companies_search_external\": [\"GET\", \"/customer-companies/external\", \"b\", \"unified_bearer\", 2, [\"companies:read\"]],\n \"customer_companies_update\": [\"PUT\", \"/customer-companies/update/:companyId\", \"b\", \"frontend_permission_http\", 5],\n \"customer_companies_update_external\": [\"PUT\", \"/customer-companies/external/:companyId\", \"b\", \"unified_bearer\", 5, [\"companies:write\"]],\n \"document_library_batch\": [\"POST\", \"/documents/library/batch\", \"b\", \"frontend_permission_http\", 6],\n \"document_library_branding\": [\"GET\", \"/documents/library/branding\", \"b\", \"frontend_permission_http\", 2],\n \"document_library_deliveries\": [\"GET\", \"/documents/library/:id/deliveries\", \"b\", \"frontend_permission_http\", 3],\n \"document_library_draft_create\": [\"POST\", \"/documents/library/drafts\", \"b\", \"frontend_permission_http\", 6],\n \"document_library_draft_delete\": [\"DELETE\", \"/documents/library/drafts/:id\", \"b\", \"frontend_permission_http\", 3],\n \"document_library_draft_get\": [\"GET\", \"/documents/library/drafts/:id\", \"b\", \"frontend_permission_http\", 3],\n \"document_library_draft_update\": [\"PUT\", \"/documents/library/drafts/:id\", \"b\", \"frontend_permission_http\", 7],\n \"document_library_drafts\": [\"GET\", \"/documents/library/drafts\", \"b\", \"frontend_permission_http\", 2],\n \"document_library_folder_create\": [\"POST\", \"/documents/library/folders\", \"b\", \"frontend_permission_http\", 6],\n \"document_library_folder_delete\": [\"DELETE\", \"/documents/library/folders/:id\", \"b\", \"frontend_permission_http\", 3],\n \"document_library_folder_update\": [\"PUT\", \"/documents/library/folders/:id\", \"b\", \"frontend_permission_http\", 7],\n \"document_library_folders\": [\"GET\", \"/documents/library/folders\", \"b\", \"frontend_permission_http\", 2],\n \"document_library_list\": [\"GET\", \"/documents/library\", \"b\", \"frontend_permission_http\", 2],\n \"document_library_metadata\": [\"PATCH\", \"/documents/library/:id/metadata\", \"b\", \"frontend_permission_http\", 7],\n \"document_library_preview\": [\"POST\", \"/documents/library/drafts/:id/preview\", \"b\", \"frontend_permission_http\", 7],\n \"document_library_render\": [\"POST\", \"/documents/library/drafts/:id/render\", \"b\", \"frontend_permission_http\", 7],\n \"document_library_send\": [\"POST\", \"/documents/library/:id/send\", \"b\", \"frontend_permission_http\", 7],\n \"document_library_settings\": [\"GET\", \"/documents/library/settings\", \"b\", \"frontend_permission_http\", 2],\n \"document_library_settings_save\": [\"PUT\", \"/documents/library/settings\", \"b\", \"frontend_permission_http\", 6],\n \"documents_assign\": [\"POST\", \"/documents/admin/assign\", \"b\", \"frontend_permission_http\", 4],\n \"documents_create\": [\"POST\", \"/documents/admin/create\", \"b\", \"frontend_permission_http\", 4],\n \"documents_delete\": [\"DELETE\", \"/documents/admin/delete/:documentId\", \"b\", \"frontend_permission_http\", 3],\n \"documents_delete_assignment\": [\"DELETE\", \"/documents/admin/assignments/:assignmentId\", \"b\", \"frontend_permission_http\", 1],\n \"documents_download_url\": [\"GET\", \"/documents/admin/byId/:documentId/download-url\", \"b\", \"frontend_permission_http\", 3],\n \"documents_get_by_id\": [\"GET\", \"/documents/admin/byId/:documentId\", \"b\", \"frontend_permission_http\", 1],\n \"documents_get_full_by_id\": [\"GET\", \"/documents/admin/byId/:documentId/full\", \"b\", \"frontend_permission_http\", 1],\n \"documents_search\": [\"GET\", \"/documents/admin/search\", \"b\", \"frontend_permission_http\", 2],\n \"documents_set_lock\": [\"PUT\", \"/documents/admin/lock/:documentId\", \"b\", \"frontend_permission_http\", 5],\n \"documents_stream\": [\"GET\", \"/documents/admin/stream/:documentId\", \"b\", \"frontend_permission_http\", 3],\n \"dunning_get_settings_external\": [\"GET\", \"/invoices/external/dunning/settings\", \"b\", \"unified_bearer\", 2, [\"invoices:read\"]],\n \"dunning_issue_external\": [\"POST\", \"/invoices/external/dunning/:invoiceId/issue\", \"b\", \"unified_bearer\", 5, [\"invoices:write\"]],\n \"dunning_notice_download_external\": [\"GET\", \"/invoices/external/dunning/notices/:noticeId/download\", \"b\", \"unified_bearer\", 1, [\"invoices:read\"]],\n \"dunning_notice_pdf_external\": [\"GET\", \"/invoices/external/dunning/notices/:noticeId/pdf\", \"b\", \"unified_bearer\", 1, [\"invoices:read\"]],\n \"dunning_preview_external\": [\"POST\", \"/invoices/external/dunning/:invoiceId/preview\", \"b\", \"unified_bearer\", 5, [\"invoices:read\"]],\n \"dunning_suggestions_external\": [\"GET\", \"/invoices/external/dunning/suggestions\", \"b\", \"unified_bearer\", 2, [\"invoices:read\"]],\n \"dunning_update_settings_external\": [\"PUT\", \"/invoices/external/dunning/settings\", \"b\", \"unified_bearer\", 4, [\"invoices:write\"]],\n \"enterprise_onboarding_complete_step\": [\"POST\", \"/apps/enterprise/onboarding/complete-step\", \"b\", \"frontend_permission_http\", 4],\n \"enterprise_onboarding_skip_step\": [\"POST\", \"/apps/enterprise/onboarding/skip-step\", \"b\", \"frontend_permission_http\", 4],\n \"enterprise_onboarding_state_get\": [\"GET\", \"/apps/enterprise/onboarding/state\", \"b\", \"frontend_permission_http\", 2],\n \"entitlements_assign\": [\"POST\", \"/entitlements\", \"b\", \"unified_bearer\", 4],\n \"entitlements_context_get_by_shop_assignment\": [\"GET\", \"/entitlements/context/by-shop-assignment/:shopAssignmentId\", \"b\", \"unified_bearer\", 1],\n \"entitlements_getAll\": [\"GET\", \"/entitlements/getAll\", \"b\", \"unified_bearer\", 2],\n \"entitlements_getAssigned\": [\"GET\", \"/entitlements/assigned\", \"b\", \"unified_bearer\", 2],\n \"entitlements_getById\": [\"GET\", \"/entitlements/:id\", \"b\", \"unified_bearer\", 1],\n \"entitlements_getUserEntitlements\": [\"GET\", \"/entitlements/user/:userId\", \"b\", \"unified_bearer\", 1],\n \"entitlements_get_state\": [\"GET\", \"/entitlements/:userId/:type/:identifier\", \"b\", \"unified_bearer\", 1],\n \"entitlements_list\": [\"GET\", \"/entitlements\", \"b\", \"unified_bearer\", 2],\n \"entitlements_revoke\": [\"DELETE\", \"/entitlements/:userId/:type/:identifier\", \"b\", \"unified_bearer\", 1],\n \"entitlements_update_state\": [\"PUT\", \"/entitlements/:userId/:type/:identifier\", \"b\", \"unified_bearer\", 5],\n \"entitlements_usage_overages_pull\": [\"GET\", \"/entitlements/usage-overages\", \"b\", \"unified_bearer\", 2],\n \"exports_datev_buchungsstapel\": [\"GET\", \"/exports/bookkeeping/datev/buchungsstapel\", \"b\", \"frontend_permission_http\", 0],\n \"exports_datev_metadata\": [\"GET\", \"/exports/bookkeeping/datev/metadata\", \"b\", \"frontend_permission_http\", 0],\n \"internal_users_delete\": [\"DELETE\", \"/internal/users/:externalUserId\", \"k\", \"x_api_key_https\", 1],\n \"internal_users_provision\": [\"POST\", \"/internal/users/provision\", \"k\", \"x_api_key_https\", 4],\n \"internal_users_sync\": [\"POST\", \"/internal/users/sync\", \"k\", \"x_api_key_https\", 4],\n \"invoice_dunning_delete_notice\": [\"DELETE\", \"/invoices/dunning/:invoiceId/notices/:noticeId\", \"b\", \"frontend_permission_http\", 1],\n \"invoice_dunning_get_settings\": [\"GET\", \"/invoices/dunning/settings\", \"b\", \"frontend_permission_http\", 2],\n \"invoice_dunning_issue\": [\"POST\", \"/invoices/dunning/:invoiceId/issue\", \"b\", \"frontend_permission_http\", 5],\n \"invoice_dunning_list_notices\": [\"GET\", \"/invoices/dunning/:invoiceId/notices\", \"b\", \"frontend_permission_http\", 1],\n \"invoice_dunning_notice_download\": [\"GET\", \"/invoices/dunning/notices/:noticeId/download\", \"b\", \"frontend_permission_http\", 1],\n \"invoice_dunning_notice_pdf\": [\"GET\", \"/invoices/dunning/notices/:noticeId/pdf\", \"b\", \"frontend_permission_http\", 1],\n \"invoice_dunning_preview\": [\"POST\", \"/invoices/dunning/:invoiceId/preview\", \"b\", \"frontend_permission_http\", 5],\n \"invoice_dunning_suggestions\": [\"GET\", \"/invoices/dunning/suggestions\", \"b\", \"frontend_permission_http\", 2],\n \"invoice_dunning_update_settings\": [\"PUT\", \"/invoices/dunning/settings\", \"b\", \"frontend_permission_http\", 4],\n \"invoices_analysis\": [\"GET\", \"/invoices/:invoiceId/analysis\", \"b\", \"frontend_permission_http\", 1],\n \"invoices_create_external\": [\"POST\", \"/invoices/external\", \"b\", \"unified_bearer\", 4, [\"invoices:write\"]],\n \"invoices_create_manual\": [\"POST\", \"/invoices/manual\", \"b\", \"frontend_bearer_http\", 4],\n \"invoices_credit_note_issue\": [\"POST\", \"/invoices/:invoiceId/credit-note/issue\", \"b\", \"frontend_permission_http\", 5],\n \"invoices_credit_note_issue_external\": [\"POST\", \"/invoices/external/:invoiceId/credit-note/issue\", \"b\", \"unified_bearer\", 5, [\"invoices:publish\"]],\n \"invoices_credit_note_preview\": [\"POST\", \"/invoices/:invoiceId/credit-note/preview\", \"b\", \"frontend_permission_http\", 5],\n \"invoices_credit_note_preview_external\": [\"POST\", \"/invoices/external/:invoiceId/credit-note/preview\", \"b\", \"unified_bearer\", 5, [\"invoices:write\"]],\n \"invoices_delete\": [\"DELETE\", \"/invoices/:invoiceId\", \"b\", \"frontend_bearer_http\", 1],\n \"invoices_delete_external\": [\"DELETE\", \"/invoices/external/:invoiceId\", \"b\", \"unified_bearer\", 1, [\"invoices:delete\"]],\n \"invoices_download_pdf\": [\"GET\", \"/invoices/:invoiceId/download\", \"n\", \"public\", 3],\n \"invoices_download_pdf_external\": [\"GET\", \"/invoices/external/:invoiceId/download\", \"b\", \"unified_bearer\", 1, [\"invoices:read\"]],\n \"invoices_dry_run_external\": [\"POST\", \"/invoices/external/dry-run\", \"b\", \"unified_bearer\", 4, [\"invoices:write\"]],\n \"invoices_get_by_id\": [\"GET\", \"/invoices/:invoiceId\", \"b\", \"frontend_bearer_http\", 1],\n \"invoices_get_by_id_external\": [\"GET\", \"/invoices/external/:invoiceId\", \"b\", \"unified_bearer\", 1, [\"invoices:read\"]],\n \"invoices_list_overdue\": [\"GET\", \"/invoices/overdue\", \"b\", \"frontend_permission_http\", 2],\n \"invoices_list_pending\": [\"GET\", \"/invoices/pending\", \"b\", \"frontend_permission_http\", 2],\n \"invoices_overdue_external\": [\"GET\", \"/invoices/external/overdue\", \"b\", \"unified_bearer\", 2, [\"invoices:read\"]],\n \"invoices_payment_events_external\": [\"GET\", \"/invoices/external/:invoiceId/payment-events\", \"b\", \"unified_bearer\", 3, [\"invoices:read\"]],\n \"invoices_payment_evidence_external\": [\"GET\", \"/invoices/external/:invoiceId/payment-evidence\", \"b\", \"unified_bearer\", 1, [\"invoices:read\"]],\n \"invoices_payment_instructions_external\": [\"GET\", \"/invoices/external/:invoiceId/payment-instructions\", \"b\", \"unified_bearer\", 1, [\"invoices:read\"]],\n \"invoices_payment_reconciliation\": [\"GET\", \"/invoices/:invoiceId/payment-reconciliation\", \"b\", \"frontend_permission_http\", 1],\n \"invoices_pending_external\": [\"GET\", \"/invoices/external/pending\", \"b\", \"unified_bearer\", 2, [\"invoices:read\"]],\n \"invoices_preview_external\": [\"POST\", \"/invoices/external/preview\", \"b\", \"unified_bearer\", 4, [\"invoices:read\"]],\n \"invoices_repair_pdf\": [\"POST\", \"/invoices/:invoiceId/repair-pdf\", \"b\", \"frontend_bearer_http\", 1],\n \"invoices_search\": [\"GET\", \"/invoices\", \"b\", \"frontend_bearer_http\", 2],\n \"invoices_search_external\": [\"GET\", \"/invoices/external\", \"b\", \"unified_bearer\", 2, [\"invoices:read\"]],\n \"invoices_send_email_external\": [\"POST\", \"/invoices/external/:invoiceId/send-email\", \"b\", \"unified_bearer\", 5, [\"invoices:write\"]],\n \"invoices_status_policy\": [\"GET\", \"/invoices/:invoiceId/status-policy\", \"b\", \"frontend_bearer_http\", 1],\n \"invoices_status_policy_external\": [\"GET\", \"/invoices/external/:invoiceId/status-policy\", \"b\", \"unified_bearer\", 1, [\"invoices:read\"]],\n \"invoices_update_status\": [\"PUT\", \"/invoices/:invoiceId/status\", \"b\", \"frontend_bearer_http\", 5],\n \"invoices_update_status_external\": [\"PUT\", \"/invoices/external/:invoiceId/status\", \"b\", \"unified_bearer\", 5, [\"invoices:write\"]],\n \"invoices_view_pdf\": [\"GET\", \"/invoices/:invoiceId/pdf\", \"n\", \"public\", 3],\n \"invoices_view_pdf_external\": [\"GET\", \"/invoices/external/:invoiceId/pdf\", \"b\", \"unified_bearer\", 1, [\"invoices:read\"]],\n \"logs_delete\": [\"DELETE\", \"/app-logs/delete/:logId\", \"b\", \"frontend_permission_http\", 1],\n \"logs_delete_bulk\": [\"DELETE\", \"/app-logs/delete/mass/:logIds\", \"b\", \"frontend_permission_http\", 1],\n \"logs_search\": [\"GET\", \"/app-logs/search\", \"b\", \"frontend_permission_http\", 2],\n \"managing_companies_api_keys_by_id\": [\"GET\", \"/managing-companies/api-keys/byId/:apiKeyId\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_api_keys_create\": [\"POST\", \"/managing-companies/api-keys/create\", \"b\", \"frontend_permission_http\", 4],\n \"managing_companies_api_keys_delete\": [\"DELETE\", \"/managing-companies/api-keys/delete/:apiKeyId\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_api_keys_list\": [\"GET\", \"/managing-companies/api-keys/list\", \"b\", \"frontend_permission_http\", 2],\n \"managing_companies_api_keys_revoke\": [\"POST\", \"/managing-companies/api-keys/revoke/:apiKeyId\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_api_keys_update\": [\"PUT\", \"/managing-companies/api-keys/update/:apiKeyId\", \"b\", \"frontend_permission_http\", 5],\n \"managing_companies_cost_centers_by_id\": [\"GET\", \"/managing-companies/cost-centers/byId/:id\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_cost_centers_by_ids\": [\"GET\", \"/managing-companies/cost-centers/by-ids\", \"b\", \"frontend_permission_http\", 2],\n \"managing_companies_cost_centers_create\": [\"POST\", \"/managing-companies/cost-centers/create\", \"b\", \"frontend_permission_http\", 4],\n \"managing_companies_cost_centers_delete\": [\"DELETE\", \"/managing-companies/cost-centers/delete/:id\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_cost_centers_list\": [\"GET\", \"/managing-companies/cost-centers/list/:managingCompanyId\", \"b\", \"frontend_permission_http\", 3],\n \"managing_companies_cost_centers_logos_delete\": [\"DELETE\", \"/managing-companies/cost-centers/logos/delete/:id/:mode\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_cost_centers_logos_settings\": [\"GET\", \"/managing-companies/cost-centers/logos/settings/:id\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_cost_centers_logos_upload\": [\"POST\", \"/managing-companies/cost-centers/logos/upload/:id/:mode\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_cost_centers_logos_urls\": [\"GET\", \"/managing-companies/cost-centers/logos/urls/:id\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_cost_centers_my\": [\"GET\", \"/managing-companies/cost-centers/my/:managingCompanyId\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_cost_centers_update\": [\"PUT\", \"/managing-companies/cost-centers/update/:id\", \"b\", \"frontend_permission_http\", 5],\n \"managing_companies_create\": [\"POST\", \"/managing-companies\", \"b\", \"frontend_permission_http\", 4],\n \"managing_companies_current_external\": [\"GET\", \"/managing-companies/external/current\", \"b\", \"unified_bearer\", 2, [\"companies:read\"]],\n \"managing_companies_delete\": [\"DELETE\", \"/managing-companies/:id\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_get_by_id\": [\"GET\", \"/managing-companies/:id\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_invites_accept\": [\"POST\", \"/managing-companies/invites/accept/:token\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_invites_cancel\": [\"DELETE\", \"/managing-companies/invites/cancel/:inviteId\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_invites_pending_company\": [\"GET\", \"/managing-companies/invites/pending/company/:managingCompanyId\", \"b\", \"frontend_permission_http\", 3],\n \"managing_companies_invites_pending_company_preview\": [\"GET\", \"/managing-companies/invites/pending/company/:managingCompanyId/preview\", \"b\", \"frontend_bearer_http\", 3],\n \"managing_companies_invites_pending_user\": [\"GET\", \"/managing-companies/invites/pending/user\", \"b\", \"frontend_permission_http\", 2],\n \"managing_companies_invites_reject\": [\"POST\", \"/managing-companies/invites/reject/:token\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_invoice_layouts_catalog\": [\"GET\", \"/managing-companies/invoice-layouts/catalog\", \"b\", \"frontend_bearer_http\", 2],\n \"managing_companies_invoice_layouts_effective\": [\"GET\", \"/managing-companies/invoice-layouts/effective\", \"b\", \"frontend_bearer_http\", 2],\n \"managing_companies_invoice_layouts_preview\": [\"GET\", \"/managing-companies/invoice-layouts/preview\", \"b\", \"frontend_bearer_http\", 2],\n \"managing_companies_invoice_layouts_previews\": [\"GET\", \"/managing-companies/invoice-layouts/previews\", \"b\", \"frontend_bearer_http\", 2],\n \"managing_companies_invoice_numbering_get\": [\"GET\", \"/managing-companies/invoice-numbering/:managingCompanyId\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_invoice_numbering_preview\": [\"POST\", \"/managing-companies/invoice-numbering/:managingCompanyId/preview\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_invoice_numbering_save\": [\"PUT\", \"/managing-companies/invoice-numbering/:managingCompanyId\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_invoice_templates_archive\": [\"POST\", \"/managing-companies/invoice-templates/:managingCompanyId/:templateId/archive\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_invoice_templates_create\": [\"POST\", \"/managing-companies/invoice-templates/:managingCompanyId/create\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_invoice_templates_duplicate\": [\"POST\", \"/managing-companies/invoice-templates/:managingCompanyId/:templateId/duplicate\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_invoice_templates_from_invoice\": [\"POST\", \"/managing-companies/invoice-templates/:managingCompanyId/from-invoice\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_invoice_templates_get\": [\"GET\", \"/managing-companies/invoice-templates/:managingCompanyId/:templateId\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_invoice_templates_list\": [\"GET\", \"/managing-companies/invoice-templates/:managingCompanyId/list\", \"b\", \"frontend_bearer_http\", 3],\n \"managing_companies_invoice_templates_update\": [\"PUT\", \"/managing-companies/invoice-templates/:managingCompanyId/:templateId\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_invoice_transparency_context\": [\"GET\", \"/managing-companies/invoice-transparency/:managingCompanyId/context\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_invoice_transparency_quote\": [\"POST\", \"/managing-companies/invoice-transparency/:managingCompanyId/quote\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_item_type_configs_archive\": [\"POST\", \"/managing-companies/invoice-transparency/:managingCompanyId/item-type-configs/:value/archive\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_item_type_configs_create\": [\"POST\", \"/managing-companies/invoice-transparency/:managingCompanyId/item-type-configs\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_item_type_configs_update\": [\"PUT\", \"/managing-companies/invoice-transparency/:managingCompanyId/item-type-configs/:value\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_list\": [\"GET\", \"/managing-companies\", \"b\", \"frontend_permission_http\", 2],\n \"managing_companies_logos_delete\": [\"DELETE\", \"/managing-companies/logos/delete/:mode\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_logos_set_mode\": [\"PUT\", \"/managing-companies/logos/mode\", \"b\", \"frontend_bearer_http\", 4],\n \"managing_companies_logos_settings\": [\"GET\", \"/managing-companies/logos/settings\", \"b\", \"frontend_bearer_http\", 2],\n \"managing_companies_logos_upload\": [\"POST\", \"/managing-companies/logos/upload/:mode\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_logos_urls\": [\"GET\", \"/managing-companies/logos/urls\", \"b\", \"frontend_bearer_http\", 2],\n \"managing_companies_selected_current\": [\"GET\", \"/managing-companies/selected/current\", \"b\", \"frontend_bearer_http\", 2],\n \"managing_companies_selected_set\": [\"POST\", \"/managing-companies/selected/set/:companyId\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_update\": [\"PUT\", \"/managing-companies/:id\", \"b\", \"frontend_permission_http\", 5],\n \"managing_companies_user_assignments_assign\": [\"POST\", \"/managing-companies/user-assignments/assign\", \"b\", \"frontend_permission_http\", 4],\n \"managing_companies_user_assignments_cost_centers_add\": [\"POST\", \"/managing-companies/user-assignments/cost-centers/add\", \"b\", \"frontend_permission_http\", 4],\n \"managing_companies_user_assignments_cost_centers_remove\": [\"POST\", \"/managing-companies/user-assignments/cost-centers/remove\", \"b\", \"frontend_permission_http\", 4],\n \"managing_companies_user_assignments_list\": [\"GET\", \"/managing-companies/user-assignments/list/:companyId\", \"b\", \"frontend_permission_http\", 3],\n \"managing_companies_user_assignments_revoke\": [\"POST\", \"/managing-companies/user-assignments/revoke\", \"b\", \"frontend_permission_http\", 4],\n \"managing_companies_user_assignments_update\": [\"PUT\", \"/managing-companies/user-assignments/update/:assignmentId\", \"b\", \"frontend_permission_http\", 5],\n \"managing_companies_vat_settings_decision_upsert\": [\"PUT\", \"/managing-companies/vat-settings/:companyId/decisions/:decisionKey\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_vat_settings_get\": [\"GET\", \"/managing-companies/vat-settings/:companyId\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_vat_settings_history\": [\"GET\", \"/managing-companies/vat-settings/:companyId/history\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_vat_settings_tax_alerts\": [\"GET\", \"/managing-companies/vat-settings/:companyId/tax-alerts\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_vat_settings_upsert\": [\"POST\", \"/managing-companies/vat-settings/:companyId\", \"b\", \"frontend_bearer_http\", 5],\n \"oauth2_clients_audit\": [\"GET\", \"/oauth/clients/audit/:id\", \"b\", \"frontend_bearer_http\", 3],\n \"oauth2_clients_create\": [\"POST\", \"/oauth/clients/create\", \"b\", \"frontend_bearer_http\", 4],\n \"oauth2_clients_list\": [\"GET\", \"/oauth/clients/list\", \"b\", \"frontend_bearer_http\", 2],\n \"oauth2_clients_revoke\": [\"DELETE\", \"/oauth/clients/revoke/:id\", \"b\", \"frontend_bearer_http\", 1],\n \"oauth2_clients_update\": [\"PUT\", \"/oauth/clients/update/:id\", \"b\", \"frontend_bearer_http\", 5],\n \"oauth2_external_clients_create\": [\"POST\", \"/oauth/clients/external\", \"k\", \"x_api_key_https\", 4],\n \"oauth2_external_clients_delete\": [\"DELETE\", \"/oauth/clients/external/:idOrClientId\", \"k\", \"x_api_key_https\", 1],\n \"oauth2_external_clients_get\": [\"GET\", \"/oauth/clients/external/:idOrClientId\", \"k\", \"x_api_key_https\", 1],\n \"oauth2_external_clients_list\": [\"GET\", \"/oauth/clients/external/list\", \"k\", \"x_api_key_https\", 2],\n \"oauth2_external_clients_retire\": [\"POST\", \"/oauth/clients/external/:idOrClientId/retire\", \"k\", \"x_api_key_https\", 1],\n \"oauth2_external_clients_revoke\": [\"POST\", \"/oauth/clients/external/:idOrClientId/revoke\", \"k\", \"x_api_key_https\", 1],\n \"oauth2_external_clients_rollback\": [\"POST\", \"/oauth/clients/external/:idOrClientId/rollback\", \"k\", \"x_api_key_https\", 1],\n \"oauth2_external_clients_rotate\": [\"POST\", \"/oauth/clients/external/:idOrClientId/rotate\", \"k\", \"x_api_key_https\", 1],\n \"oauth2_external_clients_update\": [\"PUT\", \"/oauth/clients/external/:idOrClientId\", \"k\", \"x_api_key_https\", 5],\n \"oauth2_revoke\": [\"POST\", \"/oauth/revoke\", \"n\", \"public\", 0],\n \"oauth2_scopes_list\": [\"GET\", \"/oauth/scopes\", \"b\", \"frontend_bearer_http\", 2],\n \"oauth2_token\": [\"POST\", \"/oauth/token\", \"n\", \"public\", 0],\n \"payments_allocate\": [\"POST\", \"/bookkeeping/payments/allocate/:paymentId\", \"b\", \"frontend_permission_http\", 5],\n \"payments_allocation_reversal_preview\": [\"GET\", \"/bookkeeping/payments/:paymentId/allocations/:allocationId/reversal-preview\", \"b\", \"frontend_permission_http\", 1],\n \"payments_allocation_reverse\": [\"POST\", \"/bookkeeping/payments/:paymentId/allocations/:allocationId/reverse\", \"b\", \"frontend_permission_http\", 1],\n \"payments_apply_discount\": [\"POST\", \"/bookkeeping/payments/:paymentId/discount\", \"b\", \"frontend_permission_http\", 5],\n \"payments_archive_account\": [\"POST\", \"/bookkeeping/payments/accounts/:accountId/archive\", \"b\", \"frontend_permission_http\", 1],\n \"payments_book\": [\"POST\", \"/bookkeeping/payments/:paymentId/book\", \"b\", \"frontend_permission_http\", 5],\n \"payments_booking_payment_suggestions\": [\"GET\", \"/bookkeeping/payments/booking-match/:targetType/:targetId/payment-suggestions\", \"b\", \"frontend_permission_http\", 3],\n \"payments_cashbook\": [\"GET\", \"/bookkeeping/payments/cashbook\", \"b\", \"frontend_permission_http\", 2],\n \"payments_confirm_fee_proposals\": [\"POST\", \"/bookkeeping/payments/fee-proposals/confirm\", \"b\", \"frontend_permission_http\", 4],\n \"payments_create_account\": [\"POST\", \"/bookkeeping/payments/accounts/create\", \"b\", \"frontend_permission_http\", 4],\n \"payments_create_balance_snapshot\": [\"POST\", \"/bookkeeping/payments/snapshots\", \"b\", \"frontend_permission_http\", 4],\n \"payments_create_import_profile\": [\"POST\", \"/bookkeeping/payments/import/profiles\", \"b\", \"frontend_permission_http\", 4],\n \"payments_create_manual\": [\"POST\", \"/bookkeeping/payments/manual\", \"b\", \"frontend_permission_http\", 4],\n \"payments_delete\": [\"DELETE\", \"/bookkeeping/payments/:paymentId\", \"b\", \"frontend_permission_http\", 1],\n \"payments_delete_account\": [\"DELETE\", \"/bookkeeping/payments/accounts/:accountId\", \"b\", \"frontend_permission_http\", 1],\n \"payments_download_csv_template\": [\"GET\", \"/bookkeeping/payments/import/csv/template/:profileKey\", \"b\", \"frontend_permission_http\", 1],\n \"payments_get_account_by_id\": [\"GET\", \"/bookkeeping/payments/accounts/bdId/:accountId\", \"b\", \"frontend_permission_http\", 1],\n \"payments_import_csv\": [\"POST\", \"/bookkeeping/payments/import/csv\", \"b\", \"frontend_permission_http\", 4],\n \"payments_import_csv_preview\": [\"POST\", \"/bookkeeping/payments/import/csv/preview\", \"b\", \"frontend_permission_http\", 4],\n \"payments_list_accounts\": [\"GET\", \"/bookkeeping/payments/accounts\", \"b\", \"frontend_permission_http\", 2],\n \"payments_list_balance_snapshots\": [\"GET\", \"/bookkeeping/payments/snapshots\", \"b\", \"frontend_permission_http\", 2],\n \"payments_list_csv_profiles\": [\"GET\", \"/bookkeeping/payments/import/csv/profiles\", \"b\", \"frontend_permission_http\", 0],\n \"payments_list_fee_proposals\": [\"GET\", \"/bookkeeping/payments/fee-proposals\", \"b\", \"frontend_permission_http\", 2],\n \"payments_list_import_profiles\": [\"GET\", \"/bookkeeping/payments/import/profiles\", \"b\", \"frontend_permission_http\", 2],\n \"payments_match_suggestions\": [\"GET\", \"/bookkeeping/payments/match/:paymentId/suggestions\", \"b\", \"frontend_permission_http\", 3],\n \"payments_paypal_sync\": [\"POST\", \"/bookkeeping/payments/accounts/:accountId/paypal/sync\", \"b\", \"frontend_permission_http\", 3],\n \"payments_paypal_webhook_deregister\": [\"DELETE\", \"/bookkeeping/payments/accounts/:accountId/paypal/webhook\", \"b\", \"frontend_permission_http\", 1],\n \"payments_paypal_webhook_receive\": [\"POST\", \"/bookkeeping/payments/public/paypal/webhook\", \"n\", \"public\", 0],\n \"payments_paypal_webhook_register\": [\"POST\", \"/bookkeeping/payments/accounts/:accountId/paypal/webhook/register\", \"b\", \"frontend_permission_http\", 5],\n \"payments_record_fee\": [\"POST\", \"/bookkeeping/payments/:paymentId/fee\", \"b\", \"frontend_permission_http\", 5],\n \"payments_reject_fee_proposals\": [\"POST\", \"/bookkeeping/payments/fee-proposals/reject\", \"b\", \"frontend_permission_http\", 4],\n \"payments_reversal_preview\": [\"GET\", \"/bookkeeping/payments/:paymentId/reversal-preview\", \"b\", \"frontend_permission_http\", 1],\n \"payments_reverse\": [\"POST\", \"/bookkeeping/payments/:paymentId/reverse\", \"b\", \"frontend_permission_http\", 5],\n \"payments_search\": [\"GET\", \"/bookkeeping/payments/search\", \"b\", \"frontend_permission_http\", 2],\n \"payments_sumup_oauth_callback\": [\"GET\", \"/bookkeeping/payments/public/sumup/oauth/callback\", \"n\", \"public\", 2],\n \"payments_sumup_oauth_disconnect\": [\"DELETE\", \"/bookkeeping/payments/accounts/:accountId/sumup/oauth\", \"b\", \"frontend_permission_http\", 1],\n \"payments_sumup_oauth_start\": [\"POST\", \"/bookkeeping/payments/accounts/:accountId/sumup/oauth/start\", \"b\", \"frontend_permission_http\", 5],\n \"payments_sumup_sync\": [\"POST\", \"/bookkeeping/payments/accounts/:accountId/sumup/sync\", \"b\", \"frontend_permission_http\", 3],\n \"payments_transfer_link\": [\"POST\", \"/bookkeeping/payments/transfer/link\", \"b\", \"frontend_permission_http\", 4],\n \"payments_transfer_linkable\": [\"GET\", \"/bookkeeping/payments/:paymentId/transfer/linkable\", \"b\", \"frontend_permission_http\", 3],\n \"payments_transfer_unlink\": [\"POST\", \"/bookkeeping/payments/:paymentId/transfer/unlink\", \"b\", \"frontend_permission_http\", 5],\n \"payments_unallocate\": [\"DELETE\", \"/bookkeeping/payments/allocations/:paymentId/:allocationId\", \"b\", \"frontend_permission_http\", 1],\n \"payments_update\": [\"PUT\", \"/bookkeeping/payments/update/:paymentId\", \"b\", \"frontend_permission_http\", 5],\n \"payments_update_account\": [\"PUT\", \"/bookkeeping/payments/accounts/update/:accountId\", \"b\", \"frontend_permission_http\", 5],\n \"payments_update_fee_vat_treatment\": [\"PUT\", \"/bookkeeping/payments/accounts/:accountId/fee-vat-treatment\", \"b\", \"frontend_permission_http\", 5],\n \"payments_update_import_profile\": [\"PUT\", \"/bookkeeping/payments/import/profiles/:id\", \"b\", \"frontend_permission_http\", 5],\n \"payments_void_balance_snapshot\": [\"POST\", \"/bookkeeping/payments/snapshots/:snapshotId/void\", \"b\", \"frontend_permission_http\", 5],\n \"payments_writeoff\": [\"POST\", \"/bookkeeping/payments/:paymentId/writeoff\", \"b\", \"frontend_permission_http\", 5],\n \"permissions_assign_to_role\": [\"POST\", \"/permissions/assign/:roleId/:permissionId\", \"b\", \"frontend_permission_http\", 1],\n \"permissions_assignments_list\": [\"GET\", \"/permissions/getAssignments\", \"b\", \"composite_and\", 2],\n \"permissions_create\": [\"POST\", \"/permissions/create\", \"b\", \"frontend_permission_http\", 4],\n \"permissions_list\": [\"GET\", \"/permissions/getAll\", \"b\", \"frontend_permission_http\", 2],\n \"permissions_sync\": [\"POST\", \"/permissions/sync\", \"b\", \"frontend_permission_http\", 2],\n \"permissions_unassign_from_role\": [\"DELETE\", \"/permissions/unassign/:roleId/:permissionId\", \"b\", \"frontend_permission_http\", 1],\n \"reconciliation_auto_match_confirm\": [\"POST\", \"/bookkeeping/reconciliation/auto-match/confirm\", \"b\", \"frontend_permission_http\", 4],\n \"reconciliation_auto_match_preview\": [\"GET\", \"/bookkeeping/reconciliation/auto-match/preview\", \"b\", \"frontend_permission_http\", 2],\n \"reconciliation_batch_suggestions\": [\"POST\", \"/bookkeeping/reconciliation/batch-suggestions\", \"b\", \"frontend_permission_http\", 4],\n \"reconciliation_confirm_provider_payout\": [\"POST\", \"/bookkeeping/reconciliation/confirm-provider-payout\", \"b\", \"frontend_permission_http\", 4],\n \"reconciliation_dashboard\": [\"GET\", \"/bookkeeping/reconciliation/dashboard\", \"b\", \"frontend_permission_http\", 2],\n \"reconciliation_groups\": [\"GET\", \"/bookkeeping/reconciliation/groups\", \"b\", \"frontend_permission_http\", 2],\n \"reconciliation_queue\": [\"GET\", \"/bookkeeping/reconciliation/queue\", \"b\", \"frontend_permission_http\", 2],\n \"role_assignments_create\": [\"POST\", \"/role-assignments/create/:userId/:roleId\", \"b\", \"frontend_permission_http\", 5],\n \"role_assignments_get_user_assignments\": [\"GET\", \"/role-assignments/getUserAssignments/:userId\", \"b\", \"frontend_permission_http\", 1],\n \"role_assignments_list\": [\"GET\", \"/role-assignments/getAll\", \"b\", \"frontend_permission_http\", 2],\n \"role_assignments_revoke\": [\"DELETE\", \"/role-assignments/delete/:userId/:roleId\", \"b\", \"frontend_permission_http\", 1],\n \"roles_create\": [\"POST\", \"/roles/create\", \"b\", \"frontend_permission_http\", 4],\n \"roles_delete\": [\"DELETE\", \"/roles/delete/:roleId\", \"b\", \"frontend_permission_http\", 1],\n \"roles_get_by_id\": [\"GET\", \"/roles/getById/:roleId\", \"b\", \"frontend_permission_http\", 1],\n \"roles_list\": [\"GET\", \"/roles/getAll\", \"b\", \"frontend_permission_http\", 2],\n \"roles_update\": [\"PUT\", \"/roles/update/:roleId\", \"b\", \"frontend_permission_http\", 5],\n \"settings_list\": [\"GET\", \"/settings/getAll\", \"b\", \"frontend_bearer_http\", 2],\n \"settings_update\": [\"PUT\", \"/settings/update/:settingId/:key\", \"b\", \"frontend_permission_http\", 5],\n \"user_activity_overview_get\": [\"POST\", \"/user-activity/user/:userId\", \"b\", \"frontend_permission_http\", 5],\n \"user_activity_users_stats_list\": [\"GET\", \"/user-activity/users\", \"b\", \"frontend_permission_http\", 2],\n \"users_create\": [\"POST\", \"/users/create\", \"b\", \"frontend_bearer_http\", 4],\n \"users_delete\": [\"DELETE\", \"/users/delete/:userId\", \"b\", \"frontend_permission_http\", 1],\n \"users_delete_external\": [\"DELETE\", \"/users/delete/external/:frontendUserId\", \"b\", \"frontend_bearer_http\", 1],\n \"users_delete_external_image\": [\"DELETE\", \"/users/update/external/:frontendUserId/image\", \"b\", \"frontend_bearer_http\", 1],\n \"users_get_by_email\": [\"GET\", \"/users/getByEmail/:email\", \"b\", \"frontend_permission_http\", 1],\n \"users_get_by_external_user_id\": [\"GET\", \"/users/getByExternalUserId/:externalUserId\", \"b\", \"frontend_bearer_http\", 1],\n \"users_get_by_id\": [\"GET\", \"/users/getById/:userId\", \"b\", \"frontend_bearer_http\", 3],\n \"users_list\": [\"GET\", \"/users/getAll\", \"b\", \"frontend_permission_http\", 2],\n \"users_search\": [\"GET\", \"/users/search\", \"b\", \"frontend_permission_http\", 2],\n \"users_update_external\": [\"PUT\", \"/users/update/external/:frontendUserId\", \"b\", \"frontend_bearer_http\", 5],\n \"users_update_external_image\": [\"PUT\", \"/users/update/external/:frontendUserId/image\", \"b\", \"frontend_bearer_http\", 5],\n \"webhooks_delete\": [\"DELETE\", \"/webhooks/delete/:webhookId\", \"b\", \"frontend_permission_http\", 1],\n \"webhooks_delete_bulk\": [\"DELETE\", \"/webhooks/delete/mass/:webhookIds\", \"b\", \"frontend_permission_http\", 1],\n \"webhooks_search\": [\"GET\", \"/webhooks/search\", \"b\", \"frontend_permission_http\", 2],\n \"work_tracking_approve\": [\"POST\", \"/apps/admin/work-tracking/approve/:workEntryId\", \"b\", \"frontend_permission_http\", 5],\n \"work_tracking_assignment_create\": [\"POST\", \"/apps/admin/work-tracking/assignments/create\", \"b\", \"frontend_permission_http\", 4],\n \"work_tracking_assignment_delete\": [\"DELETE\", \"/apps/admin/work-tracking/assignments/delete/:workEntryAssignmentId\", \"b\", \"frontend_permission_http\", 1],\n \"work_tracking_assignment_update\": [\"PUT\", \"/apps/admin/work-tracking/assignments/update/:workEntryAssignmentId\", \"b\", \"frontend_permission_http\", 5],\n \"work_tracking_bill\": [\"POST\", \"/apps/admin/work-tracking/bill\", \"b\", \"frontend_permission_http\", 4],\n \"work_tracking_bill_preview\": [\"POST\", \"/apps/admin/work-tracking/bill/preview\", \"b\", \"frontend_permission_http\", 4],\n \"work_tracking_create\": [\"POST\", \"/apps/admin/work-tracking/create\", \"b\", \"frontend_permission_http\", 4],\n \"work_tracking_delete\": [\"DELETE\", \"/apps/admin/work-tracking/delete/:workEntryId\", \"b\", \"frontend_permission_http\", 1],\n \"work_tracking_get_by_id\": [\"GET\", \"/apps/admin/work-tracking/byId/:workEntryId\", \"b\", \"frontend_permission_http\", 1],\n \"work_tracking_get_my_role\": [\"GET\", \"/apps/admin/work-tracking/my-role\", \"b\", \"frontend_permission_http\", 2],\n \"work_tracking_list\": [\"GET\", \"/apps/admin/work-tracking/list\", \"b\", \"frontend_permission_http\", 2],\n \"work_tracking_reject\": [\"POST\", \"/apps/admin/work-tracking/reject/:workEntryId\", \"b\", \"frontend_permission_http\", 5],\n \"work_tracking_update\": [\"PUT\", \"/apps/admin/work-tracking/update/:workEntryId\", \"b\", \"frontend_permission_http\", 5],\n};\n","/**\n * Die Route entscheidet, welches Credential mitgeht — nicht der Aufrufer.\n *\n * orvello (node-bill) kennt zwei Bahnen nebeneinander, und sie sind nicht\n * austauschbar:\n *\n * - **bearer** — die Geschaeftsrouten (`unified_bearer`, `frontend_*`). Hier gilt\n * ein OAuth2-Client (client_credentials) oder ein als Bearer gesendeter Token.\n * Das Credential gehoert der *rufenden App*.\n * - **api_key** — die Verwaltungsrouten (`x_api_key_https`), also alles unter\n * `/oauth/clients/external/*`. Hier gilt der Header `x-api-key`. Das Credential\n * gehoert der *Kante* zwischen Verwalter und Dienst.\n *\n * Bis 0.1.0 schickte der Client alles als `Authorization: Bearer`. Die neun\n * Verwaltungsrouten waren damit zwar getippt und aufrufbar, aber grundsaetzlich\n * nicht authentisierbar — ein Loch, das erst beim ersten echten Aufruf sichtbar\n * geworden waere, und dann als `403 Forbidden: Invalid API key` ohne Hinweis auf\n * die Ursache.\n *\n * Der generierte Vertrag traegt `auth.type` an jeder einzelnen Route. Diese Datei\n * liest genau das aus und macht es zur Laufzeitentscheidung. Eine neue Route mit\n * einer neuen Auth-Art faellt damit nicht still in die falsche Bahn, sondern\n * kommt hier an.\n */\n\nimport { ROUTE_INDEX, type RouteIndexEntry } from \"./route-index.generated.js\";\n\n/** Welche Kopfzeile eine Route verlangt. */\nexport type OrvelloAuthChannel = \"bearer\" | \"api_key\" | \"none\";\n\n/**\n * Die Auth-Arten des Vertrags, die den `x-api-key`-Header verlangen.\n *\n * `x_api_key_https` erzwingt zusaetzlich HTTPS — das ist eine Frage des\n * Transports, nicht des Credentials, und aendert an der Kopfzeile nichts.\n */\nconst API_KEY_AUTH_TYPES: ReadonlySet<string> = new Set([\"x_api_key_http\", \"x_api_key_https\"]);\n\n/** Auth-Arten ganz ohne Credential. */\nconst PUBLIC_AUTH_TYPES: ReadonlySet<string> = new Set([\"public\"]);\n\nexport type OrvelloOperationId = keyof typeof ROUTE_INDEX & string;\n\nexport type OrvelloOperation = {\n operationId: string;\n method: string;\n /** Die Vorlage aus dem Vertrag, Platzhalter noch als `:name`. */\n path: string;\n /** Die Auth-Art, wie sie woertlich im Vertrag steht. */\n authType: string;\n /** Was daraus fuer den Aufruf folgt. */\n channel: OrvelloAuthChannel;\n /** Was der Dienst an dieser Route validiert — aus `meta.validated`. */\n validated: { params: boolean; query: boolean; body: boolean };\n /** Die im Vertrag geforderten OAuth2-Scopes, sofern die Auth-Art welche nennt. */\n scopes: readonly string[];\n};\n\n/** Bit-Stellen der Validierungs-Angabe in {@link RouteIndexEntry}. */\nconst VALIDATES_PARAMS = 1;\nconst VALIDATES_QUERY = 2;\nconst VALIDATES_BODY = 4;\n\nconst CHANNEL_BY_CODE: Record<string, OrvelloAuthChannel> = {\n b: \"bearer\",\n k: \"api_key\",\n n: \"none\",\n};\n\n/**\n * Bildet eine Auth-Art des Vertrags auf die Bahn ab, ueber die sie bedient wird.\n *\n * Unbekannte Arten landen bewusst auf `bearer`: das ist die Bahn aller\n * Geschaeftsrouten und damit die einzige Voreinstellung, die einen neuen,\n * hier noch nicht gesehenen Routentyp nicht sofort unbrauchbar macht.\n */\nexport function authChannelForContractType(authType: string | undefined | null): OrvelloAuthChannel {\n if (!authType) return \"bearer\";\n if (API_KEY_AUTH_TYPES.has(authType)) return \"api_key\";\n if (PUBLIC_AUTH_TYPES.has(authType)) return \"none\";\n return \"bearer\";\n}\n\nfunction toOperation(operationId: string, entry: RouteIndexEntry): OrvelloOperation {\n const [method, path, channelCode, authType, validated, scopes] = entry;\n return {\n operationId,\n method,\n path,\n authType,\n // Der Code in der Tabelle ist bereits das Ergebnis von\n // `authChannelForContractType` zur Erzeugungszeit; faellt er unbekannt aus,\n // gilt dieselbe Regel noch einmal statt einer stillen Voreinstellung.\n channel: CHANNEL_BY_CODE[channelCode] ?? authChannelForContractType(authType),\n validated: {\n params: (validated & VALIDATES_PARAMS) !== 0,\n query: (validated & VALIDATES_QUERY) !== 0,\n body: (validated & VALIDATES_BODY) !== 0,\n },\n scopes: scopes ? [...scopes] : [],\n };\n}\n\nlet cachedOperations: OrvelloOperation[] | null = null;\n\n/** Alle Operationen des Vertrags, gegen den dieses SDK gebaut wurde. */\nexport function listOperations(): readonly OrvelloOperation[] {\n if (!cachedOperations) {\n cachedOperations = Object.entries(ROUTE_INDEX).map(([operationId, entry]) =>\n toOperation(operationId, entry)\n );\n }\n return cachedOperations;\n}\n\n/** Eine Operation nach ihrer `operationId`, oder `null`, wenn der Vertrag sie nicht kennt. */\nexport function describeOperation(operationId: string): OrvelloOperation | null {\n const entry = ROUTE_INDEX[operationId];\n return entry ? toOperation(operationId, entry) : null;\n}\n\ntype PathIndexEntry = { segments: string[]; operation: OrvelloOperation };\n\nlet cachedPathIndex: Map<string, PathIndexEntry[]> | null = null;\n\nfunction pathIndex(): Map<string, PathIndexEntry[]> {\n if (cachedPathIndex) return cachedPathIndex;\n const index = new Map<string, PathIndexEntry[]>();\n for (const operation of listOperations()) {\n const segments = splitPath(operation.path);\n const key = `${operation.method} ${segments.length}`;\n const bucket = index.get(key);\n if (bucket) bucket.push({ segments, operation });\n else index.set(key, [{ segments, operation }]);\n }\n cachedPathIndex = index;\n return index;\n}\n\nfunction splitPath(path: string): string[] {\n return path.split(\"/\").filter((segment) => segment.length > 0);\n}\n\n/**\n * Findet die Route, die ein konkreter Pfad anspricht.\n *\n * ⭐ Woertliche Segmente schlagen Platzhalter. Ohne diese Regel wuerde\n * `GET /oauth/clients/external/list` auf `/oauth/clients/external/:idOrClientId`\n * fallen — beide sind GET mit vier Segmenten — und die Auflistung bekaeme die\n * Auth-Entscheidung einer anderen Route. Dass beide hier dieselbe Bahn\n * verlangen, ist Zufall und kein Verlass.\n */\nexport function resolveOperation(method: string, path: string): OrvelloOperation | null {\n const wanted = splitPath(path.split(\"?\")[0] ?? path);\n const bucket = pathIndex().get(`${method.toUpperCase()} ${wanted.length}`);\n if (!bucket) return null;\n\n let best: { score: number; operation: OrvelloOperation } | null = null;\n\n for (const entry of bucket) {\n let score = 0;\n let matches = true;\n for (let i = 0; i < wanted.length; i++) {\n const template = entry.segments[i] as string;\n if (template.startsWith(\":\")) continue;\n if (template === decodeSegment(wanted[i] as string)) score++;\n else {\n matches = false;\n break;\n }\n }\n if (!matches) continue;\n if (!best || score > best.score) best = { score, operation: entry.operation };\n }\n\n return best?.operation ?? null;\n}\n\nfunction decodeSegment(segment: string): string {\n try {\n return decodeURIComponent(segment);\n } catch {\n return segment;\n }\n}\n\n/** Fehlt ein Pfad-Parameter, ist der Aufruf falsch — nicht der Dienst. */\nexport class OrvelloOperationError extends Error {\n constructor(message: string, public readonly operationId: string) {\n super(message);\n this.name = \"OrvelloOperationError\";\n }\n}\n\n/**\n * Setzt die Platzhalter einer Vertrags-Route.\n *\n * Ein fehlender Parameter wirft hier, statt einen Pfad mit `:idOrClientId` darin\n * ans Netz zu geben. Der Dienst antwortete darauf mit 404 oder — schlimmer — mit\n * dem Treffer einer anderen Route.\n */\nexport function buildPath(operationId: string, params?: Record<string, unknown>): string {\n const operation = describeOperation(operationId);\n if (!operation) {\n throw new OrvelloOperationError(\n `Unknown orvello operation \"${operationId}\". It is not part of the contract this SDK was built against.`,\n operationId\n );\n }\n\n return (\n \"/\" +\n splitPath(operation.path)\n .map((segment) => {\n if (!segment.startsWith(\":\")) return segment;\n const name = segment.slice(1);\n const value = params?.[name];\n if (value === undefined || value === null || value === \"\") {\n throw new OrvelloOperationError(\n `orvello operation \"${operationId}\" needs the path parameter \"${name}\" (${operation.method} ${operation.path}).`,\n operationId\n );\n }\n return encodeURIComponent(String(value));\n })\n .join(\"/\")\n );\n}\n","/**\n * Was dieser Dienst kann — als Daten, ohne Netz und ohne Vermutung.\n *\n * Ein Verbindungs-Verwalter (node-amp) kann Kanten nur dann selbst herstellen,\n * pruefen und reparieren, wenn er weiss, *was die Gegenseite ueberhaupt anbietet*.\n * Bis hierher war das Wissen implizit: irgendwo im Verwalter stand fest\n * einprogrammiert, dass orvello Clients ausstellen kann. Wird eine Faehigkeit dort\n * angenommen und fehlt sie hier, ist das Ergebnis eine Zeile, die gesund aussieht,\n * weil nie jemand gefragt hat.\n *\n * Deshalb leitet sich der Bericht ausschliesslich aus dem mitgelieferten Vertrag\n * ab: eine Faehigkeit gilt genau dann als vorhanden, wenn die zugehoerige\n * Operation im Vertrag steht. Faellt sie in node-bill weg, verschwindet sie beim\n * naechsten `sync:contract` auch hier — niemand muss daran denken.\n *\n * ⚠ Der Bericht sagt, was der Vertrag hergibt, nicht was der Aufrufer darf. Ob ein\n * Credential wirklich traegt, beantwortet allein {@link preflightOrvello}.\n */\n\nimport { CONTRACT_SHA256 } from \"./contract-hash.js\";\nimport { listOperations, describeOperation, type OrvelloAuthChannel } from \"./operations.js\";\n\ndeclare const __ORVELLO_SDK_VERSION__: string;\nconst SDK_VERSION: string =\n typeof __ORVELLO_SDK_VERSION__ === \"string\" ? __ORVELLO_SDK_VERSION__ : \"0.0.0-unbuilt\";\n\n/**\n * Eine Faehigkeit und die Operationen, an denen sie haengt.\n *\n * `operations` ist der Beleg: wer die Angabe anzweifelt, kann sie gegen den\n * Vertrag nachschlagen, statt dem Wort zu glauben.\n */\nexport type OrvelloCapability = {\n supported: boolean;\n operations: string[];\n /** Warum nicht — nur gesetzt, wenn `supported` falsch ist. */\n reason?: string;\n};\n\nexport type OrvelloCapabilities = {\n service: \"orvello\";\n sdkVersion: string;\n contractSha256: string;\n /** Wie viele Operationen der Vertrag insgesamt kennt. */\n operationCount: number;\n /** Welche Credential-Bahnen der Vertrag ueberhaupt verlangt. */\n authChannels: Record<OrvelloAuthChannel, number>;\n capabilities: {\n /** Der Dienst nennt seinen eigenen Vertrags-Fingerabdruck (`GET /health/contract`). */\n contractFingerprint: OrvelloCapability;\n /** Ein unauthentisierter Erreichbarkeits-Endpunkt. */\n healthCheck: OrvelloCapability;\n /** OAuth2-Clients fuer andere Apps anlegen, lesen, aendern, loeschen. */\n clientManagement: OrvelloCapability;\n /** Client-Geheimnis erneuern. */\n clientRotation: OrvelloCapability;\n /**\n * Gnadenfrist beim Wechsel: das alte Geheimnis bleibt gueltig, bis es\n * ausdruecklich zurueckgezogen wird — und laesst sich zurueckdrehen.\n */\n rotationGracePeriod: OrvelloCapability;\n /** Zugang sofort entziehen. */\n clientRevocation: OrvelloCapability;\n /** Berechtigungen (entitlements) lesen und setzen. */\n entitlements: OrvelloCapability;\n /** Rechnungen ueber die externe API. */\n invoicing: OrvelloCapability;\n /**\n * Ein serverseitiger Probelauf, der schreibt *als ob*, aber nichts aendert.\n *\n * ⭐ Steht hier bewusst mit dem Grund statt still auf `false`: orvello kennt\n * `dryRun` heute nur in der Buchhaltung, nicht in der Client-Verwaltung. Ein\n * Verwalter, der einen Probelauf braucht, nimmt {@link preflightOrvello} —\n * der ist nebenwirkungsfrei, aber er beweist die Berechtigung, nicht das\n * Ergebnis. Der Unterschied gehoert benannt, nicht verschwiegen.\n */\n serverSideDryRun: OrvelloCapability;\n };\n};\n\nconst CLIENT_MANAGEMENT_OPS = [\n \"oauth2_external_clients_list\",\n \"oauth2_external_clients_get\",\n \"oauth2_external_clients_create\",\n \"oauth2_external_clients_update\",\n \"oauth2_external_clients_delete\",\n];\nconst CLIENT_ROTATION_OPS = [\"oauth2_external_clients_rotate\"];\nconst GRACE_PERIOD_OPS = [\"oauth2_external_clients_retire\", \"oauth2_external_clients_rollback\"];\nconst REVOCATION_OPS = [\"oauth2_external_clients_revoke\"];\n\nfunction capabilityFrom(operationIds: string[], reasonWhenMissing: string): OrvelloCapability {\n const present = operationIds.filter((id) => describeOperation(id) !== null);\n if (present.length === operationIds.length) {\n return { supported: true, operations: present };\n }\n const missing = operationIds.filter((id) => !present.includes(id));\n return {\n supported: false,\n operations: present,\n reason: `${reasonWhenMissing} Fehlend im Vertrag: ${missing.join(\", \")}.`,\n };\n}\n\nfunction capabilityFromPrefix(prefix: string, reasonWhenMissing: string): OrvelloCapability {\n const present = listOperations()\n .filter((operation) => operation.operationId.startsWith(prefix))\n .map((operation) => operation.operationId);\n return present.length > 0\n ? { supported: true, operations: present }\n : { supported: false, operations: [], reason: reasonWhenMissing };\n}\n\n/**\n * Der Faehigkeitsbericht dieses Dienstes. Rein aus dem Vertrag, kein Netzzugriff,\n * kein Credential noetig — damit ein Verwalter ihn auch dann fuehren kann, wenn\n * die Verbindung gerade nicht steht.\n */\nexport function orvelloCapabilities(): OrvelloCapabilities {\n const operations = listOperations();\n const authChannels: Record<OrvelloAuthChannel, number> = { bearer: 0, api_key: 0, none: 0 };\n for (const operation of operations) authChannels[operation.channel]++;\n\n return {\n service: \"orvello\",\n sdkVersion: SDK_VERSION,\n contractSha256: CONTRACT_SHA256,\n operationCount: operations.length,\n authChannels,\n capabilities: {\n // `/health/contract` ist bewusst KEINE Vertrags-Route: der Endpunkt\n // beschreibt den Vertrag und kann deshalb nicht in ihm stehen. Er gehoert\n // zur Zusage dieses SDK und wird von `diagnoseOrvello` live geprueft.\n contractFingerprint: {\n supported: true,\n operations: [],\n },\n healthCheck: capabilityFrom(\n [\"app_info_health\"],\n \"Ohne Erreichbarkeits-Endpunkt bleibt nur der Umweg ueber eine echte Anfrage.\"\n ),\n clientManagement: capabilityFrom(\n CLIENT_MANAGEMENT_OPS,\n \"Ohne diese Routen kann ein Verwalter keine Zugaenge fuer andere Apps ausstellen.\"\n ),\n clientRotation: capabilityFrom(\n CLIENT_ROTATION_OPS,\n \"Ohne Erneuerung ist ein einmal ausgegebenes Geheimnis dauerhaft.\"\n ),\n rotationGracePeriod: capabilityFrom(\n GRACE_PERIOD_OPS,\n \"Ohne Rueckzug und Ruecknahme ist jede Erneuerung ein harter Schnitt.\"\n ),\n clientRevocation: capabilityFrom(\n REVOCATION_OPS,\n \"Ohne Widerruf bleibt ein kompromittierter Zugang bis zum Ablauf gueltig.\"\n ),\n entitlements: capabilityFromPrefix(\n \"entitlements_\",\n \"Dieser Vertrag kennt keine Berechtigungs-Routen.\"\n ),\n invoicing: capabilityFromPrefix(\n \"invoices_\",\n \"Dieser Vertrag kennt keine Rechnungs-Routen.\"\n ),\n serverSideDryRun: {\n supported: false,\n operations: [],\n reason:\n \"orvello bietet keinen serverseitigen Probelauf fuer die Client-Verwaltung an \"\n + \"(`dryRun` gibt es nur in der Buchhaltung). Nebenwirkungsfrei pruefbar ist der \"\n + \"Weg trotzdem: `preflightOrvello` beweist Erreichbarkeit, Vertrag und Credential, \"\n + \"ohne zu schreiben — es beweist damit die Berechtigung, nicht das Ergebnis.\",\n },\n },\n };\n}\n","/**\n * Der Probelauf: \"wuerde dieser Aufruf heute klappen?\" — ohne ihn zu tun.\n *\n * Ein Verbindungs-Verwalter muss zwei Dinge auseinanderhalten koennen, die sonst\n * gern zusammenfallen: *darf ich* und *habe ich*. Eine Kante anzulegen erzeugt\n * echte Daten auf beiden Seiten; das ist ein freigegebener Schritt und kein\n * Nebenprodukt einer Pruefung. Trotzdem will man jederzeit — auch turnusmaessig,\n * auch ohne Anlass — wissen, ob der Weg noch traegt.\n *\n * Genau diese Luecke fuellt der Probelauf. Er geht denselben Weg wie der echte\n * Aufruf: dieselbe Basis-URL, dieselbe Credential-Bahn, derselbe Vertrag. Er\n * hoert nur vor dem Schreiben auf. Was er beweist, ist die **Berechtigung**, nicht\n * das **Ergebnis** — und dieser Unterschied steht in jedem Bericht, damit ihn\n * niemand ueberliest.\n *\n * ⭐ Jeder Schritt traegt seinen Grund. Ein `ok: false` ohne Satz ist genau die\n * schweigende Luecke, die aussieht wie Gesundheit.\n */\n\nimport { diagnoseOrvello, type OrvelloDiagnosis } from \"./diagnose.js\";\nimport {\n describeOperation,\n OrvelloOperationError,\n buildPath,\n type OrvelloAuthChannel,\n type OrvelloOperation,\n} from \"./operations.js\";\n\n/** Der oeffentliche Erreichbarkeits-Endpunkt, wie ihn der Vertrag fuehrt. */\nexport const HEALTH_PATH = describeOperation(\"app_info_health\")?.path ?? \"/app-info/health\";\n\nexport type PreflightStepName =\n | \"operation\"\n | \"path-parameters\"\n | \"request-shape\"\n | \"reachable\"\n | \"contract\"\n | \"credential-configured\"\n | \"credential-accepted\";\n\nexport type PreflightStep = {\n name: PreflightStepName;\n ok: boolean;\n /** Uebersprungen heisst: nicht gepruefft. Nie \"in Ordnung\". */\n skipped: boolean;\n /** Was geprueft wurde und was dabei herauskam — in Worten, nicht als Code. */\n detail: string;\n};\n\nexport type PreflightReport = {\n ok: boolean;\n operationId: string;\n method: string | null;\n /** Der Pfad, der wirklich gerufen wuerde — Platzhalter bereits gesetzt. */\n path: string | null;\n baseUrl: string | null;\n authChannel: OrvelloAuthChannel | null;\n /**\n * Immer `\"none\"`. Ein Probelauf schreibt nicht — das ist seine Zusage, nicht\n * eine Eigenschaft des Einzelfalls.\n */\n sideEffects: \"none\";\n /**\n * Ob der Dienst selbst einen serverseitigen Probelauf dieser Operation kennt.\n * `false` heisst: das hier ist eine Wegpruefung, keine Ergebnisvorschau.\n */\n serverSideDryRun: boolean;\n steps: PreflightStep[];\n problems: string[];\n checkedAt: string;\n};\n\n/**\n * Was der Probelauf vom Client braucht. Bewusst schmal gehalten, damit die\n * Pruefung nicht am Client haengt und einzeln testbar bleibt.\n */\nexport type PreflightHost = {\n resolveBaseUrl(): Promise<string>;\n fetchImpl(): typeof globalThis.fetch;\n /** Ist fuer diese Bahn ueberhaupt ein Credential hinterlegt? Ohne Netz. */\n hasCredentialFor(channel: OrvelloAuthChannel): Promise<boolean>;\n /**\n * Ein echter, ausschliesslich lesender Aufruf auf derselben Bahn.\n * Beweist, dass das Credential nicht nur da ist, sondern auch angenommen wird.\n */\n probeCredential(channel: OrvelloAuthChannel, signal?: AbortSignal): Promise<{ ok: boolean; detail: string }>;\n};\n\nexport type PreflightOptions = {\n params?: Record<string, unknown>;\n query?: Record<string, unknown>;\n body?: unknown;\n timeoutMs?: number;\n signal?: AbortSignal;\n /**\n * Den teuersten Schritt auslassen: kein echter Aufruf, nur die Frage, ob ein\n * Credential hinterlegt ist. Fuer Massenpruefungen ueber viele Kanten.\n */\n skipCredentialProbe?: boolean;\n};\n\nfunction step(name: PreflightStepName, ok: boolean, detail: string, skipped = false): PreflightStep {\n return { name, ok, skipped, detail };\n}\n\n/**\n * Prueft einen Aufrufweg, ohne ihn zu gehen.\n *\n * Die Reihenfolge ist Absicht: erst alles, was ohne Netz entschieden werden kann\n * (Vertrag, Parameter, Gestalt), dann die Erreichbarkeit, dann der Vertrag der\n * laufenden Gegenstelle, zuletzt das Credential. So nennt der Bericht bei einem\n * Fehlschlag die *frueheste* Ursache, statt einen Folgefehler zu melden.\n */\nexport async function preflightOrvello(\n host: PreflightHost,\n operationId: string,\n options: PreflightOptions = {}\n): Promise<PreflightReport> {\n const checkedAt = new Date().toISOString();\n const steps: PreflightStep[] = [];\n const problems: string[] = [];\n\n const report = (extra: Partial<PreflightReport>): PreflightReport => ({\n ok: problems.length === 0,\n operationId,\n method: null,\n path: null,\n baseUrl: null,\n authChannel: null,\n sideEffects: \"none\",\n serverSideDryRun: false,\n steps,\n problems,\n checkedAt,\n ...extra,\n });\n\n // 1 — Kennt der Vertrag diese Operation ueberhaupt?\n const operation: OrvelloOperation | null = describeOperation(operationId);\n if (!operation) {\n steps.push(\n step(\n \"operation\",\n false,\n `Der Vertrag, gegen den dieses SDK gebaut wurde, kennt \"${operationId}\" nicht. `\n + \"Entweder ist der Name falsch, oder das SDK ist aelter als der Dienst.\"\n )\n );\n problems.push(`Unbekannte Operation \"${operationId}\".`);\n return report({});\n }\n steps.push(\n step(\n \"operation\",\n true,\n `${operation.method} ${operation.path} (Auth laut Vertrag: ${operation.authType || \"keine Angabe\"} → Bahn \"${operation.channel}\").`\n )\n );\n\n // 2 — Sind die Platzhalter gefuellt? Ohne das ginge ein Pfad mit \":name\" ans Netz.\n let path: string | null = null;\n try {\n path = buildPath(operationId, options.params);\n steps.push(step(\"path-parameters\", true, `Gerufen wuerde: ${operation.method} ${path}`));\n } catch (error) {\n const detail = error instanceof OrvelloOperationError ? error.message : String(error);\n steps.push(step(\"path-parameters\", false, detail));\n problems.push(detail);\n return report({ method: operation.method, authChannel: operation.channel });\n }\n\n // 3 — Passt die Gestalt der Anfrage zu dem, was der Dienst validiert?\n const shapeProblems: string[] = [];\n if (operation.validated.body && options.body === undefined) {\n shapeProblems.push(\"Der Dienst validiert einen Body, es wurde aber keiner uebergeben.\");\n }\n if (!operation.validated.body && options.body !== undefined) {\n shapeProblems.push(\"Es wurde ein Body uebergeben, den diese Route nicht auswertet.\");\n }\n if (operation.validated.query && options.query === undefined) {\n shapeProblems.push(\n \"Die Route validiert Query-Parameter; ohne uebergebene Werte gelten allein die Voreinstellungen des Dienstes.\"\n );\n }\n if (shapeProblems.length === 0) {\n steps.push(step(\"request-shape\", true, \"Body- und Query-Erwartung des Vertrags sind erfuellt.\"));\n } else {\n // Bewusst kein `problem`: die Gestalt ist ein Hinweis, kein Beweis. Nur ein\n // fehlender Pflicht-Body ist hart — alles andere kann legitim sein.\n const hard = operation.validated.body && options.body === undefined;\n steps.push(step(\"request-shape\", !hard, shapeProblems.join(\" \")));\n if (hard) problems.push(shapeProblems[0] as string);\n }\n\n // 4 — Steht der Dienst?\n const baseUrl = await host.resolveBaseUrl().catch(() => null);\n if (!baseUrl) {\n steps.push(step(\"reachable\", false, \"Die Basis-URL des Dienstes konnte nicht aufgeloest werden.\"));\n problems.push(\"Basis-URL nicht aufloesbar.\");\n return report({ method: operation.method, path, authChannel: operation.channel });\n }\n\n const timeoutMs = options.timeoutMs ?? 8_000;\n const reachable = await probeReachable(host, baseUrl, timeoutMs, options.signal);\n steps.push(step(\"reachable\", reachable.ok, reachable.detail));\n if (!reachable.ok) {\n problems.push(reachable.detail);\n return report({ method: operation.method, path, baseUrl, authChannel: operation.channel });\n }\n\n // 5 — Spricht die laufende Gegenstelle den Vertrag, den dieses SDK kennt?\n const diagnosis: OrvelloDiagnosis = await diagnoseOrvello({\n baseUrl,\n fetch: host.fetchImpl(),\n timeoutMs,\n signal: options.signal,\n });\n if (diagnosis.contract.status === \"match\") {\n steps.push(step(\"contract\", true, `Vertrag stimmt ueberein (${diagnosis.contract.sdk.slice(0, 12)}).`));\n } else if (diagnosis.contract.status === \"drift\") {\n const detail = diagnosis.problems[0] ?? \"Vertrags-Abweichung zwischen SDK und Dienst.\";\n steps.push(step(\"contract\", false, detail));\n problems.push(detail);\n } else {\n // Unbekannt ist nicht gut und nicht schlecht — aber es ist nicht geprueft,\n // und genau so steht es im Bericht.\n steps.push(\n step(\n \"contract\",\n false,\n diagnosis.problems[0] ?? \"Der Vertrag der Gegenstelle konnte nicht ermittelt werden.\",\n true\n )\n );\n }\n\n // 6 — Ist fuer die von der Route verlangte Bahn ueberhaupt etwas hinterlegt?\n if (operation.channel === \"none\") {\n steps.push(step(\"credential-configured\", true, \"Die Route ist oeffentlich und braucht kein Credential.\", true));\n steps.push(step(\"credential-accepted\", true, \"Entfaellt: oeffentliche Route.\", true));\n return report({ method: operation.method, path, baseUrl, authChannel: operation.channel });\n }\n\n const configured = await host.hasCredentialFor(operation.channel);\n const channelName =\n operation.channel === \"api_key\"\n ? \"der Verwaltungs-Schluessel (Header `x-api-key`)\"\n : \"das Bearer-Credential (OAuth2-Client oder Token)\";\n steps.push(\n step(\n \"credential-configured\",\n configured,\n configured\n ? `${channelName} ist hinterlegt.`\n : `${channelName} fehlt. Diese Route ist ohne ihn nicht aufrufbar.`\n )\n );\n if (!configured) {\n problems.push(`Kein Credential fuer die Bahn \"${operation.channel}\" hinterlegt.`);\n return report({ method: operation.method, path, baseUrl, authChannel: operation.channel });\n }\n\n // 7 — Und wird es auch angenommen? Ein lesender Aufruf, kein schreibender.\n if (options.skipCredentialProbe) {\n steps.push(\n step(\"credential-accepted\", false, \"Auf Wunsch uebersprungen — hinterlegt ist nicht angenommen.\", true)\n );\n return report({ method: operation.method, path, baseUrl, authChannel: operation.channel });\n }\n\n const accepted = await host.probeCredential(operation.channel, options.signal);\n steps.push(step(\"credential-accepted\", accepted.ok, accepted.detail));\n if (!accepted.ok) problems.push(accepted.detail);\n\n return report({ method: operation.method, path, baseUrl, authChannel: operation.channel });\n}\n\nasync function probeReachable(\n host: PreflightHost,\n baseUrl: string,\n timeoutMs: number,\n signal?: AbortSignal\n): Promise<{ ok: boolean; detail: string }> {\n const doFetch = host.fetchImpl();\n const controller = new AbortController();\n const onAbort = () => controller.abort(signal?.reason);\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n if (signal?.aborted) controller.abort(signal.reason);\n const timer = setTimeout(() => controller.abort(new Error(`Reachability probe timed out after ${timeoutMs}ms`)), timeoutMs);\n\n const started = Date.now();\n try {\n // ⭐ Die Vertrags-Route, nicht ein geratener Pfad. `/health` gibt es bei\n // node-bill, aber es steht in keinem Vertrag -- eine andere orvello-Instanz\n // muss es nicht haben, und ein 404 saehe dann aus wie \"Dienst tot\".\n // `app_info_health` ist die Operation, die `capabilities()` als\n // Erreichbarkeits-Weg ausweist; beide zeigen damit auf dasselbe.\n const response = await doFetch(`${baseUrl}${HEALTH_PATH}`, {\n method: \"GET\",\n headers: { accept: \"application/json\" },\n signal: controller.signal,\n });\n const took = Date.now() - started;\n // Auch eine 4xx-Antwort beweist, dass jemand zuhoert. Erreichbarkeit ist\n // Transport, nicht Berechtigung — die Trennung ist der ganze Punkt.\n return {\n ok: response.status < 500,\n detail:\n response.status < 500\n ? `${baseUrl} antwortet (${response.status}, ${took} ms).`\n : `${baseUrl} antwortet mit ${response.status} — der Dienst laeuft, aber nicht gesund.`,\n };\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n return { ok: false, detail: `${baseUrl} ist nicht erreichbar: ${detail}` };\n } finally {\n clearTimeout(timer);\n signal?.removeEventListener(\"abort\", onAbort);\n }\n}\n","import type {\n InvoicesCreateExternalBody,\n InvoicesPreviewExternalBody,\n InvoicesPreviewExternalResponseData,\n InvoicesCreateExternalResponseData,\n InvoicesGetByIdExternalResponseData,\n InvoicesPaymentEvidenceExternalResponseData,\n InvoicesPaymentEventsExternalResponseData,\n InvoicesPaymentEventsExternalQuery,\n InvoicesPaymentInstructionsExternalResponseData,\n InvoicesSearchExternalQuery,\n InvoicesSearchExternalResponseData,\n InvoicesPendingExternalResponseData,\n InvoicesOverdueExternalResponseData,\n InvoicesStatusPolicyExternalResponseData,\n InvoicesUpdateStatusExternalBody,\n InvoicesUpdateStatusExternalResponseData,\n InvoicesCreditNotePreviewExternalBody,\n InvoicesCreditNotePreviewExternalResponseData,\n InvoicesCreditNoteIssueExternalBody,\n InvoicesCreditNoteIssueExternalResponseData,\n InvoicesDeleteExternalResponseData,\n InvoicesSendEmailExternalBody,\n InvoicesSendEmailExternalResponseData,\n} from \"./generated/api/features/routes.invoices_external.js\";\n\nimport type {\n CustomerCompaniesSearchExternalQuery,\n CustomerCompaniesSearchExternalResponseData,\n CustomerCompaniesGetByIdExternalResponseData,\n CustomerCompaniesCreateExternalBody,\n CustomerCompaniesCreateExternalResponseData,\n CustomerCompaniesUpdateExternalBody,\n CustomerCompaniesUpdateExternalResponseData,\n CustomerCompaniesDeleteExternalResponseData,\n} from \"./generated/api/features/routes.customer_companies_external.js\";\n\nimport type {\n ManagingCompaniesCurrentExternalResponseData,\n} from \"./generated/api/features/routes.managing_companies_external.js\";\n\nimport type {\n DunningSuggestionsExternalQuery,\n DunningSuggestionsExternalResponseData,\n DunningPreviewExternalBody,\n DunningPreviewExternalResponseData,\n DunningIssueExternalBody,\n DunningIssueExternalResponseData,\n DunningGetSettingsExternalResponseData,\n DunningUpdateSettingsExternalBody,\n DunningUpdateSettingsExternalResponseData,\n} from \"./generated/api/features/routes.dunning_external.js\";\n\nimport type {\n BookkeepingRevenuesCreateExternalBody,\n BookkeepingRevenuesCreateExternalResponseData,\n BookkeepingRevenuesInvoiceAdjustmentExternalBody,\n BookkeepingRevenuesInvoiceAdjustmentExternalResponseData,\n BookkeepingExpensesCreateExternalBody,\n BookkeepingExpensesCreateExternalResponseData,\n BookkeepingPaymentsListAccountsExternalQuery,\n BookkeepingPaymentsListAccountsExternalResponseData,\n BookkeepingPaymentsCreateManualExternalBody,\n BookkeepingPaymentsCreateManualExternalResponseData,\n BookkeepingPaymentsSettleInvoiceExternalBody,\n BookkeepingPaymentsSettleInvoiceExternalResponseData,\n} from \"./generated/api/features/routes.bookkeeping.js\";\n\nimport type {\n UsersGetByExternalUserIdResponseData,\n UsersUpdateExternalBody,\n UsersUpdateExternalResponseData,\n UsersDeleteExternalResponseData,\n} from \"./generated/api/base/routes.users.js\";\n\nimport type {\n Oauth2ExternalClientsListQuery,\n Oauth2ExternalClientsListResponseData,\n Oauth2ExternalClientsGetResponseData,\n Oauth2ExternalClientsCreateBody,\n Oauth2ExternalClientsCreateResponseData,\n Oauth2ExternalClientsUpdateBody,\n Oauth2ExternalClientsUpdateResponseData,\n Oauth2ExternalClientsRotateBody,\n Oauth2ExternalClientsRotateResponseData,\n Oauth2ExternalClientsRetireResponseData,\n Oauth2ExternalClientsRollbackResponseData,\n Oauth2ExternalClientsRevokeResponseData,\n Oauth2ExternalClientsDeleteResponseData,\n} from \"./generated/api/index.js\";\n\nimport { diagnoseOrvello, type BaseUrlProvider, type OrvelloDiagnosis } from \"./diagnose.js\";\nimport {\n type ExpenseReceiptUpload,\n type BankAccountDetails,\n mapPaymentAccountToBankDetails,\n} from \"./helpers.js\";\nimport {\n buildPath,\n describeOperation,\n resolveOperation,\n OrvelloOperationError,\n type OrvelloAuthChannel,\n} from \"./operations.js\";\nimport { orvelloCapabilities, type OrvelloCapabilities } from \"./capabilities.js\";\nimport {\n preflightOrvello,\n HEALTH_PATH,\n type PreflightHost,\n type PreflightOptions,\n type PreflightReport,\n} from \"./preflight.js\";\n\nexport type AuthProvider =\n | string\n | (() => string | Promise<string>)\n | {\n apiKey: string;\n }\n | {\n clientId: string;\n clientSecret: string;\n scope?: string;\n tokenUrl?: string;\n };\n\n/** Ein Wert, der sich auch erst beim Aufruf ergeben darf. */\nexport type ValueProvider<T> = T | (() => T | Promise<T>);\n\nexport type HeadersProvider = ValueProvider<Record<string, string>>;\n\nexport interface CircuitBreakerConfig {\n /** Wie viele Fehlschlaege in Folge den Kreis oeffnen. */\n threshold?: number;\n /** Wie lange danach nicht erneut versucht wird, bevor ein Versuch den Kreis prueft. */\n cooldownMs?: number;\n}\n\nexport interface OrvelloClientConfig {\n /**\n * Base URL of the orvello accounting/invoicing service this client talks to.\n *\n * The SDK deliberately ships **no** baked-in default endpoint: every instance\n * resolves its target platform explicitly. Pass `baseUrl`, or the same value\n * via the `ORVELLO_URL` environment variable. Without either the constructor\n * throws rather than silently aiming at a fixed host.\n */\n baseUrl?: BaseUrlProvider;\n /**\n * Das Credential der **Geschaeftsrouten** — ein OAuth2-Client\n * (client_credentials) oder ein fertiger Token. Geht als\n * `Authorization: Bearer` mit. Env: `ORVELLO_OAUTH_CLIENT_ID` /\n * `ORVELLO_OAUTH_CLIENT_SECRET` / `ORVELLO_OAUTH_SCOPE`, ersatzweise\n * `ORVELLO_API_KEY`.\n */\n auth?: AuthProvider;\n /**\n * Das Credential der **Verwaltungsrouten** (`/oauth/clients/external/*`), also\n * der Header `x-api-key`. Env: `ORVELLO_MANAGEMENT_API_KEY`.\n *\n * ⭐ Das ist bewusst ein zweiter, eigener Wert und keine zweite Schreibweise\n * desselben. Die Geschaeftsrouten gehoeren der rufenden App, die\n * Verwaltungsrouten der Kante zwischen Verwalter und Dienst — wer beides in ein\n * Feld legt, verliert genau die Trennung, die eine Rotation je Kante moeglich\n * macht. Ein Client, der nur Rechnungen schreibt, laesst diesen Wert weg und\n * kann dann auch keine Zugaenge ausstellen. Das ist erwuenscht.\n */\n managementApiKey?: ValueProvider<string>;\n /**\n * Zusaetzliche Kopfzeilen fuer jede Anfrage an den Dienst: Geschaeftsaufrufe,\n * Token-Tausch, Gesundheits- und Vertragsprobe, Preflight. Typischer Fall ist der\n * Ausweis fuer eine Kante davor (Cloudflare Access), ohne den keiner dieser Wege\n * durchkommt. Wird vor der Auth-Kopfzeile angewandt, kann sie also nicht\n * versehentlich ueberschreiben. Andere Hosts (etwa ein vorsignierter\n * Speicher-Link) bekommen sie nicht.\n */\n headers?: HeadersProvider;\n fetch?: typeof globalThis.fetch;\n timeoutMs?: number;\n maxRetries?: number;\n retryBaseDelayMs?: number;\n /**\n * Der Sicherungsautomat. `false` schaltet ihn ab.\n *\n * Wiederholungen helfen gegen einen Aussetzer; sie helfen nicht, wenn die\n * Gegenstelle weg ist — dann verlaengern sie nur jede einzelne Anfrage um das\n * volle Zeitlimit mal Versuche. Der Automat beendet diesen Zustand schnell und\n * laut, statt langsam und leise.\n */\n circuitBreaker?: CircuitBreakerConfig | false;\n}\n\nexport interface RequestOptions {\n query?: Record<string, unknown>;\n headers?: Record<string, string>;\n idempotencyKey?: string;\n rawResponse?: boolean;\n timeoutMs?: number;\n maxRetries?: number;\n signal?: AbortSignal;\n /**\n * Die Credential-Bahn ausdruecklich setzen. Normalerweise unnoetig: der Client\n * liest sie aus dem Vertrag der angesprochenen Route. Nur fuer Pfade gedacht,\n * die der mitgelieferte Vertrag (noch) nicht kennt.\n */\n authChannel?: OrvelloAuthChannel;\n}\n\n/** Wie {@link RequestOptions}, aber fuer den Aufruf ueber eine `operationId`. */\nexport interface CallOptions extends RequestOptions {\n params?: Record<string, unknown>;\n body?: unknown;\n}\n\nexport type OrvelloHealth = {\n /** Antwortet der Dienst ueberhaupt? */\n available: boolean;\n responseTimeMs: number;\n /**\n * Wurde ein Credential wirklich angenommen? `null` heisst: nicht geprueft,\n * weil keines hinterlegt ist — nie \"in Ordnung\".\n */\n authenticated: boolean | null;\n error?: string;\n};\n\nexport type CircuitBreakerState = {\n open: boolean;\n consecutiveFailures: number;\n lastFailureAt: number | null;\n threshold: number;\n cooldownMs: number;\n};\n\nexport class OrvelloApiError extends Error {\n constructor(\n public readonly status: number,\n public readonly statusText: string,\n public readonly endpoint: string,\n public readonly body: unknown,\n message?: string\n ) {\n super(message || `orvello request to ${endpoint} failed with status ${status}: ${statusText}`);\n this.name = \"OrvelloApiError\";\n }\n\n /** Readable alias for the primary `status` field. */\n public get statusCode(): number {\n return this.status;\n }\n\n /** Readable alias for the raw `body` payload. */\n public get responseBody(): unknown {\n return this.body;\n }\n}\n\nexport class OrvelloClient {\n public readonly baseUrl: BaseUrlProvider;\n private readonly auth?: AuthProvider;\n private readonly managementApiKey?: ValueProvider<string>;\n private readonly extraHeaders?: HeadersProvider;\n private readonly doFetch: typeof globalThis.fetch;\n private readonly timeoutMs: number;\n private readonly maxRetries: number;\n private readonly retryBaseDelayMs: number;\n private cachedOAuthToken: { token: string; expiresAt: number } | null = null;\n\n private readonly breakerThreshold: number;\n private readonly breakerCooldownMs: number;\n private breakerFailures = 0;\n private breakerLastFailureAt: number | null = null;\n\n // Cached default bank account (5 minutes TTL)\n private _bankAccountCache: BankAccountDetails | null = null;\n private _bankAccountCacheTime = 0;\n\n constructor(config: OrvelloClientConfig = {}) {\n const baseUrl = config.baseUrl ?? this.envBaseUrl();\n if (!baseUrl) {\n throw new Error(\n \"OrvelloClient requires a target platform: pass { baseUrl } or set the ORVELLO_URL \" +\n \"environment variable. The SDK deliberately ships no baked-in default endpoint.\"\n );\n }\n this.baseUrl = baseUrl;\n\n if (config.auth) {\n this.auth = config.auth;\n } else {\n this.auth = this.envAuth();\n }\n\n this.managementApiKey = config.managementApiKey ?? this.envManagementApiKey();\n this.extraHeaders = config.headers;\n\n const rawFetch = config.fetch || globalThis.fetch;\n // Jeder Weg zum Dienst geht durch diese eine Stelle, auch Token-Tausch und Proben.\n // Vorher bekam nur der Geschaeftsaufruf die Kopfzeilen, und hinter Cloudflare Access\n // waere der Token-Tausch davor an der Kante abgeprallt.\n this.doFetch = typeof rawFetch === \"function\"\n ? ((input, init) => this.fetchWithServiceHeaders(rawFetch, input, init)) as typeof globalThis.fetch\n : rawFetch;\n this.timeoutMs = config.timeoutMs ?? 15_000;\n this.maxRetries = config.maxRetries ?? 3;\n this.retryBaseDelayMs = config.retryBaseDelayMs ?? 500;\n\n // `false` heisst wirklich aus: Schwelle 0 wird nie erreicht.\n if (config.circuitBreaker === false) {\n this.breakerThreshold = Number.POSITIVE_INFINITY;\n this.breakerCooldownMs = 0;\n } else {\n this.breakerThreshold = config.circuitBreaker?.threshold ?? 5;\n this.breakerCooldownMs = config.circuitBreaker?.cooldownMs ?? 60_000;\n }\n }\n\n private envBaseUrl(): BaseUrlProvider | undefined {\n if (typeof process === \"undefined\" || !process?.env) return undefined;\n const url = process.env.ORVELLO_URL;\n return url ? url : undefined;\n }\n\n private envAuth(): AuthProvider | undefined {\n if (typeof process === \"undefined\" || !process?.env) return undefined;\n const clientId = process.env.ORVELLO_OAUTH_CLIENT_ID;\n const clientSecret = process.env.ORVELLO_OAUTH_CLIENT_SECRET;\n const apiKey = process.env.ORVELLO_API_KEY;\n const scope = process.env.ORVELLO_OAUTH_SCOPE;\n\n if (clientId && clientSecret && clientId !== \"todo\" && clientSecret !== \"todo\") {\n return { clientId, clientSecret, ...(scope ? { scope } : {}) };\n }\n if (apiKey) return { apiKey };\n return undefined;\n }\n\n private envManagementApiKey(): string | undefined {\n if (typeof process === \"undefined\" || !process?.env) return undefined;\n const key = process.env.ORVELLO_MANAGEMENT_API_KEY;\n return key && key !== \"todo\" ? key : undefined;\n }\n\n public async resolveBaseUrl(): Promise<string> {\n const val = typeof this.baseUrl === \"function\" ? await this.baseUrl() : this.baseUrl;\n return val.replace(/\\/+$/, \"\");\n }\n\n /**\n * Haengt die konfigurierten Kopfzeilen an, wenn die Anfrage an den Dienst selbst geht\n * (Basis-Adresse oder eigener Token-Endpunkt). Schon gesetzte Kopfzeilen bleiben.\n */\n private async fetchWithServiceHeaders(\n rawFetch: typeof globalThis.fetch,\n input: Parameters<typeof globalThis.fetch>[0],\n init?: Parameters<typeof globalThis.fetch>[1],\n ): Promise<Response> {\n const configured = await OrvelloClient.resolveValue(this.extraHeaders);\n if (!configured || Object.keys(configured).length === 0) return rawFetch(input, init);\n\n const target = typeof input === \"string\" ? input : input instanceof URL ? input.href : input.url;\n if (!(await this.isServiceOrigin(target))) return rawFetch(input, init);\n\n const headers = new Headers(init?.headers ?? (typeof input === \"object\" && \"headers\" in input ? input.headers : undefined));\n for (const [name, value] of Object.entries(configured)) {\n if (!headers.has(name)) headers.set(name, value);\n }\n return rawFetch(input, { ...init, headers });\n }\n\n private async isServiceOrigin(target: string): Promise<boolean> {\n let origin: string;\n try {\n origin = new URL(target).origin;\n } catch {\n return false;\n }\n const own: string[] = [];\n try {\n own.push(new URL(await this.resolveBaseUrl()).origin);\n } catch {\n // Ohne aufloesbare Basis-Adresse gibt es keinen Dienst, dem die Kopfzeilen gehoeren.\n }\n if (typeof this.auth === \"object\" && \"tokenUrl\" in this.auth && this.auth.tokenUrl) {\n try {\n own.push(new URL(this.auth.tokenUrl).origin);\n } catch {\n // Ein kaputter Token-Endpunkt scheitert gleich beim Aufruf mit eigener Meldung.\n }\n }\n return own.includes(origin);\n }\n\n private static async resolveValue<T>(provider: ValueProvider<T> | undefined): Promise<T | undefined> {\n if (provider === undefined) return undefined;\n return typeof provider === \"function\" ? await (provider as () => T | Promise<T>)() : provider;\n }\n\n /**\n * Der Verwaltungs-Schluessel, sofern hinterlegt.\n *\n * Ein leerer String zaehlt als \"nicht hinterlegt\". Sonst waere die haeufigste\n * Fehlkonfiguration — eine gesetzte, aber leere Umgebungsvariable — von einem\n * echten Wert nicht zu unterscheiden, und der Fehler kaeme erst als `403` vom\n * Dienst zurueck.\n */\n private async resolveManagementApiKey(): Promise<string | undefined> {\n const key = (await OrvelloClient.resolveValue(this.managementApiKey))?.trim();\n return key ? key : undefined;\n }\n\n private async getAuthHeader(): Promise<string | null> {\n if (!this.auth) return null;\n\n if (typeof this.auth === \"string\") {\n return this.auth.startsWith(\"Bearer \") ? this.auth : `Bearer ${this.auth}`;\n }\n\n if (typeof this.auth === \"function\") {\n const token = await this.auth();\n return token.startsWith(\"Bearer \") ? token : `Bearer ${token}`;\n }\n\n if (typeof this.auth === \"object\" && \"apiKey\" in this.auth && typeof this.auth.apiKey === \"string\") {\n const key = this.auth.apiKey;\n return key.startsWith(\"Bearer \") ? key : `Bearer ${key}`;\n }\n\n // OAuth2 client_credentials flow\n if (\n typeof this.auth === \"object\" &&\n \"clientId\" in this.auth &&\n \"clientSecret\" in this.auth\n ) {\n const now = Date.now();\n if (this.cachedOAuthToken && this.cachedOAuthToken.expiresAt > now + 30_000) {\n return `Bearer ${this.cachedOAuthToken.token}`;\n }\n\n const baseUrl = await this.resolveBaseUrl();\n const tokenEndpoint = this.auth.tokenUrl || `${baseUrl}/oauth/token`;\n const credentials = typeof Buffer !== \"undefined\"\n ? Buffer.from(`${this.auth.clientId}:${this.auth.clientSecret}`).toString(\"base64\")\n : globalThis.btoa(`${this.auth.clientId}:${this.auth.clientSecret}`);\n\n const bodyParams = new URLSearchParams({\n grant_type: \"client_credentials\",\n client_id: this.auth.clientId,\n client_secret: this.auth.clientSecret,\n });\n if (this.auth.scope) {\n bodyParams.set(\"scope\", this.auth.scope);\n }\n\n const resp = await this.doFetch(tokenEndpoint, {\n method: \"POST\",\n headers: {\n \"Authorization\": `Basic ${credentials}`,\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n body: bodyParams.toString(),\n });\n\n if (!resp.ok) {\n let errBody: unknown;\n try {\n errBody = await resp.json();\n } catch {\n errBody = await resp.text().catch(() => \"\");\n }\n throw new OrvelloApiError(\n resp.status,\n resp.statusText,\n tokenEndpoint,\n errBody,\n \"Failed to obtain OAuth2 token from the orvello service\" );\n }\n\n const data = (await resp.json()) as { access_token: string; expires_in?: number };\n const expiresIn = data.expires_in || 3600;\n this.cachedOAuthToken = {\n token: data.access_token,\n expiresAt: now + expiresIn * 1000,\n };\n\n return `Bearer ${data.access_token}`;\n }\n\n return null;\n }\n\n private isRetriable(status: number | null, error: unknown): boolean {\n if (status !== null) {\n // 5xx = server error, 429 = rate limit\n return status >= 500 || status === 429;\n }\n if (error instanceof Error) {\n const msg = error.message.toLowerCase();\n return (\n error.name === \"AbortError\" ||\n error.name === \"TimeoutError\" ||\n msg.includes(\"fetch failed\") ||\n msg.includes(\"network\") ||\n msg.includes(\"econnrefused\") ||\n msg.includes(\"etimedout\") ||\n msg.includes(\"enotfound\") ||\n msg.includes(\"socket\")\n );\n }\n return false;\n }\n\n public async request<T = unknown>(\n path: string,\n options: RequestInit & RequestOptions = {}\n ): Promise<T> {\n const maxRetries = options.maxRetries ?? this.maxRetries;\n const timeoutMs = options.timeoutMs ?? this.timeoutMs;\n const baseUrl = await this.resolveBaseUrl();\n const cleanPath = path.startsWith(\"/\") ? path : `/${path}`;\n const url = new URL(`${baseUrl}${cleanPath}`);\n\n // ⭐ Die Route bestimmt das Credential, nicht der Aufrufer. Wer den Pfad von\n // Hand baut, bekommt dieselbe Entscheidung wie die getippten Methoden — der\n // Vertrag ist fuer beide dieselbe Quelle.\n const method = (options.method ?? \"GET\").toUpperCase();\n const authChannel: OrvelloAuthChannel =\n options.authChannel ?? resolveOperation(method, cleanPath)?.channel ?? \"bearer\";\n\n this.assertCircuitClosed(cleanPath);\n\n if (options.query) {\n for (const [k, v] of Object.entries(options.query)) {\n if (v !== undefined && v !== null) {\n url.searchParams.set(k, String(v));\n }\n }\n }\n\n let lastError: unknown;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n const controller = new AbortController();\n const onAbort = () => controller.abort(options.signal?.reason);\n options.signal?.addEventListener(\"abort\", onAbort, { once: true });\n if (options.signal?.aborted) controller.abort(options.signal.reason);\n\n const timer = setTimeout(\n () => controller.abort(new Error(`Request timed out after ${timeoutMs}ms`)),\n timeoutMs\n );\n\n try {\n const headers = new Headers(options.headers);\n\n // Erst die mitgegebenen Kopfzeilen, dann die Auth-Kopfzeile: so kann eine\n // allgemeine Konfiguration das Credential nicht versehentlich verdraengen.\n const configured = await OrvelloClient.resolveValue(this.extraHeaders);\n if (configured) {\n for (const [name, value] of Object.entries(configured)) {\n if (!headers.has(name)) headers.set(name, value);\n }\n }\n\n if (authChannel === \"bearer\") {\n const authHeader = await this.getAuthHeader();\n if (authHeader && !headers.has(\"Authorization\")) {\n headers.set(\"Authorization\", authHeader);\n }\n } else if (authChannel === \"api_key\") {\n const key = await this.resolveManagementApiKey();\n if (!key) {\n // Ohne diesen Wert antwortet der Dienst mit `403 Forbidden: Invalid\n // API key` — einer Meldung, die nach einem falschen Schluessel\n // aussieht statt nach einem fehlenden. Der Unterschied kostet sonst\n // eine Suche an der falschen Stelle.\n throw new OrvelloApiError(\n 0,\n \"missing management credential\",\n cleanPath,\n null,\n `${method} ${cleanPath} is a management route and needs the \\`x-api-key\\` credential. `\n + \"Pass `managementApiKey` to createOrvelloClient() or set ORVELLO_MANAGEMENT_API_KEY. \"\n + \"It is a different value from the OAuth2 client used for the business routes.\"\n );\n }\n if (!headers.has(\"x-api-key\")) headers.set(\"x-api-key\", key);\n }\n if (options.idempotencyKey && !headers.has(\"Idempotency-Key\")) {\n headers.set(\"Idempotency-Key\", options.idempotencyKey);\n }\n if (options.body && typeof options.body === \"string\" && !headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json\");\n }\n\n const resp = await this.doFetch(url.toString(), {\n ...options,\n headers,\n signal: controller.signal,\n });\n\n if (!resp.ok) {\n // Nur die Bearer-Bahn hat einen zwischengespeicherten Token, der\n // abgelaufen sein koennte. Ein `401` auf der Schluessel-Bahn hat eine\n // andere Ursache, und den Token dafuer wegzuwerfen wuerde nur den\n // naechsten Geschaeftsaufruf unnoetig verlangsamen.\n if (resp.status === 401 && authChannel === \"bearer\") {\n const hadCachedToken = Boolean(this.cachedOAuthToken);\n this.cachedOAuthToken = null;\n // If we used a cached token and it was rejected with 401, retry once with fresh token\n if (hadCachedToken && attempt === 0 && attempt < maxRetries) {\n continue;\n }\n }\n\n let errBody: unknown;\n try {\n errBody = await resp.json();\n } catch {\n errBody = await resp.text().catch(() => null);\n }\n\n const apiMessage =\n errBody && typeof errBody === \"object\" && \"message\" in errBody && typeof (errBody as { message: unknown }).message === \"string\"\n ? (errBody as { message: string }).message\n : undefined;\n\n const error = new OrvelloApiError(resp.status, resp.statusText, cleanPath, errBody, apiMessage);\n\n // ⭐ Eine `403` ist kein Ausfall. Der Dienst hat geantwortet, er hat nur\n // nein gesagt — der Sicherungsautomat schuetzt gegen eine tote\n // Gegenstelle, nicht gegen ein falsches Credential. Wer beides\n // zusammenwirft, schaltet sich nach fuenf Berechtigungsfehlern selbst ab.\n if (resp.status >= 500) this.recordFailure();\n else this.recordSuccess();\n\n if (!this.isRetriable(resp.status, error) || attempt >= maxRetries) {\n throw error;\n }\n lastError = error;\n } else {\n this.recordSuccess();\n // Success response\n const contentType = resp.headers.get(\"content-type\") || \"\";\n\n if (options.rawResponse || contentType.includes(\"application/pdf\")) {\n return (await resp.blob()) as unknown as T;\n }\n\n if (contentType.includes(\"application/json\")) {\n const json = await resp.json();\n\n // Check if response is wrapped in ApiEnvelope ({ success, data, message })\n if (json && typeof json === \"object\" && \"success\" in json) {\n const env = json as { success: boolean; data?: unknown; message?: string };\n if (env.success === false) {\n throw new OrvelloApiError(resp.status, resp.statusText, cleanPath, json, env.message || \"API returned success=false\");\n }\n return env.data as T;\n }\n\n return json as T;\n }\n\n return (await resp.text()) as unknown as T;\n }\n } catch (err) {\n lastError = err;\n if (err instanceof OrvelloApiError && !this.isRetriable(err.status, err)) {\n throw err;\n }\n // Bis hierher kommt nur, was kein Antwort-Fehler ist: Zeitablauf,\n // Verbindungsabbruch, Namensaufloesung. Das sind die Faelle, gegen die\n // der Automat gebaut ist.\n if (!(err instanceof OrvelloApiError)) this.recordFailure();\n if (!this.isRetriable(null, err) || attempt >= maxRetries) {\n throw err;\n }\n } finally {\n clearTimeout(timer);\n options.signal?.removeEventListener(\"abort\", onAbort);\n }\n\n // Retry backoff delay: base * 2^attempt + jitter\n const jitter = Math.random() * 100;\n const delay = this.retryBaseDelayMs * Math.pow(2, attempt) + jitter;\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n\n throw lastError;\n }\n\n // ── Sicherungsautomat ────────────────────────────────────────────────────\n\n private recordSuccess(): void {\n this.breakerFailures = 0;\n this.breakerLastFailureAt = null;\n }\n\n private recordFailure(): void {\n this.breakerFailures++;\n this.breakerLastFailureAt = Date.now();\n }\n\n /**\n * Ist der Dienst nach aktuellem Wissen ansprechbar?\n *\n * Antwortet ohne Netzzugriff aus dem Zustand des Automaten. Nach Ablauf der\n * Abkuehlzeit gilt er wieder als ansprechbar — der naechste echte Aufruf\n * entscheidet dann, ob das stimmt.\n */\n public isAvailable(): boolean {\n if (this.breakerFailures < this.breakerThreshold) return true;\n if (this.breakerLastFailureAt === null) return true;\n return Date.now() - this.breakerLastFailureAt > this.breakerCooldownMs;\n }\n\n /** Der Zustand des Automaten, unverfaelscht — fuer Diagnose-Oberflaechen. */\n public circuitState(): CircuitBreakerState {\n return {\n open: !this.isAvailable(),\n consecutiveFailures: this.breakerFailures,\n lastFailureAt: this.breakerLastFailureAt,\n threshold: this.breakerThreshold,\n cooldownMs: this.breakerCooldownMs,\n };\n }\n\n /** Den Automaten von Hand schliessen, etwa nach einer behobenen Stoerung. */\n public resetCircuit(): void {\n this.recordSuccess();\n }\n\n private assertCircuitClosed(path: string): void {\n if (this.isAvailable()) return;\n const waited = this.breakerLastFailureAt ? Date.now() - this.breakerLastFailureAt : 0;\n const remaining = Math.max(0, this.breakerCooldownMs - waited);\n throw new OrvelloApiError(\n 0,\n \"circuit open\",\n path,\n null,\n `orvello is not answering: ${this.breakerFailures} consecutive transport failures. `\n + `Not retrying for another ${Math.ceil(remaining / 1000)}s.`\n );\n }\n\n // ── Vertragsgetriebener Aufruf ───────────────────────────────────────────\n\n /**\n * Eine Operation des Vertrags ueber ihre `operationId` aufrufen.\n *\n * Methode, Pfad und Credential-Bahn kommen aus dem Vertrag; der Aufrufer gibt\n * nur die Werte. Das ist der Weg fuer alles, wofuer es keine getippte Methode\n * gibt — und der Weg, der bei einer neuen Route sofort mitwaechst, statt auf\n * eine Handarbeit in diesem Client zu warten.\n *\n * Der Rueckgabetyp ist bewusst offen: die genauen Typen je Operation stehen im\n * Unterpfad `@orvello/sdk/contract` und werden hier als Typ-Argument gesetzt.\n * Ein `operationId`, den der Vertrag nicht kennt, wirft sofort — nicht erst,\n * wenn der Dienst mit 404 antwortet.\n */\n public async call<T = unknown>(operationId: string, options: CallOptions = {}): Promise<T> {\n const operation = describeOperation(operationId);\n if (!operation) {\n throw new OrvelloOperationError(\n `Unknown orvello operation \"${operationId}\". It is not part of the contract this SDK was built against `\n + `(@orvello/sdk speaks ${orvelloCapabilities().operationCount} operations).`,\n operationId\n );\n }\n\n const { params, body, ...rest } = options;\n const path = buildPath(operationId, params);\n\n return this.request<T>(path, {\n ...rest,\n method: operation.method,\n authChannel: rest.authChannel ?? operation.channel,\n ...(body === undefined ? {} : { body: JSON.stringify(body) }),\n });\n }\n\n // ── Zustand und Faehigkeiten ─────────────────────────────────────────────\n\n /**\n * Steht der Dienst, und wird unser Credential angenommen?\n *\n * ⭐ `available` und `authenticated` sind zwei Fragen, und der Bericht haelt sie\n * auseinander. Ein Dienst, der laeuft, aber unser Credential ablehnt, ist nicht\n * \"verfuegbar\" im Sinne dessen, der ihn benutzen will — und ein `authenticated:\n * null` heisst \"nicht gefragt\", nie \"in Ordnung\".\n */\n public async checkHealth(options: { timeoutMs?: number; signal?: AbortSignal } = {}): Promise<OrvelloHealth> {\n const started = Date.now();\n const timeoutMs = options.timeoutMs ?? 8_000;\n\n let baseUrl: string;\n try {\n baseUrl = await this.resolveBaseUrl();\n } catch (error) {\n return {\n available: false,\n responseTimeMs: Date.now() - started,\n authenticated: null,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n\n const controller = new AbortController();\n const onAbort = () => controller.abort(options.signal?.reason);\n options.signal?.addEventListener(\"abort\", onAbort, { once: true });\n if (options.signal?.aborted) controller.abort(options.signal.reason);\n const timer = setTimeout(() => controller.abort(new Error(`Health check timed out after ${timeoutMs}ms`)), timeoutMs);\n\n try {\n const response = await this.doFetch(`${baseUrl}${HEALTH_PATH}`, {\n method: \"GET\",\n headers: { accept: \"application/json\" },\n signal: controller.signal,\n });\n if (response.status >= 500) {\n this.recordFailure();\n return {\n available: false,\n responseTimeMs: Date.now() - started,\n authenticated: null,\n error: `orvello answered ${response.status} on ${HEALTH_PATH}`,\n };\n }\n this.recordSuccess();\n } catch (error) {\n this.recordFailure();\n return {\n available: false,\n responseTimeMs: Date.now() - started,\n authenticated: null,\n error: error instanceof Error ? error.message : String(error),\n };\n } finally {\n clearTimeout(timer);\n options.signal?.removeEventListener(\"abort\", onAbort);\n }\n\n if (!this.auth) {\n return { available: true, responseTimeMs: Date.now() - started, authenticated: null };\n }\n\n try {\n // Schon das Holen des Tokens ist der Beweis: node-bill prueft dabei Kennung\n // und Geheimnis. Ein anschliessender Leseaufruf wuerde zusaetzlich Scopes\n // verlangen, die nicht jeder Client hat — und ein fehlender Scope ist kein\n // Auth-Fehler.\n const header = await this.getAuthHeader();\n return {\n available: true,\n responseTimeMs: Date.now() - started,\n authenticated: Boolean(header),\n };\n } catch (error) {\n return {\n available: true,\n responseTimeMs: Date.now() - started,\n authenticated: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n }\n\n /** Was der Vertrag hergibt — ohne Netz, ohne Credential. */\n public capabilities(): OrvelloCapabilities {\n return orvelloCapabilities();\n }\n\n /** Spricht die laufende Gegenstelle denselben Vertrag wie dieses SDK? */\n public async diagnose(options: { timeoutMs?: number; signal?: AbortSignal } = {}): Promise<OrvelloDiagnosis> {\n return diagnoseOrvello({\n baseUrl: this.baseUrl,\n fetch: this.doFetch,\n ...options,\n });\n }\n\n /**\n * Wuerde dieser Aufruf heute klappen? Prueft den ganzen Weg — Erreichbarkeit,\n * Vertrag, Credential — und schreibt dabei nichts.\n *\n * Gedacht fuer Verbindungs-Verwalter: eine Kante laesst sich damit turnusmaessig\n * nachpruefen, ohne sie anzufassen, und vor einem freigegebenen Schreibschritt\n * laesst sich zeigen, was er tun wuerde.\n */\n public async preflight(operationId: string, options: PreflightOptions = {}): Promise<PreflightReport> {\n const host: PreflightHost = {\n resolveBaseUrl: () => this.resolveBaseUrl(),\n fetchImpl: () => this.doFetch,\n hasCredentialFor: async (channel) => {\n if (channel === \"none\") return true;\n if (channel === \"api_key\") return Boolean(await this.resolveManagementApiKey());\n return Boolean(this.auth);\n },\n probeCredential: (channel, signal) => this.probeCredential(channel, signal),\n };\n const report = await preflightOrvello(host, operationId, options);\n return {\n ...report,\n serverSideDryRun: this.capabilities().capabilities.serverSideDryRun.supported,\n };\n }\n\n /**\n * Ein ausschliesslich lesender Aufruf auf einer Credential-Bahn.\n *\n * Je Bahn die guenstigste Frage, die ohne Nebenwirkung beantwortet, ob das\n * Credential angenommen wird:\n * - `api_key` → die Auflistung der Zugaenge mit `pageSize=1`\n * - `bearer` → das Holen des Tokens (der Dienst prueft dabei Kennung und Geheimnis)\n */\n private async probeCredential(\n channel: OrvelloAuthChannel,\n signal?: AbortSignal\n ): Promise<{ ok: boolean; detail: string }> {\n if (channel === \"none\") return { ok: true, detail: \"Oeffentliche Route, kein Credential noetig.\" };\n\n if (channel === \"api_key\") {\n try {\n await this.call(\"oauth2_external_clients_list\", {\n query: { pageSize: 1 },\n maxRetries: 0,\n signal,\n });\n return { ok: true, detail: \"Der Verwaltungs-Schluessel wird angenommen (Leseprobe auf die Zugangsliste).\" };\n } catch (error) {\n if (error instanceof OrvelloApiError) {\n return {\n ok: false,\n detail:\n error.status === 403 || error.status === 401\n ? `Der Verwaltungs-Schluessel wird abgelehnt (${error.status}). Der Wert ist gesetzt, aber nicht der, den der Dienst erwartet.`\n : `Leseprobe fehlgeschlagen (${error.status}): ${error.message}`,\n };\n }\n return { ok: false, detail: `Leseprobe fehlgeschlagen: ${(error as Error).message}` };\n }\n }\n\n try {\n const header = await this.getAuthHeader();\n return header\n ? { ok: true, detail: \"Das Bearer-Credential wird angenommen (Token wurde ausgestellt).\" }\n : { ok: false, detail: \"Es konnte kein Bearer-Credential ermittelt werden.\" };\n } catch (error) {\n return { ok: false, detail: `Token konnte nicht geholt werden: ${(error as Error).message}` };\n }\n }\n\n // ── Invoices ─────────────────────────────────────────────────────────────\n public invoices = {\n /** Durable per-invoice replay. Commit the cursor with processing; re-read evidence before commerce actions. */\n getPaymentEvents: (id: number, query?: InvoicesPaymentEventsExternalQuery, options?: RequestOptions) =>\n this.request<InvoicesPaymentEventsExternalResponseData>(`/invoices/external/${id}/payment-events`, {\n method: \"GET\",\n query: query as Record<string, unknown>,\n ...options,\n }),\n\n /** Frozen recipient and reference; historical invoices without a snapshot return 409. */\n getPaymentInstructions: (id: number, options?: RequestOptions) =>\n this.request<InvoicesPaymentInstructionsExternalResponseData>(`/invoices/external/${id}/payment-instructions`, {\n method: \"GET\",\n ...options,\n }),\n\n /** Bank evidence, distinct from accounting status; this never initiates a bank call. */\n getPaymentEvidence: (id: number, options?: RequestOptions) =>\n this.request<InvoicesPaymentEvidenceExternalResponseData>(`/invoices/external/${id}/payment-evidence`, {\n method: \"GET\",\n ...options,\n }),\n\n search: (query?: InvoicesSearchExternalQuery, options?: RequestOptions) =>\n this.request<InvoicesSearchExternalResponseData>(\"/invoices/external\", {\n method: \"GET\",\n query: query as Record<string, unknown>,\n ...options,\n }),\n\n getById: (id: number, options?: RequestOptions) =>\n this.request<InvoicesGetByIdExternalResponseData>(`/invoices/external/${id}`, {\n method: \"GET\",\n ...options,\n }),\n\n getPending: (options?: RequestOptions) =>\n this.request<InvoicesPendingExternalResponseData>(\"/invoices/external/pending\", {\n method: \"GET\",\n ...options,\n }),\n\n getOverdue: (options?: RequestOptions) =>\n this.request<InvoicesOverdueExternalResponseData>(\"/invoices/external/overdue\", {\n method: \"GET\",\n ...options,\n }),\n\n getStatusPolicy: (id: number, options?: RequestOptions) =>\n this.request<InvoicesStatusPolicyExternalResponseData>(`/invoices/external/${id}/status-policy`, {\n method: \"GET\",\n ...options,\n }),\n\n preview: (body: InvoicesPreviewExternalBody, options?: RequestOptions) =>\n this.request<InvoicesPreviewExternalResponseData>(\"/invoices/external/preview\", {\n ...options, method: \"POST\", body: JSON.stringify(body),\n }),\n\n create: async (body: InvoicesCreateExternalBody, options?: RequestOptions) => {\n if (body.idempotencyKey !== undefined && options?.idempotencyKey !== undefined\n && body.idempotencyKey !== options.idempotencyKey) {\n throw new Error(\"Invoice body and request options contain different idempotency keys\");\n }\n const idempotencyKey = body.idempotencyKey ?? options?.idempotencyKey;\n return this.request<InvoicesCreateExternalResponseData>(\"/invoices/external\", {\n method: \"POST\",\n body: JSON.stringify({ ...body, ...(idempotencyKey !== undefined ? { idempotencyKey } : {}) }),\n ...options,\n });\n },\n\n updateStatus: (id: number, body: InvoicesUpdateStatusExternalBody, options?: RequestOptions) =>\n this.request<InvoicesUpdateStatusExternalResponseData>(`/invoices/external/${id}/status`, {\n method: \"PUT\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n previewCreditNote: (id: number, body: InvoicesCreditNotePreviewExternalBody, options?: RequestOptions) =>\n this.request<InvoicesCreditNotePreviewExternalResponseData>(`/invoices/external/${id}/credit-note/preview`, {\n method: \"POST\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n issueCreditNote: (id: number, body: InvoicesCreditNoteIssueExternalBody, options?: RequestOptions) =>\n this.request<InvoicesCreditNoteIssueExternalResponseData>(`/invoices/external/${id}/credit-note/issue`, {\n method: \"POST\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n delete: (id: number, options?: RequestOptions) =>\n this.request<InvoicesDeleteExternalResponseData>(`/invoices/external/${id}`, {\n method: \"DELETE\",\n ...options,\n }),\n\n viewPdf: (id: number, options?: RequestOptions) =>\n this.request<Blob>(`/invoices/external/${id}/pdf`, {\n method: \"GET\",\n rawResponse: true,\n ...options,\n }),\n\n downloadPdf: (id: number, options?: RequestOptions) =>\n this.request<Blob>(`/invoices/external/${id}/download`, {\n method: \"GET\",\n rawResponse: true,\n ...options,\n }),\n\n sendEmail: (id: number, body: InvoicesSendEmailExternalBody, options?: RequestOptions) =>\n this.request<InvoicesSendEmailExternalResponseData>(`/invoices/external/${id}/send-email`, {\n method: \"POST\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n downloadPdfFromUrl: async (pdfUrl: string, options?: RequestOptions): Promise<Blob> => {\n const baseUrl = await this.resolveBaseUrl();\n const targetUrl = pdfUrl.startsWith(\"http://\") || pdfUrl.startsWith(\"https://\")\n ? pdfUrl\n : `${baseUrl}${pdfUrl.startsWith(\"/\") ? \"\" : \"/\"}${pdfUrl}`;\n\n const doFetch = this.doFetch;\n const headers = new Headers(options?.headers);\n // Das Credential geht nur an den Dienst selbst. Eine absolute Adresse auf einem\n // anderen Host (etwa ein vorsignierter Speicher-Link) bekommt es nicht: dort\n // waere es ein Leck, und ein Speicher mit eigener Signatur lehnt eine zweite\n // Anmeldung ohnehin ab.\n if (new URL(targetUrl).origin === new URL(baseUrl).origin) {\n const authHeader = await this.getAuthHeader();\n if (authHeader && !headers.has(\"Authorization\")) {\n headers.set(\"Authorization\", authHeader);\n }\n }\n\n const resp = await doFetch(targetUrl, {\n method: \"GET\",\n headers,\n signal: options?.signal,\n });\n\n if (!resp.ok) {\n throw new OrvelloApiError(resp.status, resp.statusText, targetUrl, null, `Failed to download PDF from ${targetUrl}`);\n }\n return await resp.blob();\n },\n };\n\n // ── Customer Companies ───────────────────────────────────────────────────\n public customerCompanies = {\n search: (query?: CustomerCompaniesSearchExternalQuery, options?: RequestOptions) =>\n this.request<CustomerCompaniesSearchExternalResponseData>(\"/customer-companies/external\", {\n method: \"GET\",\n query: query as Record<string, unknown>,\n ...options,\n }),\n\n getById: (id: number, options?: RequestOptions) =>\n this.request<CustomerCompaniesGetByIdExternalResponseData>(`/customer-companies/external/${id}`, {\n method: \"GET\",\n ...options,\n }),\n\n create: (body: CustomerCompaniesCreateExternalBody, options?: RequestOptions) =>\n this.request<CustomerCompaniesCreateExternalResponseData>(\"/customer-companies/external\", {\n method: \"POST\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n update: (id: number, body: CustomerCompaniesUpdateExternalBody, options?: RequestOptions) =>\n this.request<CustomerCompaniesUpdateExternalResponseData>(`/customer-companies/external/${id}`, {\n method: \"PUT\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n delete: (id: number, options?: RequestOptions) =>\n this.request<CustomerCompaniesDeleteExternalResponseData>(`/customer-companies/external/${id}`, {\n method: \"DELETE\",\n ...options,\n }),\n };\n\n // ── Managing Companies ───────────────────────────────────────────────────\n public managingCompanies = {\n getCurrent: (options?: RequestOptions) =>\n this.request<ManagingCompaniesCurrentExternalResponseData>(\"/managing-companies/external/current\", {\n method: \"GET\",\n ...options,\n }),\n };\n\n // ── Dunning ──────────────────────────────────────────────────────────────\n public dunning = {\n suggestions: (query?: DunningSuggestionsExternalQuery, options?: RequestOptions) =>\n this.request<DunningSuggestionsExternalResponseData>(\"/invoices/external/dunning/suggestions\", {\n method: \"GET\",\n query: query as Record<string, unknown>,\n ...options,\n }),\n\n preview: (invoiceId: number, body?: DunningPreviewExternalBody, options?: RequestOptions) =>\n this.request<DunningPreviewExternalResponseData>(`/invoices/external/dunning/${invoiceId}/preview`, {\n method: \"POST\",\n body: body ? JSON.stringify(body) : undefined,\n ...options,\n }),\n\n issue: (invoiceId: number, body: DunningIssueExternalBody, options?: RequestOptions) =>\n this.request<DunningIssueExternalResponseData>(`/invoices/external/dunning/${invoiceId}/issue`, {\n method: \"POST\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n getNoticePdf: (noticeId: number, options?: RequestOptions) =>\n this.request<Blob>(`/invoices/external/dunning/notices/${noticeId}/pdf`, {\n method: \"GET\",\n rawResponse: true,\n ...options,\n }),\n\n downloadNoticePdf: (noticeId: number, options?: RequestOptions) =>\n this.request<Blob>(`/invoices/external/dunning/notices/${noticeId}/download`, {\n method: \"GET\",\n rawResponse: true,\n ...options,\n }),\n\n getSettings: (options?: RequestOptions) =>\n this.request<DunningGetSettingsExternalResponseData>(\"/invoices/external/dunning/settings\", {\n method: \"GET\",\n ...options,\n }),\n\n updateSettings: (body: DunningUpdateSettingsExternalBody, options?: RequestOptions) =>\n this.request<DunningUpdateSettingsExternalResponseData>(\"/invoices/external/dunning/settings\", {\n method: \"PUT\",\n body: JSON.stringify(body),\n ...options,\n }),\n };\n\n // ── Bookkeeping ──────────────────────────────────────────────────────────\n public bookkeeping = {\n revenues: {\n create: (body: BookkeepingRevenuesCreateExternalBody, options?: RequestOptions) => {\n const idempotencyKey = options?.idempotencyKey || (body as { externalRef?: string }).externalRef;\n return this.request<BookkeepingRevenuesCreateExternalResponseData>(\"/bookkeeping/revenues/external\", {\n method: \"POST\",\n body: JSON.stringify(body),\n idempotencyKey,\n ...options,\n });\n },\n\n createInvoiceAdjustment: (\n body: BookkeepingRevenuesInvoiceAdjustmentExternalBody,\n options?: RequestOptions\n ) => {\n const idempotencyKey = options?.idempotencyKey || body.externalRef;\n return this.request<BookkeepingRevenuesInvoiceAdjustmentExternalResponseData>(\n \"/bookkeeping/revenues/external/invoice-adjustment\",\n {\n method: \"POST\",\n body: JSON.stringify(body),\n idempotencyKey,\n ...options,\n }\n );\n },\n },\n\n expenses: {\n create: (\n body: BookkeepingExpensesCreateExternalBody,\n options?: RequestOptions & { receipt?: ExpenseReceiptUpload }\n ) => {\n const { receipt, ...reqOpts } = options || {};\n const payload = receipt ? { ...body, ...receipt } : body;\n const idempotencyKey = reqOpts.idempotencyKey || (body as { externalRef?: string }).externalRef;\n\n return this.request<BookkeepingExpensesCreateExternalResponseData>(\"/bookkeeping/expenses/external\", {\n method: \"POST\",\n body: JSON.stringify(payload),\n idempotencyKey,\n ...reqOpts,\n });\n },\n },\n\n payments: {\n listAccounts: (options?: BookkeepingPaymentsListAccountsExternalQuery, reqOptions?: RequestOptions) =>\n this.request<BookkeepingPaymentsListAccountsExternalResponseData>(\"/bookkeeping/payments/external/accounts\", {\n method: \"GET\",\n query: options as Record<string, unknown>,\n ...reqOptions,\n }),\n\n createManual: (body: BookkeepingPaymentsCreateManualExternalBody, options?: RequestOptions) => {\n const idempotencyKey = options?.idempotencyKey || body.externalRef;\n return this.request<BookkeepingPaymentsCreateManualExternalResponseData>(\n \"/bookkeeping/payments/external/manual\",\n {\n method: \"POST\",\n body: JSON.stringify(body),\n idempotencyKey,\n ...options,\n }\n );\n },\n\n settleInvoice: (body: BookkeepingPaymentsSettleInvoiceExternalBody, options?: RequestOptions) => {\n const idempotencyKey =\n options?.idempotencyKey ||\n body.externalRef ||\n `settle-${body.invoiceId}-${Date.now()}`;\n\n return this.request<BookkeepingPaymentsSettleInvoiceExternalResponseData>(\n \"/bookkeeping/payments/external/settle-invoice\",\n {\n method: \"POST\",\n body: JSON.stringify(body),\n idempotencyKey,\n ...options,\n }\n );\n },\n },\n\n getDefaultBankAccount: async (options?: { forceRefresh?: boolean }): Promise<BankAccountDetails> => {\n const now = Date.now();\n if (\n !options?.forceRefresh &&\n this._bankAccountCache &&\n now - this._bankAccountCacheTime < 5 * 60 * 1000\n ) {\n return this._bankAccountCache;\n }\n\n const accounts = await this.bookkeeping.payments.listAccounts({ includeArchived: false });\n const bankAccounts = (accounts || []).filter((a) => a.type === \"bank\" && !a.isArchived);\n\n // Primary: isDefault bank account\n let target = bankAccounts.find((a) => a.isDefault);\n\n // Fallback: if exactly one active bank account exists, use it\n if (!target && bankAccounts.length === 1) {\n target = bankAccounts[0];\n }\n\n if (!target) {\n throw new Error(\n \"Kein Default-Bankkonto im orvello-Dienst gefunden. Bitte dort ein Bankkonto als Standard markieren.\"\n );\n }\n\n const result = mapPaymentAccountToBankDetails(target);\n this._bankAccountCache = result;\n this._bankAccountCacheTime = now;\n return result;\n },\n };\n\n // ── Users ────────────────────────────────────────────────────────────────\n public users = {\n getByExternalUserId: (externalUserId: string, options?: RequestOptions) =>\n this.request<UsersGetByExternalUserIdResponseData>(`/users/getByExternalUserId/${encodeURIComponent(externalUserId)}`, {\n method: \"GET\",\n ...options,\n }),\n\n update: (frontendUserId: number, body: UsersUpdateExternalBody, options?: RequestOptions) =>\n this.request<UsersUpdateExternalResponseData>(`/users/update/external/${frontendUserId}`, {\n method: \"PUT\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n delete: (frontendUserId: number, options?: RequestOptions) =>\n this.request<UsersDeleteExternalResponseData>(`/users/delete/external/${frontendUserId}`, {\n method: \"DELETE\",\n ...options,\n }),\n };\n\n // ── OAuth2 External Clients (Connection Manager) ─────────────────────────\n public oauthClients = {\n list: (query?: Oauth2ExternalClientsListQuery, options?: RequestOptions) =>\n this.request<Oauth2ExternalClientsListResponseData>(\"/oauth/clients/external/list\", {\n method: \"GET\",\n query: query as Record<string, unknown>,\n ...options,\n }),\n\n get: (idOrClientId: string, options?: RequestOptions) =>\n this.request<Oauth2ExternalClientsGetResponseData>(`/oauth/clients/external/${encodeURIComponent(idOrClientId)}`, {\n method: \"GET\",\n ...options,\n }),\n\n create: (body: Oauth2ExternalClientsCreateBody, options?: RequestOptions) =>\n this.request<Oauth2ExternalClientsCreateResponseData>(\"/oauth/clients/external\", {\n method: \"POST\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n update: (idOrClientId: string, body: Oauth2ExternalClientsUpdateBody, options?: RequestOptions) =>\n this.request<Oauth2ExternalClientsUpdateResponseData>(`/oauth/clients/external/${encodeURIComponent(idOrClientId)}`, {\n method: \"PUT\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n delete: (idOrClientId: string, options?: RequestOptions) =>\n this.request<Oauth2ExternalClientsDeleteResponseData>(`/oauth/clients/external/${encodeURIComponent(idOrClientId)}`, {\n method: \"DELETE\",\n ...options,\n }),\n\n rotate: (idOrClientId: string, body?: Oauth2ExternalClientsRotateBody, options?: RequestOptions) =>\n this.request<Oauth2ExternalClientsRotateResponseData>(`/oauth/clients/external/${encodeURIComponent(idOrClientId)}/rotate`, {\n method: \"POST\",\n body: body ? JSON.stringify(body) : undefined,\n ...options,\n }),\n\n retire: (idOrClientId: string, options?: RequestOptions) =>\n this.request<Oauth2ExternalClientsRetireResponseData>(`/oauth/clients/external/${encodeURIComponent(idOrClientId)}/retire`, {\n method: \"POST\",\n ...options,\n }),\n\n rollback: (idOrClientId: string, options?: RequestOptions) =>\n this.request<Oauth2ExternalClientsRollbackResponseData>(`/oauth/clients/external/${encodeURIComponent(idOrClientId)}/rollback`, {\n method: \"POST\",\n ...options,\n }),\n\n revoke: (idOrClientId: string, options?: RequestOptions) =>\n this.request<Oauth2ExternalClientsRevokeResponseData>(`/oauth/clients/external/${encodeURIComponent(idOrClientId)}/revoke`, {\n method: \"POST\",\n ...options,\n }),\n };\n}\n\nexport function createOrvelloClient(config?: OrvelloClientConfig): OrvelloClient {\n return new OrvelloClient(config);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/contract-hash.ts","../src/diagnose.ts","../src/helpers.ts","../src/route-index.generated.ts","../src/operations.ts","../src/capabilities.ts","../src/preflight.ts","../src/client.ts"],"names":["SDK_VERSION"],"mappings":"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","file":"index.js","sourcesContent":["// GENERATED by scripts/sync-contract.mjs — do not edit by hand.\n//\n// The fingerprint of the node-bill contract vendored into this package, using\n// the same digest as `sync-contract.mjs` and as node-bill's own\n// `GET /health/contract`. Comparing the two answers the only question that\n// matters after pinning an SDK version: does the deployment I am calling still\n// speak the contract I compiled against?\n//\n// `test/diagnose.test.ts` recomputes this from `src/generated` on every\n// `npm run check`, so a hand-edited contract cannot leave the constant stale.\nexport const CONTRACT_SHA256 = \"a43f5ee82135a27003853cb05b2cea0f57c63b4fe23795f7b838ef0cb2deb5d9\";\n","import { CONTRACT_SHA256 } from \"./contract-hash.js\";\n\n// Replaced at build time by tsup/vitest `define`.\ndeclare const __ORVELLO_SDK_VERSION__: string;\nconst SDK_VERSION: string = typeof __ORVELLO_SDK_VERSION__ === \"string\" ? __ORVELLO_SDK_VERSION__ : \"0.0.0-unbuilt\";\n\nexport type OrvelloContractStatus = \"match\" | \"drift\" | \"unknown\";\n\nexport type OrvelloDiagnosis = {\n ok: boolean;\n baseUrl: string | null;\n sdkVersion: string;\n reachable: boolean;\n contract: {\n status: OrvelloContractStatus;\n sdk: string;\n live: string | null;\n files: number | null;\n };\n problems: string[];\n checkedAt: string;\n};\n\nexport type BaseUrlProvider = string | (() => string | Promise<string>);\n\nexport type OrvelloDiagnoseOptions = {\n client?: { baseUrl: BaseUrlProvider };\n baseUrl?: BaseUrlProvider;\n fetch?: typeof globalThis.fetch;\n timeoutMs?: number;\n signal?: AbortSignal;\n};\n\ntype ContractResponse = {\n service?: unknown;\n contractSha256?: unknown;\n files?: unknown;\n};\n\nfunction normalizeBaseUrl(raw: string): string {\n const trimmed = raw.trim();\n if (!trimmed) throw new Error(\"Base URL cannot be empty\");\n return trimmed.replace(/\\/+$/, \"\");\n}\n\nasync function resolveBaseUrl(options: OrvelloDiagnoseOptions): Promise<string> {\n const provider = options.client?.baseUrl ?? options.baseUrl;\n if (!provider) {\n throw new Error(\n \"Diagnosing requires a target platform: pass { baseUrl } (the services checks its own \" +\n \"baseUrl) — the SDK ships no baked-in default endpoint.\"\n );\n }\n const value = typeof provider === \"function\" ? await provider() : provider;\n return normalizeBaseUrl(value);\n}\n\n/**\n * Ask a running orvello accounting/invoicing service which contract it speaks\n * and compare it to the one this SDK was built against.\n *\n * Read-only, unauthenticated, and cheap — designed for health-checks and AMP\n * connection-reconciliation (TSK-000084 / Kanten-Modell: connection_kind = 'invoicing').\n */\nexport async function diagnoseOrvello(options: OrvelloDiagnoseOptions = {}): Promise<OrvelloDiagnosis> {\n const checkedAt = new Date().toISOString();\n let baseUrl: string | null = null;\n try {\n baseUrl = await resolveBaseUrl(options);\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n return {\n ok: false,\n baseUrl: null,\n sdkVersion: SDK_VERSION,\n reachable: false,\n contract: { status: \"unknown\", sdk: CONTRACT_SHA256, live: null, files: null },\n problems: [`Invalid base URL: ${detail}`],\n checkedAt,\n };\n }\n\n const doFetch = options.fetch ?? globalThis.fetch;\n const timeoutMs = options.timeoutMs ?? 5_000;\n\n const base: OrvelloDiagnosis = {\n ok: false,\n baseUrl,\n sdkVersion: SDK_VERSION,\n reachable: false,\n contract: { status: \"unknown\", sdk: CONTRACT_SHA256, live: null, files: null },\n problems: [],\n checkedAt,\n };\n\n if (typeof doFetch !== \"function\") {\n return { ...base, problems: [\"No fetch implementation available; pass `fetch` explicitly.\"] };\n }\n\n const controller = new AbortController();\n const onAbort = () => controller.abort(options.signal?.reason);\n options.signal?.addEventListener(\"abort\", onAbort, { once: true });\n if (options.signal?.aborted) controller.abort(options.signal.reason);\n const timer = setTimeout(() => controller.abort(new Error(`Contract probe timed out after ${timeoutMs}ms`)), timeoutMs);\n\n let response: Response;\n try {\n response = await doFetch(`${baseUrl}/health/contract`, {\n method: \"GET\",\n headers: { accept: \"application/json\" },\n signal: controller.signal,\n });\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n return { ...base, problems: [`the orvello service at ${baseUrl} could not be reached: ${detail}`] };\n } finally {\n clearTimeout(timer);\n options.signal?.removeEventListener(\"abort\", onAbort);\n }\n\n if (response.status === 404) {\n return {\n ...base,\n reachable: true,\n problems: [\n `the orvello service at ${baseUrl} does not serve GET /health/contract, so the contract cannot be verified.`,\n ],\n };\n }\n\n if (!response.ok) {\n return {\n ...base,\n reachable: true,\n problems: [`the orvello service at ${baseUrl} answered ${response.status} for GET /health/contract; contract not verified.`],\n };\n }\n\n let body: ContractResponse;\n try {\n body = (await response.json()) as ContractResponse;\n } catch {\n return { ...base, reachable: true, problems: [`the orvello service at ${baseUrl} returned a non-JSON contract fingerprint.`] };\n }\n\n const live = typeof body.contractSha256 === \"string\" && body.contractSha256 ? body.contractSha256 : null;\n const files = typeof body.files === \"number\" ? body.files : null;\n\n if (!live) {\n return {\n ...base,\n reachable: true,\n contract: { ...base.contract, files },\n problems: [`the orvello service at ${baseUrl} could not compute its own contract fingerprint; contract not verified.`],\n };\n }\n\n if (live !== CONTRACT_SHA256) {\n return {\n ...base,\n reachable: true,\n contract: { status: \"drift\", sdk: CONTRACT_SHA256, live, files },\n problems: [\n `Contract drift: the orvello service at ${baseUrl} speaks ${live.slice(0, 12)}, `\n + `@orvello/sdk ${SDK_VERSION} was built against ${CONTRACT_SHA256.slice(0, 12)}. `\n + \"Pin a newer SDK version, or deploy the orvello service the SDK was built from.\",\n ],\n };\n }\n\n return {\n ...base,\n ok: true,\n reachable: true,\n contract: { status: \"match\", sdk: CONTRACT_SHA256, live, files },\n };\n}\n","import type { ManagingCompaniesCurrentExternalResponseData } from \"./generated/api/features/routes.managing_companies_external.js\";\nimport type { PaymentAccount } from \"./generated/frontend-types.js\";\n\n/**\n * Receipt upload payload for expense creation (`createExpense`).\n * Transmitted as base64 in the JSON payload, supported natively by the orvello service.\n */\nexport interface ExpenseReceiptUpload {\n base64String: string;\n fileName: string;\n mimeType: string;\n size: number;\n}\n\n/**\n * Simplified bank account details for invoices, UI, and external payment references.\n */\nexport interface BankAccountDetails {\n id?: number;\n iban: string;\n bic: string;\n bank: string;\n accountHolder: string;\n currency?: string;\n isDefault?: boolean;\n}\n\n/**\n * Convert a binary buffer / Uint8Array into a structured `ExpenseReceiptUpload`\n * object for the `createExpense` endpoint. Works seamlessly in Node.js, Next.js, and browser runtimes.\n */\nexport function buildBase64Receipt(\n data: Uint8Array | ArrayBuffer | string,\n fileName: string,\n mimeType: string\n): ExpenseReceiptUpload {\n let base64String: string;\n let size: number;\n\n if (typeof data === \"string\") {\n // If already base64 or data URL\n base64String = data.startsWith(\"data:\") ? data.split(\",\")[1] || data : data;\n size = Math.round((base64String.length * 3) / 4);\n } else {\n const bytes = data instanceof Uint8Array ? data : new Uint8Array(data);\n size = bytes.byteLength;\n if (typeof Buffer !== \"undefined\") {\n base64String = Buffer.from(bytes).toString(\"base64\");\n } else {\n let binary = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i] ?? 0);\n }\n base64String = globalThis.btoa(binary);\n }\n }\n\n return {\n base64String,\n fileName,\n mimeType,\n size,\n };\n}\n\n/**\n * Check if the current managing company is subject to the German Kleinunternehmer regulation (§ 19 UStG).\n */\nexport function isKleinunternehmer(context: ManagingCompaniesCurrentExternalResponseData): boolean {\n return (\n context.taxation?.defaultVatTreatmentHint === \"KLEINUNTERNEHMER_0\" ||\n context.taxation?.regime?.toLowerCase() === \"kleinunternehmer\" ||\n context.taxation?.shouldShowVatOnInvoices === false\n );\n}\n\n/**\n * Calculate net, VAT, and gross amounts with standard 2-decimal financial rounding.\n */\nexport function calculateVat(\n netAmount: number | string,\n vatRatePercent: number\n): { net: string; vat: string; gross: string } {\n const netNum = typeof netAmount === \"string\" ? parseFloat(netAmount) : netAmount;\n if (isNaN(netNum)) {\n throw new Error(`Invalid net amount: \"${netAmount}\"`);\n }\n\n const vatNum = Math.round(netNum * vatRatePercent) / 100;\n const grossNum = Math.round((netNum + vatNum) * 100) / 100;\n\n return {\n net: netNum.toFixed(2),\n vat: vatNum.toFixed(2),\n gross: grossNum.toFixed(2),\n };\n}\n\n/**\n * Format a monetary amount (in EUR or specified currency) to localized German currency format.\n */\nexport function formatAmount(\n amount: number | string,\n currency = \"EUR\",\n locale = \"de-DE\"\n): string {\n const num = typeof amount === \"string\" ? parseFloat(amount) : amount;\n if (isNaN(num)) return String(amount);\n return new Intl.NumberFormat(locale, {\n style: \"currency\",\n currency,\n }).format(num);\n}\n\n/**\n * Extract clean `BankAccountDetails` from an orvello `PaymentAccount`.\n */\nexport function mapPaymentAccountToBankDetails(account: PaymentAccount): BankAccountDetails {\n return {\n id: account.id,\n iban: account.iban || \"\",\n bic: account.bic || \"\",\n bank: account.bankName || \"\",\n accountHolder: account.accountOwner || \"\",\n currency: account.currency,\n isDefault: account.isDefault,\n };\n}\n","// GENERATED by scripts/build-route-index.mjs — do not edit by hand.\n//\n// Die Laufzeit-Tabelle des Vertrags: je Operation nur, was fuer einen Aufruf\n// gebraucht wird. Die vollstaendigen Angaben inklusive Beschreibungen stehen\n// unveraendert im Unterpfad `@orvello/sdk/contract`.\n//\n// Aufbau je Eintrag:\n// [ HTTP-Methode, Pfad-Vorlage, Bahn, Auth-Art laut Vertrag, Validierungs-Bits, Scopes? ]\n//\n// Bahn: \"b\" = Bearer, \"k\" = x-api-key, \"n\" = oeffentlich\n// Validierungs-Bits: 1 = params, 2 = query, 4 = body (verodert)\n//\n// `test/route-index.test.ts` rechnet diese Datei bei jedem Lauf aus `apiRoutes`\n// nach — eine von Hand geaenderte Zeile ueberlebt keinen Testlauf.\n\nexport type RouteChannelCode = \"b\" | \"k\" | \"n\";\n\nexport type RouteIndexEntry = readonly [\n method: string,\n path: string,\n channel: RouteChannelCode,\n authType: string,\n validated: number,\n scopes?: readonly string[],\n];\n\nexport const ROUTE_INDEX: Readonly<Record<string, RouteIndexEntry>> = {\n \"GET__api_amp_mail_brand_logo\": [\"GET\", \"/api/amp-mail/brands/:slug/logo\", \"n\", \"public\", 1],\n \"GET__api_amp_mail_file\": [\"GET\", \"/api/amp-mail/files/:token\", \"n\", \"public\", 1],\n \"GET__security_public\": [\"GET\", \"/security/public\", \"k\", \"x_api_key_https\", 0],\n \"admin_vat_create_system_settings\": [\"POST\", \"/admin/vat/system-settings\", \"b\", \"frontend_permission_http\", 4],\n \"admin_vat_get_company_settings_history\": [\"GET\", \"/admin/vat/company/:companyId/settings-history\", \"b\", \"frontend_permission_http\", 1],\n \"admin_vat_get_system_settings\": [\"GET\", \"/admin/vat/system-settings\", \"b\", \"frontend_permission_http\", 0],\n \"admin_vat_get_system_settings_history\": [\"GET\", \"/admin/vat/system-settings/history\", \"b\", \"frontend_permission_http\", 2],\n \"admin_vat_update_company_settings\": [\"PUT\", \"/admin/vat/company/:companyId/settings\", \"b\", \"frontend_permission_http\", 5],\n \"admin_vat_update_system_settings\": [\"PUT\", \"/admin/vat/system-settings/:id\", \"b\", \"frontend_permission_http\", 5],\n \"app_info_capabilities\": [\"GET\", \"/app-info/capabilities\", \"n\", \"public\", 2],\n \"app_info_get\": [\"GET\", \"/app-info\", \"b\", \"frontend_bearer_http\", 2],\n \"app_info_health\": [\"GET\", \"/app-info/health\", \"n\", \"public\", 0],\n \"app_info_manifest\": [\"GET\", \"/app-info/manifest\", \"n\", \"public\", 0],\n \"app_info_own_permissions_get\": [\"GET\", \"/app-info/ownPermissions\", \"b\", \"frontend_bearer_http\", 2],\n \"auth_google_config\": [\"GET\", \"/auth/google/config\", \"n\", \"public\", 2],\n \"auth_google_link\": [\"POST\", \"/auth/google/link\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_google_login\": [\"POST\", \"/auth/google\", \"n\", \"public\", 4],\n \"auth_google_unlink\": [\"DELETE\", \"/auth/google/link\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_login\": [\"POST\", \"/auth/login\", \"n\", \"public\", 4],\n \"auth_logout\": [\"POST\", \"/auth/logout\", \"n\", \"public\", 4],\n \"auth_me\": [\"GET\", \"/auth/me\", \"b\", \"frontend_bearer_http\", 2],\n \"auth_me_email_patch\": [\"PATCH\", \"/auth/me/email\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_me_image_delete\": [\"DELETE\", \"/auth/me/image\", \"b\", \"frontend_bearer_http\", 2],\n \"auth_me_image_replace\": [\"PUT\", \"/auth/me/image\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_me_profile_update\": [\"PATCH\", \"/auth/me/profile\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_mfa_complete\": [\"POST\", \"/auth/mfa/complete\", \"n\", \"public\", 4],\n \"auth_mfa_disable\": [\"POST\", \"/auth/mfa/disable\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_mfa_enable\": [\"POST\", \"/auth/mfa/enable\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_mfa_setup\": [\"POST\", \"/auth/mfa/setup\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_mfa_status\": [\"GET\", \"/auth/mfa\", \"b\", \"frontend_bearer_http\", 2],\n \"auth_password_change\": [\"POST\", \"/auth/password/change\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_password_reset_confirm\": [\"POST\", \"/auth/password/reset/confirm\", \"n\", \"public\", 4],\n \"auth_password_reset_landing\": [\"GET\", \"/auth/password/reset\", \"n\", \"public\", 2],\n \"auth_password_reset_request\": [\"POST\", \"/auth/password/reset/request\", \"n\", \"public\", 4],\n \"auth_push_token_upsert\": [\"POST\", \"/auth/push-token\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_refresh\": [\"POST\", \"/auth/refresh\", \"n\", \"public\", 4],\n \"auth_register\": [\"POST\", \"/auth/register\", \"n\", \"public\", 4],\n \"auth_sessions_list\": [\"GET\", \"/auth/sessions\", \"b\", \"frontend_bearer_http\", 2],\n \"auth_sessions_revoke\": [\"DELETE\", \"/auth/sessions/:sessionId\", \"b\", \"frontend_bearer_http\", 1],\n \"auth_sessions_revoke_other\": [\"POST\", \"/auth/sessions/revoke-other\", \"b\", \"frontend_bearer_http\", 4],\n \"auth_verify_email_confirm\": [\"POST\", \"/auth/verify-email/confirm\", \"n\", \"public\", 4],\n \"auth_verify_email_landing\": [\"GET\", \"/auth/verify-email\", \"n\", \"public\", 2],\n \"auth_verify_email_request\": [\"POST\", \"/auth/verify-email/request\", \"b\", \"frontend_bearer_http\", 4],\n \"bookkeeping_assets_add_cost_component\": [\"POST\", \"/bookkeeping/assets/:assetId/cost-components\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_assets_apply_sonderafa\": [\"POST\", \"/bookkeeping/assets/:assetId/sonderafa\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_assets_create\": [\"POST\", \"/bookkeeping/assets\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_assets_delete\": [\"DELETE\", \"/bookkeeping/assets/:assetId\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_assets_delete_cost_component\": [\"DELETE\", \"/bookkeeping/assets/:assetId/cost-components/:componentId\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_assets_dispose\": [\"POST\", \"/bookkeeping/assets/:assetId/dispose\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_assets_finalize_depreciation\": [\"POST\", \"/bookkeeping/assets/depreciation/finalize\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_assets_generate_depreciation\": [\"POST\", \"/bookkeeping/assets/depreciation/generate\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_assets_get_by_id\": [\"GET\", \"/bookkeeping/assets/:assetId\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_assets_get_depreciation_records\": [\"GET\", \"/bookkeeping/assets/depreciation/records\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_assets_get_sammelposten_pool\": [\"GET\", \"/bookkeeping/assets/sammelposten-pools/:poolId\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_assets_iab_create\": [\"POST\", \"/bookkeeping/assets/iab\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_assets_iab_delete\": [\"DELETE\", \"/bookkeeping/assets/iab/:iabId\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_assets_iab_dissolve\": [\"POST\", \"/bookkeeping/assets/iab/:iabId/dissolve\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_assets_iab_get\": [\"GET\", \"/bookkeeping/assets/iab/:iabId\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_assets_iab_list\": [\"GET\", \"/bookkeeping/assets/iab\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_assets_iab_reverse\": [\"POST\", \"/bookkeeping/assets/iab/:iabId/reverse\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_assets_list_cost_components\": [\"GET\", \"/bookkeeping/assets/:assetId/cost-components\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_assets_list_sammelposten_pools\": [\"GET\", \"/bookkeeping/assets/sammelposten-pools\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_assets_search\": [\"GET\", \"/bookkeeping/assets\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_assets_switch_to_linear\": [\"POST\", \"/bookkeeping/assets/:assetId/switch-to-linear\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_assets_update\": [\"PUT\", \"/bookkeeping/assets/:assetId\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_audit_logs\": [\"GET\", \"/bookkeeping/audit/logs\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_capital_movements_cash_confirm\": [\"POST\", \"/bookkeeping/capital-movements/:id/cash-confirm\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_capital_movements_confirm\": [\"POST\", \"/bookkeeping/capital-movements/:id/confirm\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_capital_movements_create\": [\"POST\", \"/bookkeeping/capital-movements\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_capital_movements_delete\": [\"DELETE\", \"/bookkeeping/capital-movements/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_capital_movements_get_by_id\": [\"GET\", \"/bookkeeping/capital-movements/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_capital_movements_kapitalkonto\": [\"GET\", \"/bookkeeping/capital-movements/kapitalkonto\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_capital_movements_reverse\": [\"POST\", \"/bookkeeping/capital-movements/:id/reverse\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_capital_movements_revoke_cash_confirm\": [\"POST\", \"/bookkeeping/capital-movements/:id/revoke-cash-confirm\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_capital_movements_search\": [\"GET\", \"/bookkeeping/capital-movements\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_capital_movements_update\": [\"PATCH\", \"/bookkeeping/capital-movements/:id\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_expenses_analyze_receipt\": [\"POST\", \"/bookkeeping/expenses/analyze-receipt\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_expenses_bulk_confirm\": [\"POST\", \"/bookkeeping/expenses/bulk-confirm\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_expenses_confirm\": [\"POST\", \"/bookkeeping/expenses/:id/confirm\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_expenses_confirm_cash\": [\"POST\", \"/bookkeeping/expenses/:id/confirm-cash\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_expenses_create\": [\"POST\", \"/bookkeeping/expenses\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_expenses_create_external\": [\"POST\", \"/bookkeeping/expenses/external\", \"b\", \"unified_bearer\", 4, [\"expenses:write\"]],\n \"bookkeeping_expenses_delete\": [\"DELETE\", \"/bookkeeping/expenses/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_expenses_get_by_id\": [\"GET\", \"/bookkeeping/expenses/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_expenses_mark_as_asset\": [\"POST\", \"/bookkeeping/expenses/:id/mark-as-asset\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_expenses_revoke_cash_confirm\": [\"POST\", \"/bookkeeping/expenses/:id/revoke-cash-confirm\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_expenses_search\": [\"GET\", \"/bookkeeping/expenses\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_expenses_update\": [\"PUT\", \"/bookkeeping/expenses/:id\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_expenses_upload_receipt\": [\"POST\", \"/bookkeeping/expenses/:id/upload-receipt\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_iap_payouts_import\": [\"POST\", \"/bookkeeping/iap-payouts/import\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_iap_payouts_list\": [\"GET\", \"/bookkeeping/iap-payouts\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_income_tax_create_employment\": [\"POST\", \"/bookkeeping/income-tax/employment\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_income_tax_create_sonderausgaben\": [\"POST\", \"/bookkeeping/income-tax/sonderausgaben\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_income_tax_create_steuerminderungen\": [\"POST\", \"/bookkeeping/income-tax/steuerminderungen\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_income_tax_create_vorsorge\": [\"POST\", \"/bookkeeping/income-tax/vorsorge\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_income_tax_create_werbungskosten\": [\"POST\", \"/bookkeeping/income-tax/werbungskosten\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_income_tax_delete_employment\": [\"DELETE\", \"/bookkeeping/income-tax/employment/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_income_tax_delete_sonderausgaben\": [\"DELETE\", \"/bookkeeping/income-tax/sonderausgaben/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_income_tax_delete_steuerminderungen\": [\"DELETE\", \"/bookkeeping/income-tax/steuerminderungen/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_income_tax_delete_vorsorge\": [\"DELETE\", \"/bookkeeping/income-tax/vorsorge/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_income_tax_delete_werbungskosten\": [\"DELETE\", \"/bookkeeping/income-tax/werbungskosten/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_income_tax_get_employment\": [\"GET\", \"/bookkeeping/income-tax/employment/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_income_tax_get_estimate\": [\"GET\", \"/bookkeeping/income-tax/estimate\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_income_tax_get_settings\": [\"GET\", \"/bookkeeping/income-tax/settings\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_income_tax_get_summary\": [\"GET\", \"/bookkeeping/income-tax/summary\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_income_tax_get_vorauszahlungen\": [\"GET\", \"/bookkeeping/income-tax/vorauszahlungen\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_income_tax_list_employment\": [\"GET\", \"/bookkeeping/income-tax/employment\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_income_tax_list_sonderausgaben\": [\"GET\", \"/bookkeeping/income-tax/sonderausgaben\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_income_tax_list_steuerminderungen\": [\"GET\", \"/bookkeeping/income-tax/steuerminderungen\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_income_tax_list_vorsorge\": [\"GET\", \"/bookkeeping/income-tax/vorsorge\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_income_tax_list_werbungskosten\": [\"GET\", \"/bookkeeping/income-tax/werbungskosten\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_income_tax_update_employment\": [\"PUT\", \"/bookkeeping/income-tax/employment/:id\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_income_tax_update_sonderausgaben\": [\"PUT\", \"/bookkeeping/income-tax/sonderausgaben/:id\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_income_tax_update_steuerminderungen\": [\"PUT\", \"/bookkeeping/income-tax/steuerminderungen/:id\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_income_tax_update_vorsorge\": [\"PUT\", \"/bookkeeping/income-tax/vorsorge/:id\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_income_tax_update_werbungskosten\": [\"PUT\", \"/bookkeeping/income-tax/werbungskosten/:id\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_income_tax_upsert_settings\": [\"POST\", \"/bookkeeping/income-tax/settings\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_locks_get_state\": [\"GET\", \"/bookkeeping/locks/state\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_locks_overview\": [\"GET\", \"/bookkeeping/locks/overview\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_locks_recommendation\": [\"GET\", \"/bookkeeping/locks/recommendation\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_locks_set\": [\"POST\", \"/bookkeeping/locks/set\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_payments_create_manual_external\": [\"POST\", \"/bookkeeping/payments/external/manual\", \"b\", \"unified_bearer\", 4, [\"payments:write\"]],\n \"bookkeeping_payments_list_accounts_external\": [\"GET\", \"/bookkeeping/payments/external/accounts\", \"b\", \"unified_bearer\", 2, [\"payments:read\"]],\n \"bookkeeping_payments_settle_invoice_external\": [\"POST\", \"/bookkeeping/payments/external/settle-invoice\", \"b\", \"unified_bearer\", 4, [\"payments:write\",\"invoices:write\"]],\n \"bookkeeping_reports_asset_register\": [\"GET\", \"/bookkeeping/reports/assets\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_reports_category_breakdown\": [\"GET\", \"/bookkeeping/reports/category-breakdown\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_reports_euer\": [\"GET\", \"/bookkeeping/reports/euer\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_reports_monthly_trend\": [\"GET\", \"/bookkeeping/reports/monthly-trend\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_reports_summary\": [\"GET\", \"/bookkeeping/reports/summary\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_reports_vat_periods\": [\"GET\", \"/bookkeeping/reports/vat/periods\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_reports_vat_status\": [\"GET\", \"/bookkeeping/reports/vat/status\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_reports_vat_ustva\": [\"GET\", \"/bookkeeping/reports/vat/ustva\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_reports_vendor_breakdown\": [\"GET\", \"/bookkeeping/reports/vendor-breakdown\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_revenues_analyze_receipt\": [\"POST\", \"/bookkeeping/revenues/analyze-receipt\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_revenues_bulk_confirm\": [\"POST\", \"/bookkeeping/revenues/bulk-confirm\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_revenues_confirm\": [\"POST\", \"/bookkeeping/revenues/:id/confirm\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_revenues_confirm_cash\": [\"POST\", \"/bookkeeping/revenues/:id/confirm-cash\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_revenues_create\": [\"POST\", \"/bookkeeping/revenues\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_revenues_create_external\": [\"POST\", \"/bookkeeping/revenues/external\", \"b\", \"unified_bearer\", 4, [\"revenues:write\"]],\n \"bookkeeping_revenues_delete\": [\"DELETE\", \"/bookkeeping/revenues/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_revenues_get_by_id\": [\"GET\", \"/bookkeeping/revenues/:id\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_revenues_invoice_adjustment_external\": [\"POST\", \"/bookkeeping/revenues/external/invoice-adjustment\", \"b\", \"unified_bearer\", 4, [\"revenues:write\"]],\n \"bookkeeping_revenues_revoke_cash_confirm\": [\"POST\", \"/bookkeeping/revenues/:id/revoke-cash-confirm\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_revenues_search\": [\"GET\", \"/bookkeeping/revenues\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_revenues_update\": [\"PUT\", \"/bookkeeping/revenues/:id\", \"b\", \"frontend_permission_http\", 5],\n \"bookkeeping_revenues_upload_receipt\": [\"POST\", \"/bookkeeping/revenues/:id/upload-receipt\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_tax_params_create\": [\"POST\", \"/bookkeeping/tax-params\", \"b\", \"frontend_permission_http\", 4],\n \"bookkeeping_tax_params_health\": [\"GET\", \"/bookkeeping/tax-params/health\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_tax_params_history\": [\"GET\", \"/bookkeeping/tax-params/:key/history\", \"b\", \"frontend_permission_http\", 1],\n \"bookkeeping_tax_params_list\": [\"GET\", \"/bookkeeping/tax-params\", \"b\", \"frontend_permission_http\", 2],\n \"bookkeeping_tax_params_sync\": [\"POST\", \"/bookkeeping/tax-params/sync\", \"b\", \"frontend_permission_http\", 0],\n \"bookkeeping_tax_params_update\": [\"PATCH\", \"/bookkeeping/tax-params/:id\", \"b\", \"frontend_permission_http\", 5],\n \"currency_rates_get\": [\"GET\", \"/currency-rates/:fromCurrency/:toCurrency\", \"k\", \"x_api_key_http\", 3],\n \"customer_companies_create\": [\"POST\", \"/customer-companies/create\", \"b\", \"frontend_permission_http\", 4],\n \"customer_companies_create_external\": [\"POST\", \"/customer-companies/external\", \"b\", \"unified_bearer\", 4, [\"companies:write\"]],\n \"customer_companies_delete\": [\"DELETE\", \"/customer-companies/delete/:companyId\", \"b\", \"frontend_permission_http\", 1],\n \"customer_companies_delete_external\": [\"DELETE\", \"/customer-companies/external/:companyId\", \"b\", \"unified_bearer\", 1, [\"companies:delete\"]],\n \"customer_companies_employee_assignments_by_company_id\": [\"GET\", \"/customer-companies/employee-assignments/byCompanyId/:companyId\", \"b\", \"frontend_permission_http\", 3],\n \"customer_companies_employee_assignments_by_employee_id\": [\"GET\", \"/customer-companies/employee-assignments/byEmployeeId/:employeeId\", \"b\", \"frontend_permission_http\", 3],\n \"customer_companies_employee_assignments_create\": [\"POST\", \"/customer-companies/employee-assignments/create\", \"b\", \"frontend_permission_http\", 4],\n \"customer_companies_employee_assignments_update\": [\"PUT\", \"/customer-companies/employee-assignments/update/:assignmentId\", \"b\", \"frontend_permission_http\", 5],\n \"customer_companies_employees_create\": [\"POST\", \"/customer-companies/employees/create\", \"b\", \"frontend_permission_http\", 4],\n \"customer_companies_employees_delete\": [\"DELETE\", \"/customer-companies/employees/delete/:employeeId\", \"b\", \"frontend_permission_http\", 1],\n \"customer_companies_employees_get_by_id\": [\"GET\", \"/customer-companies/employees/byId/:employeeId\", \"b\", \"frontend_permission_http\", 1],\n \"customer_companies_employees_search\": [\"GET\", \"/customer-companies/employees/search\", \"b\", \"frontend_permission_http\", 2],\n \"customer_companies_employees_update\": [\"PUT\", \"/customer-companies/employees/update/:employeeId\", \"b\", \"frontend_permission_http\", 5],\n \"customer_companies_get_by_id\": [\"GET\", \"/customer-companies/byId/:companyId\", \"b\", \"frontend_permission_http\", 1],\n \"customer_companies_get_by_id_external\": [\"GET\", \"/customer-companies/external/:companyId\", \"b\", \"unified_bearer\", 1, [\"companies:read\"]],\n \"customer_companies_get_full_by_id\": [\"GET\", \"/customer-companies/byId/:companyId/full\", \"b\", \"frontend_permission_http\", 3],\n \"customer_companies_search\": [\"GET\", \"/customer-companies/search\", \"b\", \"frontend_permission_http\", 2],\n \"customer_companies_search_external\": [\"GET\", \"/customer-companies/external\", \"b\", \"unified_bearer\", 2, [\"companies:read\"]],\n \"customer_companies_update\": [\"PUT\", \"/customer-companies/update/:companyId\", \"b\", \"frontend_permission_http\", 5],\n \"customer_companies_update_external\": [\"PUT\", \"/customer-companies/external/:companyId\", \"b\", \"unified_bearer\", 5, [\"companies:write\"]],\n \"document_library_batch\": [\"POST\", \"/documents/library/batch\", \"b\", \"frontend_permission_http\", 6],\n \"document_library_branding\": [\"GET\", \"/documents/library/branding\", \"b\", \"frontend_permission_http\", 2],\n \"document_library_deliveries\": [\"GET\", \"/documents/library/:id/deliveries\", \"b\", \"frontend_permission_http\", 3],\n \"document_library_draft_create\": [\"POST\", \"/documents/library/drafts\", \"b\", \"frontend_permission_http\", 6],\n \"document_library_draft_delete\": [\"DELETE\", \"/documents/library/drafts/:id\", \"b\", \"frontend_permission_http\", 3],\n \"document_library_draft_get\": [\"GET\", \"/documents/library/drafts/:id\", \"b\", \"frontend_permission_http\", 3],\n \"document_library_draft_update\": [\"PUT\", \"/documents/library/drafts/:id\", \"b\", \"frontend_permission_http\", 7],\n \"document_library_drafts\": [\"GET\", \"/documents/library/drafts\", \"b\", \"frontend_permission_http\", 2],\n \"document_library_folder_create\": [\"POST\", \"/documents/library/folders\", \"b\", \"frontend_permission_http\", 6],\n \"document_library_folder_delete\": [\"DELETE\", \"/documents/library/folders/:id\", \"b\", \"frontend_permission_http\", 3],\n \"document_library_folder_update\": [\"PUT\", \"/documents/library/folders/:id\", \"b\", \"frontend_permission_http\", 7],\n \"document_library_folders\": [\"GET\", \"/documents/library/folders\", \"b\", \"frontend_permission_http\", 2],\n \"document_library_list\": [\"GET\", \"/documents/library\", \"b\", \"frontend_permission_http\", 2],\n \"document_library_metadata\": [\"PATCH\", \"/documents/library/:id/metadata\", \"b\", \"frontend_permission_http\", 7],\n \"document_library_preview\": [\"POST\", \"/documents/library/drafts/:id/preview\", \"b\", \"frontend_permission_http\", 7],\n \"document_library_render\": [\"POST\", \"/documents/library/drafts/:id/render\", \"b\", \"frontend_permission_http\", 7],\n \"document_library_send\": [\"POST\", \"/documents/library/:id/send\", \"b\", \"frontend_permission_http\", 7],\n \"document_library_settings\": [\"GET\", \"/documents/library/settings\", \"b\", \"frontend_permission_http\", 2],\n \"document_library_settings_save\": [\"PUT\", \"/documents/library/settings\", \"b\", \"frontend_permission_http\", 6],\n \"documents_assign\": [\"POST\", \"/documents/admin/assign\", \"b\", \"frontend_permission_http\", 4],\n \"documents_create\": [\"POST\", \"/documents/admin/create\", \"b\", \"frontend_permission_http\", 4],\n \"documents_delete\": [\"DELETE\", \"/documents/admin/delete/:documentId\", \"b\", \"frontend_permission_http\", 3],\n \"documents_delete_assignment\": [\"DELETE\", \"/documents/admin/assignments/:assignmentId\", \"b\", \"frontend_permission_http\", 1],\n \"documents_download_url\": [\"GET\", \"/documents/admin/byId/:documentId/download-url\", \"b\", \"frontend_permission_http\", 3],\n \"documents_get_by_id\": [\"GET\", \"/documents/admin/byId/:documentId\", \"b\", \"frontend_permission_http\", 1],\n \"documents_get_full_by_id\": [\"GET\", \"/documents/admin/byId/:documentId/full\", \"b\", \"frontend_permission_http\", 1],\n \"documents_search\": [\"GET\", \"/documents/admin/search\", \"b\", \"frontend_permission_http\", 2],\n \"documents_set_lock\": [\"PUT\", \"/documents/admin/lock/:documentId\", \"b\", \"frontend_permission_http\", 5],\n \"documents_stream\": [\"GET\", \"/documents/admin/stream/:documentId\", \"b\", \"frontend_permission_http\", 3],\n \"dunning_get_settings_external\": [\"GET\", \"/invoices/external/dunning/settings\", \"b\", \"unified_bearer\", 2, [\"invoices:read\"]],\n \"dunning_issue_external\": [\"POST\", \"/invoices/external/dunning/:invoiceId/issue\", \"b\", \"unified_bearer\", 5, [\"invoices:write\"]],\n \"dunning_notice_download_external\": [\"GET\", \"/invoices/external/dunning/notices/:noticeId/download\", \"b\", \"unified_bearer\", 1, [\"invoices:read\"]],\n \"dunning_notice_pdf_external\": [\"GET\", \"/invoices/external/dunning/notices/:noticeId/pdf\", \"b\", \"unified_bearer\", 1, [\"invoices:read\"]],\n \"dunning_preview_external\": [\"POST\", \"/invoices/external/dunning/:invoiceId/preview\", \"b\", \"unified_bearer\", 5, [\"invoices:read\"]],\n \"dunning_suggestions_external\": [\"GET\", \"/invoices/external/dunning/suggestions\", \"b\", \"unified_bearer\", 2, [\"invoices:read\"]],\n \"dunning_update_settings_external\": [\"PUT\", \"/invoices/external/dunning/settings\", \"b\", \"unified_bearer\", 4, [\"invoices:write\"]],\n \"enterprise_onboarding_complete_step\": [\"POST\", \"/apps/enterprise/onboarding/complete-step\", \"b\", \"frontend_permission_http\", 4],\n \"enterprise_onboarding_skip_step\": [\"POST\", \"/apps/enterprise/onboarding/skip-step\", \"b\", \"frontend_permission_http\", 4],\n \"enterprise_onboarding_state_get\": [\"GET\", \"/apps/enterprise/onboarding/state\", \"b\", \"frontend_permission_http\", 2],\n \"entitlements_assign\": [\"POST\", \"/entitlements\", \"b\", \"unified_bearer\", 4],\n \"entitlements_context_get_by_shop_assignment\": [\"GET\", \"/entitlements/context/by-shop-assignment/:shopAssignmentId\", \"b\", \"unified_bearer\", 1],\n \"entitlements_getAll\": [\"GET\", \"/entitlements/getAll\", \"b\", \"unified_bearer\", 2],\n \"entitlements_getAssigned\": [\"GET\", \"/entitlements/assigned\", \"b\", \"unified_bearer\", 2],\n \"entitlements_getById\": [\"GET\", \"/entitlements/:id\", \"b\", \"unified_bearer\", 1],\n \"entitlements_getUserEntitlements\": [\"GET\", \"/entitlements/user/:userId\", \"b\", \"unified_bearer\", 1],\n \"entitlements_get_state\": [\"GET\", \"/entitlements/:userId/:type/:identifier\", \"b\", \"unified_bearer\", 1],\n \"entitlements_list\": [\"GET\", \"/entitlements\", \"b\", \"unified_bearer\", 2],\n \"entitlements_revoke\": [\"DELETE\", \"/entitlements/:userId/:type/:identifier\", \"b\", \"unified_bearer\", 1],\n \"entitlements_update_state\": [\"PUT\", \"/entitlements/:userId/:type/:identifier\", \"b\", \"unified_bearer\", 5],\n \"entitlements_usage_overages_pull\": [\"GET\", \"/entitlements/usage-overages\", \"b\", \"unified_bearer\", 2],\n \"exports_datev_buchungsstapel\": [\"GET\", \"/exports/bookkeeping/datev/buchungsstapel\", \"b\", \"frontend_permission_http\", 0],\n \"exports_datev_metadata\": [\"GET\", \"/exports/bookkeeping/datev/metadata\", \"b\", \"frontend_permission_http\", 0],\n \"internal_users_delete\": [\"DELETE\", \"/internal/users/:externalUserId\", \"k\", \"x_api_key_https\", 1],\n \"internal_users_provision\": [\"POST\", \"/internal/users/provision\", \"k\", \"x_api_key_https\", 4],\n \"internal_users_sync\": [\"POST\", \"/internal/users/sync\", \"k\", \"x_api_key_https\", 4],\n \"invoice_dunning_delete_notice\": [\"DELETE\", \"/invoices/dunning/:invoiceId/notices/:noticeId\", \"b\", \"frontend_permission_http\", 1],\n \"invoice_dunning_get_settings\": [\"GET\", \"/invoices/dunning/settings\", \"b\", \"frontend_permission_http\", 2],\n \"invoice_dunning_issue\": [\"POST\", \"/invoices/dunning/:invoiceId/issue\", \"b\", \"frontend_permission_http\", 5],\n \"invoice_dunning_list_notices\": [\"GET\", \"/invoices/dunning/:invoiceId/notices\", \"b\", \"frontend_permission_http\", 1],\n \"invoice_dunning_notice_download\": [\"GET\", \"/invoices/dunning/notices/:noticeId/download\", \"b\", \"frontend_permission_http\", 1],\n \"invoice_dunning_notice_pdf\": [\"GET\", \"/invoices/dunning/notices/:noticeId/pdf\", \"b\", \"frontend_permission_http\", 1],\n \"invoice_dunning_preview\": [\"POST\", \"/invoices/dunning/:invoiceId/preview\", \"b\", \"frontend_permission_http\", 5],\n \"invoice_dunning_suggestions\": [\"GET\", \"/invoices/dunning/suggestions\", \"b\", \"frontend_permission_http\", 2],\n \"invoice_dunning_update_settings\": [\"PUT\", \"/invoices/dunning/settings\", \"b\", \"frontend_permission_http\", 4],\n \"invoices_analysis\": [\"GET\", \"/invoices/:invoiceId/analysis\", \"b\", \"frontend_permission_http\", 1],\n \"invoices_create_external\": [\"POST\", \"/invoices/external\", \"b\", \"unified_bearer\", 4, [\"invoices:write\"]],\n \"invoices_create_manual\": [\"POST\", \"/invoices/manual\", \"b\", \"frontend_bearer_http\", 4],\n \"invoices_credit_note_issue\": [\"POST\", \"/invoices/:invoiceId/credit-note/issue\", \"b\", \"frontend_permission_http\", 5],\n \"invoices_credit_note_issue_external\": [\"POST\", \"/invoices/external/:invoiceId/credit-note/issue\", \"b\", \"unified_bearer\", 5, [\"invoices:publish\"]],\n \"invoices_credit_note_preview\": [\"POST\", \"/invoices/:invoiceId/credit-note/preview\", \"b\", \"frontend_permission_http\", 5],\n \"invoices_credit_note_preview_external\": [\"POST\", \"/invoices/external/:invoiceId/credit-note/preview\", \"b\", \"unified_bearer\", 5, [\"invoices:write\"]],\n \"invoices_delete\": [\"DELETE\", \"/invoices/:invoiceId\", \"b\", \"frontend_bearer_http\", 1],\n \"invoices_delete_external\": [\"DELETE\", \"/invoices/external/:invoiceId\", \"b\", \"unified_bearer\", 1, [\"invoices:delete\"]],\n \"invoices_download_pdf\": [\"GET\", \"/invoices/:invoiceId/download\", \"n\", \"public\", 3],\n \"invoices_download_pdf_external\": [\"GET\", \"/invoices/external/:invoiceId/download\", \"b\", \"unified_bearer\", 1, [\"invoices:read\"]],\n \"invoices_dry_run_external\": [\"POST\", \"/invoices/external/dry-run\", \"b\", \"unified_bearer\", 4, [\"invoices:write\"]],\n \"invoices_get_by_id\": [\"GET\", \"/invoices/:invoiceId\", \"b\", \"frontend_bearer_http\", 1],\n \"invoices_get_by_id_external\": [\"GET\", \"/invoices/external/:invoiceId\", \"b\", \"unified_bearer\", 1, [\"invoices:read\"]],\n \"invoices_list_overdue\": [\"GET\", \"/invoices/overdue\", \"b\", \"frontend_permission_http\", 2],\n \"invoices_list_pending\": [\"GET\", \"/invoices/pending\", \"b\", \"frontend_permission_http\", 2],\n \"invoices_overdue_external\": [\"GET\", \"/invoices/external/overdue\", \"b\", \"unified_bearer\", 2, [\"invoices:read\"]],\n \"invoices_payment_events_external\": [\"GET\", \"/invoices/external/:invoiceId/payment-events\", \"b\", \"unified_bearer\", 3, [\"invoices:read\"]],\n \"invoices_payment_evidence_external\": [\"GET\", \"/invoices/external/:invoiceId/payment-evidence\", \"b\", \"unified_bearer\", 1, [\"invoices:read\"]],\n \"invoices_payment_instructions_external\": [\"GET\", \"/invoices/external/:invoiceId/payment-instructions\", \"b\", \"unified_bearer\", 1, [\"invoices:read\"]],\n \"invoices_payment_reconciliation\": [\"GET\", \"/invoices/:invoiceId/payment-reconciliation\", \"b\", \"frontend_permission_http\", 1],\n \"invoices_pending_external\": [\"GET\", \"/invoices/external/pending\", \"b\", \"unified_bearer\", 2, [\"invoices:read\"]],\n \"invoices_preview_external\": [\"POST\", \"/invoices/external/preview\", \"b\", \"unified_bearer\", 4, [\"invoices:read\"]],\n \"invoices_repair_pdf\": [\"POST\", \"/invoices/:invoiceId/repair-pdf\", \"b\", \"frontend_bearer_http\", 1],\n \"invoices_search\": [\"GET\", \"/invoices\", \"b\", \"frontend_bearer_http\", 2],\n \"invoices_search_external\": [\"GET\", \"/invoices/external\", \"b\", \"unified_bearer\", 2, [\"invoices:read\"]],\n \"invoices_send_email_external\": [\"POST\", \"/invoices/external/:invoiceId/send-email\", \"b\", \"unified_bearer\", 5, [\"invoices:write\"]],\n \"invoices_status_policy\": [\"GET\", \"/invoices/:invoiceId/status-policy\", \"b\", \"frontend_bearer_http\", 1],\n \"invoices_status_policy_external\": [\"GET\", \"/invoices/external/:invoiceId/status-policy\", \"b\", \"unified_bearer\", 1, [\"invoices:read\"]],\n \"invoices_update_status\": [\"PUT\", \"/invoices/:invoiceId/status\", \"b\", \"frontend_bearer_http\", 5],\n \"invoices_update_status_external\": [\"PUT\", \"/invoices/external/:invoiceId/status\", \"b\", \"unified_bearer\", 5, [\"invoices:write\"]],\n \"invoices_view_pdf\": [\"GET\", \"/invoices/:invoiceId/pdf\", \"n\", \"public\", 3],\n \"invoices_view_pdf_external\": [\"GET\", \"/invoices/external/:invoiceId/pdf\", \"b\", \"unified_bearer\", 1, [\"invoices:read\"]],\n \"logs_delete\": [\"DELETE\", \"/app-logs/delete/:logId\", \"b\", \"frontend_permission_http\", 1],\n \"logs_delete_bulk\": [\"DELETE\", \"/app-logs/delete/mass/:logIds\", \"b\", \"frontend_permission_http\", 1],\n \"logs_search\": [\"GET\", \"/app-logs/search\", \"b\", \"frontend_permission_http\", 2],\n \"managing_companies_api_keys_by_id\": [\"GET\", \"/managing-companies/api-keys/byId/:apiKeyId\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_api_keys_create\": [\"POST\", \"/managing-companies/api-keys/create\", \"b\", \"frontend_permission_http\", 4],\n \"managing_companies_api_keys_delete\": [\"DELETE\", \"/managing-companies/api-keys/delete/:apiKeyId\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_api_keys_list\": [\"GET\", \"/managing-companies/api-keys/list\", \"b\", \"frontend_permission_http\", 2],\n \"managing_companies_api_keys_revoke\": [\"POST\", \"/managing-companies/api-keys/revoke/:apiKeyId\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_api_keys_update\": [\"PUT\", \"/managing-companies/api-keys/update/:apiKeyId\", \"b\", \"frontend_permission_http\", 5],\n \"managing_companies_cost_centers_by_id\": [\"GET\", \"/managing-companies/cost-centers/byId/:id\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_cost_centers_by_ids\": [\"GET\", \"/managing-companies/cost-centers/by-ids\", \"b\", \"frontend_permission_http\", 2],\n \"managing_companies_cost_centers_create\": [\"POST\", \"/managing-companies/cost-centers/create\", \"b\", \"frontend_permission_http\", 4],\n \"managing_companies_cost_centers_delete\": [\"DELETE\", \"/managing-companies/cost-centers/delete/:id\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_cost_centers_list\": [\"GET\", \"/managing-companies/cost-centers/list/:managingCompanyId\", \"b\", \"frontend_permission_http\", 3],\n \"managing_companies_cost_centers_logos_delete\": [\"DELETE\", \"/managing-companies/cost-centers/logos/delete/:id/:mode\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_cost_centers_logos_settings\": [\"GET\", \"/managing-companies/cost-centers/logos/settings/:id\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_cost_centers_logos_upload\": [\"POST\", \"/managing-companies/cost-centers/logos/upload/:id/:mode\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_cost_centers_logos_urls\": [\"GET\", \"/managing-companies/cost-centers/logos/urls/:id\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_cost_centers_my\": [\"GET\", \"/managing-companies/cost-centers/my/:managingCompanyId\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_cost_centers_update\": [\"PUT\", \"/managing-companies/cost-centers/update/:id\", \"b\", \"frontend_permission_http\", 5],\n \"managing_companies_create\": [\"POST\", \"/managing-companies\", \"b\", \"frontend_permission_http\", 4],\n \"managing_companies_current_external\": [\"GET\", \"/managing-companies/external/current\", \"b\", \"unified_bearer\", 2, [\"companies:read\"]],\n \"managing_companies_delete\": [\"DELETE\", \"/managing-companies/:id\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_get_by_id\": [\"GET\", \"/managing-companies/:id\", \"b\", \"frontend_permission_http\", 1],\n \"managing_companies_invites_accept\": [\"POST\", \"/managing-companies/invites/accept/:token\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_invites_cancel\": [\"DELETE\", \"/managing-companies/invites/cancel/:inviteId\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_invites_pending_company\": [\"GET\", \"/managing-companies/invites/pending/company/:managingCompanyId\", \"b\", \"frontend_permission_http\", 3],\n \"managing_companies_invites_pending_company_preview\": [\"GET\", \"/managing-companies/invites/pending/company/:managingCompanyId/preview\", \"b\", \"frontend_bearer_http\", 3],\n \"managing_companies_invites_pending_user\": [\"GET\", \"/managing-companies/invites/pending/user\", \"b\", \"frontend_permission_http\", 2],\n \"managing_companies_invites_reject\": [\"POST\", \"/managing-companies/invites/reject/:token\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_invoice_layouts_catalog\": [\"GET\", \"/managing-companies/invoice-layouts/catalog\", \"b\", \"frontend_bearer_http\", 2],\n \"managing_companies_invoice_layouts_effective\": [\"GET\", \"/managing-companies/invoice-layouts/effective\", \"b\", \"frontend_bearer_http\", 2],\n \"managing_companies_invoice_layouts_preview\": [\"GET\", \"/managing-companies/invoice-layouts/preview\", \"b\", \"frontend_bearer_http\", 2],\n \"managing_companies_invoice_layouts_previews\": [\"GET\", \"/managing-companies/invoice-layouts/previews\", \"b\", \"frontend_bearer_http\", 2],\n \"managing_companies_invoice_numbering_get\": [\"GET\", \"/managing-companies/invoice-numbering/:managingCompanyId\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_invoice_numbering_preview\": [\"POST\", \"/managing-companies/invoice-numbering/:managingCompanyId/preview\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_invoice_numbering_save\": [\"PUT\", \"/managing-companies/invoice-numbering/:managingCompanyId\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_invoice_templates_archive\": [\"POST\", \"/managing-companies/invoice-templates/:managingCompanyId/:templateId/archive\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_invoice_templates_create\": [\"POST\", \"/managing-companies/invoice-templates/:managingCompanyId/create\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_invoice_templates_duplicate\": [\"POST\", \"/managing-companies/invoice-templates/:managingCompanyId/:templateId/duplicate\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_invoice_templates_from_invoice\": [\"POST\", \"/managing-companies/invoice-templates/:managingCompanyId/from-invoice\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_invoice_templates_get\": [\"GET\", \"/managing-companies/invoice-templates/:managingCompanyId/:templateId\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_invoice_templates_list\": [\"GET\", \"/managing-companies/invoice-templates/:managingCompanyId/list\", \"b\", \"frontend_bearer_http\", 3],\n \"managing_companies_invoice_templates_update\": [\"PUT\", \"/managing-companies/invoice-templates/:managingCompanyId/:templateId\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_invoice_transparency_context\": [\"GET\", \"/managing-companies/invoice-transparency/:managingCompanyId/context\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_invoice_transparency_quote\": [\"POST\", \"/managing-companies/invoice-transparency/:managingCompanyId/quote\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_item_type_configs_archive\": [\"POST\", \"/managing-companies/invoice-transparency/:managingCompanyId/item-type-configs/:value/archive\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_item_type_configs_create\": [\"POST\", \"/managing-companies/invoice-transparency/:managingCompanyId/item-type-configs\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_item_type_configs_update\": [\"PUT\", \"/managing-companies/invoice-transparency/:managingCompanyId/item-type-configs/:value\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_list\": [\"GET\", \"/managing-companies\", \"b\", \"frontend_permission_http\", 2],\n \"managing_companies_logos_delete\": [\"DELETE\", \"/managing-companies/logos/delete/:mode\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_logos_set_mode\": [\"PUT\", \"/managing-companies/logos/mode\", \"b\", \"frontend_bearer_http\", 4],\n \"managing_companies_logos_settings\": [\"GET\", \"/managing-companies/logos/settings\", \"b\", \"frontend_bearer_http\", 2],\n \"managing_companies_logos_upload\": [\"POST\", \"/managing-companies/logos/upload/:mode\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_logos_urls\": [\"GET\", \"/managing-companies/logos/urls\", \"b\", \"frontend_bearer_http\", 2],\n \"managing_companies_selected_current\": [\"GET\", \"/managing-companies/selected/current\", \"b\", \"frontend_bearer_http\", 2],\n \"managing_companies_selected_set\": [\"POST\", \"/managing-companies/selected/set/:companyId\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_update\": [\"PUT\", \"/managing-companies/:id\", \"b\", \"frontend_permission_http\", 5],\n \"managing_companies_user_assignments_assign\": [\"POST\", \"/managing-companies/user-assignments/assign\", \"b\", \"frontend_permission_http\", 4],\n \"managing_companies_user_assignments_cost_centers_add\": [\"POST\", \"/managing-companies/user-assignments/cost-centers/add\", \"b\", \"frontend_permission_http\", 4],\n \"managing_companies_user_assignments_cost_centers_remove\": [\"POST\", \"/managing-companies/user-assignments/cost-centers/remove\", \"b\", \"frontend_permission_http\", 4],\n \"managing_companies_user_assignments_list\": [\"GET\", \"/managing-companies/user-assignments/list/:companyId\", \"b\", \"frontend_permission_http\", 3],\n \"managing_companies_user_assignments_revoke\": [\"POST\", \"/managing-companies/user-assignments/revoke\", \"b\", \"frontend_permission_http\", 4],\n \"managing_companies_user_assignments_update\": [\"PUT\", \"/managing-companies/user-assignments/update/:assignmentId\", \"b\", \"frontend_permission_http\", 5],\n \"managing_companies_vat_settings_decision_upsert\": [\"PUT\", \"/managing-companies/vat-settings/:companyId/decisions/:decisionKey\", \"b\", \"frontend_bearer_http\", 5],\n \"managing_companies_vat_settings_get\": [\"GET\", \"/managing-companies/vat-settings/:companyId\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_vat_settings_history\": [\"GET\", \"/managing-companies/vat-settings/:companyId/history\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_vat_settings_tax_alerts\": [\"GET\", \"/managing-companies/vat-settings/:companyId/tax-alerts\", \"b\", \"frontend_bearer_http\", 1],\n \"managing_companies_vat_settings_upsert\": [\"POST\", \"/managing-companies/vat-settings/:companyId\", \"b\", \"frontend_bearer_http\", 5],\n \"oauth2_clients_audit\": [\"GET\", \"/oauth/clients/audit/:id\", \"b\", \"frontend_bearer_http\", 3],\n \"oauth2_clients_create\": [\"POST\", \"/oauth/clients/create\", \"b\", \"frontend_bearer_http\", 4],\n \"oauth2_clients_list\": [\"GET\", \"/oauth/clients/list\", \"b\", \"frontend_bearer_http\", 2],\n \"oauth2_clients_revoke\": [\"DELETE\", \"/oauth/clients/revoke/:id\", \"b\", \"frontend_bearer_http\", 1],\n \"oauth2_clients_update\": [\"PUT\", \"/oauth/clients/update/:id\", \"b\", \"frontend_bearer_http\", 5],\n \"oauth2_external_clients_create\": [\"POST\", \"/oauth/clients/external\", \"k\", \"x_api_key_https\", 4],\n \"oauth2_external_clients_delete\": [\"DELETE\", \"/oauth/clients/external/:idOrClientId\", \"k\", \"x_api_key_https\", 1],\n \"oauth2_external_clients_get\": [\"GET\", \"/oauth/clients/external/:idOrClientId\", \"k\", \"x_api_key_https\", 1],\n \"oauth2_external_clients_list\": [\"GET\", \"/oauth/clients/external/list\", \"k\", \"x_api_key_https\", 2],\n \"oauth2_external_clients_retire\": [\"POST\", \"/oauth/clients/external/:idOrClientId/retire\", \"k\", \"x_api_key_https\", 1],\n \"oauth2_external_clients_revoke\": [\"POST\", \"/oauth/clients/external/:idOrClientId/revoke\", \"k\", \"x_api_key_https\", 1],\n \"oauth2_external_clients_rollback\": [\"POST\", \"/oauth/clients/external/:idOrClientId/rollback\", \"k\", \"x_api_key_https\", 1],\n \"oauth2_external_clients_rotate\": [\"POST\", \"/oauth/clients/external/:idOrClientId/rotate\", \"k\", \"x_api_key_https\", 1],\n \"oauth2_external_clients_update\": [\"PUT\", \"/oauth/clients/external/:idOrClientId\", \"k\", \"x_api_key_https\", 5],\n \"oauth2_revoke\": [\"POST\", \"/oauth/revoke\", \"n\", \"public\", 0],\n \"oauth2_scopes_list\": [\"GET\", \"/oauth/scopes\", \"b\", \"frontend_bearer_http\", 2],\n \"oauth2_token\": [\"POST\", \"/oauth/token\", \"n\", \"public\", 0],\n \"payments_allocate\": [\"POST\", \"/bookkeeping/payments/allocate/:paymentId\", \"b\", \"frontend_permission_http\", 5],\n \"payments_allocation_reversal_preview\": [\"GET\", \"/bookkeeping/payments/:paymentId/allocations/:allocationId/reversal-preview\", \"b\", \"frontend_permission_http\", 1],\n \"payments_allocation_reverse\": [\"POST\", \"/bookkeeping/payments/:paymentId/allocations/:allocationId/reverse\", \"b\", \"frontend_permission_http\", 1],\n \"payments_apply_discount\": [\"POST\", \"/bookkeeping/payments/:paymentId/discount\", \"b\", \"frontend_permission_http\", 5],\n \"payments_archive_account\": [\"POST\", \"/bookkeeping/payments/accounts/:accountId/archive\", \"b\", \"frontend_permission_http\", 1],\n \"payments_book\": [\"POST\", \"/bookkeeping/payments/:paymentId/book\", \"b\", \"frontend_permission_http\", 5],\n \"payments_booking_payment_suggestions\": [\"GET\", \"/bookkeeping/payments/booking-match/:targetType/:targetId/payment-suggestions\", \"b\", \"frontend_permission_http\", 3],\n \"payments_cashbook\": [\"GET\", \"/bookkeeping/payments/cashbook\", \"b\", \"frontend_permission_http\", 2],\n \"payments_confirm_fee_proposals\": [\"POST\", \"/bookkeeping/payments/fee-proposals/confirm\", \"b\", \"frontend_permission_http\", 4],\n \"payments_create_account\": [\"POST\", \"/bookkeeping/payments/accounts/create\", \"b\", \"frontend_permission_http\", 4],\n \"payments_create_balance_snapshot\": [\"POST\", \"/bookkeeping/payments/snapshots\", \"b\", \"frontend_permission_http\", 4],\n \"payments_create_import_profile\": [\"POST\", \"/bookkeeping/payments/import/profiles\", \"b\", \"frontend_permission_http\", 4],\n \"payments_create_manual\": [\"POST\", \"/bookkeeping/payments/manual\", \"b\", \"frontend_permission_http\", 4],\n \"payments_delete\": [\"DELETE\", \"/bookkeeping/payments/:paymentId\", \"b\", \"frontend_permission_http\", 1],\n \"payments_delete_account\": [\"DELETE\", \"/bookkeeping/payments/accounts/:accountId\", \"b\", \"frontend_permission_http\", 1],\n \"payments_download_csv_template\": [\"GET\", \"/bookkeeping/payments/import/csv/template/:profileKey\", \"b\", \"frontend_permission_http\", 1],\n \"payments_get_account_by_id\": [\"GET\", \"/bookkeeping/payments/accounts/bdId/:accountId\", \"b\", \"frontend_permission_http\", 1],\n \"payments_import_csv\": [\"POST\", \"/bookkeeping/payments/import/csv\", \"b\", \"frontend_permission_http\", 4],\n \"payments_import_csv_preview\": [\"POST\", \"/bookkeeping/payments/import/csv/preview\", \"b\", \"frontend_permission_http\", 4],\n \"payments_list_accounts\": [\"GET\", \"/bookkeeping/payments/accounts\", \"b\", \"frontend_permission_http\", 2],\n \"payments_list_balance_snapshots\": [\"GET\", \"/bookkeeping/payments/snapshots\", \"b\", \"frontend_permission_http\", 2],\n \"payments_list_csv_profiles\": [\"GET\", \"/bookkeeping/payments/import/csv/profiles\", \"b\", \"frontend_permission_http\", 0],\n \"payments_list_fee_proposals\": [\"GET\", \"/bookkeeping/payments/fee-proposals\", \"b\", \"frontend_permission_http\", 2],\n \"payments_list_import_profiles\": [\"GET\", \"/bookkeeping/payments/import/profiles\", \"b\", \"frontend_permission_http\", 2],\n \"payments_match_suggestions\": [\"GET\", \"/bookkeeping/payments/match/:paymentId/suggestions\", \"b\", \"frontend_permission_http\", 3],\n \"payments_paypal_sync\": [\"POST\", \"/bookkeeping/payments/accounts/:accountId/paypal/sync\", \"b\", \"frontend_permission_http\", 3],\n \"payments_paypal_webhook_deregister\": [\"DELETE\", \"/bookkeeping/payments/accounts/:accountId/paypal/webhook\", \"b\", \"frontend_permission_http\", 1],\n \"payments_paypal_webhook_receive\": [\"POST\", \"/bookkeeping/payments/public/paypal/webhook\", \"n\", \"public\", 0],\n \"payments_paypal_webhook_register\": [\"POST\", \"/bookkeeping/payments/accounts/:accountId/paypal/webhook/register\", \"b\", \"frontend_permission_http\", 5],\n \"payments_record_fee\": [\"POST\", \"/bookkeeping/payments/:paymentId/fee\", \"b\", \"frontend_permission_http\", 5],\n \"payments_reject_fee_proposals\": [\"POST\", \"/bookkeeping/payments/fee-proposals/reject\", \"b\", \"frontend_permission_http\", 4],\n \"payments_reversal_preview\": [\"GET\", \"/bookkeeping/payments/:paymentId/reversal-preview\", \"b\", \"frontend_permission_http\", 1],\n \"payments_reverse\": [\"POST\", \"/bookkeeping/payments/:paymentId/reverse\", \"b\", \"frontend_permission_http\", 5],\n \"payments_search\": [\"GET\", \"/bookkeeping/payments/search\", \"b\", \"frontend_permission_http\", 2],\n \"payments_sumup_oauth_callback\": [\"GET\", \"/bookkeeping/payments/public/sumup/oauth/callback\", \"n\", \"public\", 2],\n \"payments_sumup_oauth_disconnect\": [\"DELETE\", \"/bookkeeping/payments/accounts/:accountId/sumup/oauth\", \"b\", \"frontend_permission_http\", 1],\n \"payments_sumup_oauth_start\": [\"POST\", \"/bookkeeping/payments/accounts/:accountId/sumup/oauth/start\", \"b\", \"frontend_permission_http\", 5],\n \"payments_sumup_sync\": [\"POST\", \"/bookkeeping/payments/accounts/:accountId/sumup/sync\", \"b\", \"frontend_permission_http\", 3],\n \"payments_transfer_link\": [\"POST\", \"/bookkeeping/payments/transfer/link\", \"b\", \"frontend_permission_http\", 4],\n \"payments_transfer_linkable\": [\"GET\", \"/bookkeeping/payments/:paymentId/transfer/linkable\", \"b\", \"frontend_permission_http\", 3],\n \"payments_transfer_unlink\": [\"POST\", \"/bookkeeping/payments/:paymentId/transfer/unlink\", \"b\", \"frontend_permission_http\", 5],\n \"payments_unallocate\": [\"DELETE\", \"/bookkeeping/payments/allocations/:paymentId/:allocationId\", \"b\", \"frontend_permission_http\", 1],\n \"payments_update\": [\"PUT\", \"/bookkeeping/payments/update/:paymentId\", \"b\", \"frontend_permission_http\", 5],\n \"payments_update_account\": [\"PUT\", \"/bookkeeping/payments/accounts/update/:accountId\", \"b\", \"frontend_permission_http\", 5],\n \"payments_update_fee_vat_treatment\": [\"PUT\", \"/bookkeeping/payments/accounts/:accountId/fee-vat-treatment\", \"b\", \"frontend_permission_http\", 5],\n \"payments_update_import_profile\": [\"PUT\", \"/bookkeeping/payments/import/profiles/:id\", \"b\", \"frontend_permission_http\", 5],\n \"payments_void_balance_snapshot\": [\"POST\", \"/bookkeeping/payments/snapshots/:snapshotId/void\", \"b\", \"frontend_permission_http\", 5],\n \"payments_writeoff\": [\"POST\", \"/bookkeeping/payments/:paymentId/writeoff\", \"b\", \"frontend_permission_http\", 5],\n \"permissions_assign_to_role\": [\"POST\", \"/permissions/assign/:roleId/:permissionId\", \"b\", \"frontend_permission_http\", 1],\n \"permissions_assignments_list\": [\"GET\", \"/permissions/getAssignments\", \"b\", \"composite_and\", 2],\n \"permissions_create\": [\"POST\", \"/permissions/create\", \"b\", \"frontend_permission_http\", 4],\n \"permissions_list\": [\"GET\", \"/permissions/getAll\", \"b\", \"frontend_permission_http\", 2],\n \"permissions_sync\": [\"POST\", \"/permissions/sync\", \"b\", \"frontend_permission_http\", 2],\n \"permissions_unassign_from_role\": [\"DELETE\", \"/permissions/unassign/:roleId/:permissionId\", \"b\", \"frontend_permission_http\", 1],\n \"reconciliation_auto_match_confirm\": [\"POST\", \"/bookkeeping/reconciliation/auto-match/confirm\", \"b\", \"frontend_permission_http\", 4],\n \"reconciliation_auto_match_preview\": [\"GET\", \"/bookkeeping/reconciliation/auto-match/preview\", \"b\", \"frontend_permission_http\", 2],\n \"reconciliation_batch_suggestions\": [\"POST\", \"/bookkeeping/reconciliation/batch-suggestions\", \"b\", \"frontend_permission_http\", 4],\n \"reconciliation_confirm_provider_payout\": [\"POST\", \"/bookkeeping/reconciliation/confirm-provider-payout\", \"b\", \"frontend_permission_http\", 4],\n \"reconciliation_dashboard\": [\"GET\", \"/bookkeeping/reconciliation/dashboard\", \"b\", \"frontend_permission_http\", 2],\n \"reconciliation_groups\": [\"GET\", \"/bookkeeping/reconciliation/groups\", \"b\", \"frontend_permission_http\", 2],\n \"reconciliation_queue\": [\"GET\", \"/bookkeeping/reconciliation/queue\", \"b\", \"frontend_permission_http\", 2],\n \"role_assignments_create\": [\"POST\", \"/role-assignments/create/:userId/:roleId\", \"b\", \"frontend_permission_http\", 5],\n \"role_assignments_get_user_assignments\": [\"GET\", \"/role-assignments/getUserAssignments/:userId\", \"b\", \"frontend_permission_http\", 1],\n \"role_assignments_list\": [\"GET\", \"/role-assignments/getAll\", \"b\", \"frontend_permission_http\", 2],\n \"role_assignments_revoke\": [\"DELETE\", \"/role-assignments/delete/:userId/:roleId\", \"b\", \"frontend_permission_http\", 1],\n \"roles_create\": [\"POST\", \"/roles/create\", \"b\", \"frontend_permission_http\", 4],\n \"roles_delete\": [\"DELETE\", \"/roles/delete/:roleId\", \"b\", \"frontend_permission_http\", 1],\n \"roles_get_by_id\": [\"GET\", \"/roles/getById/:roleId\", \"b\", \"frontend_permission_http\", 1],\n \"roles_list\": [\"GET\", \"/roles/getAll\", \"b\", \"frontend_permission_http\", 2],\n \"roles_update\": [\"PUT\", \"/roles/update/:roleId\", \"b\", \"frontend_permission_http\", 5],\n \"settings_list\": [\"GET\", \"/settings/getAll\", \"b\", \"frontend_bearer_http\", 2],\n \"settings_update\": [\"PUT\", \"/settings/update/:settingId/:key\", \"b\", \"frontend_permission_http\", 5],\n \"tax_years_configure\": [\"PUT\", \"/tax-years/:year/configuration\", \"b\", \"frontend_bearer_http\", 1],\n \"tax_years_get\": [\"GET\", \"/tax-years/:year\", \"b\", \"frontend_bearer_http\", 1],\n \"tax_years_history\": [\"GET\", \"/tax-years/:year/history\", \"b\", \"frontend_bearer_http\", 3],\n \"tax_years_record_submission\": [\"POST\", \"/tax-years/:year/submissions\", \"b\", \"frontend_bearer_http\", 1],\n \"tax_years_review\": [\"POST\", \"/tax-years/:year/reviews\", \"b\", \"frontend_bearer_http\", 1],\n \"user_activity_overview_get\": [\"POST\", \"/user-activity/user/:userId\", \"b\", \"frontend_permission_http\", 5],\n \"user_activity_users_stats_list\": [\"GET\", \"/user-activity/users\", \"b\", \"frontend_permission_http\", 2],\n \"users_create\": [\"POST\", \"/users/create\", \"b\", \"frontend_bearer_http\", 4],\n \"users_delete\": [\"DELETE\", \"/users/delete/:userId\", \"b\", \"frontend_permission_http\", 1],\n \"users_delete_external\": [\"DELETE\", \"/users/delete/external/:frontendUserId\", \"b\", \"frontend_bearer_http\", 1],\n \"users_delete_external_image\": [\"DELETE\", \"/users/update/external/:frontendUserId/image\", \"b\", \"frontend_bearer_http\", 1],\n \"users_get_by_email\": [\"GET\", \"/users/getByEmail/:email\", \"b\", \"frontend_permission_http\", 1],\n \"users_get_by_external_user_id\": [\"GET\", \"/users/getByExternalUserId/:externalUserId\", \"b\", \"frontend_bearer_http\", 1],\n \"users_get_by_id\": [\"GET\", \"/users/getById/:userId\", \"b\", \"frontend_bearer_http\", 3],\n \"users_list\": [\"GET\", \"/users/getAll\", \"b\", \"frontend_permission_http\", 2],\n \"users_search\": [\"GET\", \"/users/search\", \"b\", \"frontend_permission_http\", 2],\n \"users_update_external\": [\"PUT\", \"/users/update/external/:frontendUserId\", \"b\", \"frontend_bearer_http\", 5],\n \"users_update_external_image\": [\"PUT\", \"/users/update/external/:frontendUserId/image\", \"b\", \"frontend_bearer_http\", 5],\n \"webhooks_delete\": [\"DELETE\", \"/webhooks/delete/:webhookId\", \"b\", \"frontend_permission_http\", 1],\n \"webhooks_delete_bulk\": [\"DELETE\", \"/webhooks/delete/mass/:webhookIds\", \"b\", \"frontend_permission_http\", 1],\n \"webhooks_search\": [\"GET\", \"/webhooks/search\", \"b\", \"frontend_permission_http\", 2],\n \"work_tracking_approve\": [\"POST\", \"/apps/admin/work-tracking/approve/:workEntryId\", \"b\", \"frontend_permission_http\", 5],\n \"work_tracking_assignment_create\": [\"POST\", \"/apps/admin/work-tracking/assignments/create\", \"b\", \"frontend_permission_http\", 4],\n \"work_tracking_assignment_delete\": [\"DELETE\", \"/apps/admin/work-tracking/assignments/delete/:workEntryAssignmentId\", \"b\", \"frontend_permission_http\", 1],\n \"work_tracking_assignment_update\": [\"PUT\", \"/apps/admin/work-tracking/assignments/update/:workEntryAssignmentId\", \"b\", \"frontend_permission_http\", 5],\n \"work_tracking_bill\": [\"POST\", \"/apps/admin/work-tracking/bill\", \"b\", \"frontend_permission_http\", 4],\n \"work_tracking_bill_preview\": [\"POST\", \"/apps/admin/work-tracking/bill/preview\", \"b\", \"frontend_permission_http\", 4],\n \"work_tracking_create\": [\"POST\", \"/apps/admin/work-tracking/create\", \"b\", \"frontend_permission_http\", 4],\n \"work_tracking_delete\": [\"DELETE\", \"/apps/admin/work-tracking/delete/:workEntryId\", \"b\", \"frontend_permission_http\", 1],\n \"work_tracking_get_by_id\": [\"GET\", \"/apps/admin/work-tracking/byId/:workEntryId\", \"b\", \"frontend_permission_http\", 1],\n \"work_tracking_get_my_role\": [\"GET\", \"/apps/admin/work-tracking/my-role\", \"b\", \"frontend_permission_http\", 2],\n \"work_tracking_list\": [\"GET\", \"/apps/admin/work-tracking/list\", \"b\", \"frontend_permission_http\", 2],\n \"work_tracking_reject\": [\"POST\", \"/apps/admin/work-tracking/reject/:workEntryId\", \"b\", \"frontend_permission_http\", 5],\n \"work_tracking_update\": [\"PUT\", \"/apps/admin/work-tracking/update/:workEntryId\", \"b\", \"frontend_permission_http\", 5],\n};\n","/**\n * Die Route entscheidet, welches Credential mitgeht — nicht der Aufrufer.\n *\n * orvello (node-bill) kennt zwei Bahnen nebeneinander, und sie sind nicht\n * austauschbar:\n *\n * - **bearer** — die Geschaeftsrouten (`unified_bearer`, `frontend_*`). Hier gilt\n * ein OAuth2-Client (client_credentials) oder ein als Bearer gesendeter Token.\n * Das Credential gehoert der *rufenden App*.\n * - **api_key** — die Verwaltungsrouten (`x_api_key_https`), also alles unter\n * `/oauth/clients/external/*`. Hier gilt der Header `x-api-key`. Das Credential\n * gehoert der *Kante* zwischen Verwalter und Dienst.\n *\n * Bis 0.1.0 schickte der Client alles als `Authorization: Bearer`. Die neun\n * Verwaltungsrouten waren damit zwar getippt und aufrufbar, aber grundsaetzlich\n * nicht authentisierbar — ein Loch, das erst beim ersten echten Aufruf sichtbar\n * geworden waere, und dann als `403 Forbidden: Invalid API key` ohne Hinweis auf\n * die Ursache.\n *\n * Der generierte Vertrag traegt `auth.type` an jeder einzelnen Route. Diese Datei\n * liest genau das aus und macht es zur Laufzeitentscheidung. Eine neue Route mit\n * einer neuen Auth-Art faellt damit nicht still in die falsche Bahn, sondern\n * kommt hier an.\n */\n\nimport { ROUTE_INDEX, type RouteIndexEntry } from \"./route-index.generated.js\";\n\n/** Welche Kopfzeile eine Route verlangt. */\nexport type OrvelloAuthChannel = \"bearer\" | \"api_key\" | \"none\";\n\n/**\n * Die Auth-Arten des Vertrags, die den `x-api-key`-Header verlangen.\n *\n * `x_api_key_https` erzwingt zusaetzlich HTTPS — das ist eine Frage des\n * Transports, nicht des Credentials, und aendert an der Kopfzeile nichts.\n */\nconst API_KEY_AUTH_TYPES: ReadonlySet<string> = new Set([\"x_api_key_http\", \"x_api_key_https\"]);\n\n/** Auth-Arten ganz ohne Credential. */\nconst PUBLIC_AUTH_TYPES: ReadonlySet<string> = new Set([\"public\"]);\n\nexport type OrvelloOperationId = keyof typeof ROUTE_INDEX & string;\n\nexport type OrvelloOperation = {\n operationId: string;\n method: string;\n /** Die Vorlage aus dem Vertrag, Platzhalter noch als `:name`. */\n path: string;\n /** Die Auth-Art, wie sie woertlich im Vertrag steht. */\n authType: string;\n /** Was daraus fuer den Aufruf folgt. */\n channel: OrvelloAuthChannel;\n /** Was der Dienst an dieser Route validiert — aus `meta.validated`. */\n validated: { params: boolean; query: boolean; body: boolean };\n /** Die im Vertrag geforderten OAuth2-Scopes, sofern die Auth-Art welche nennt. */\n scopes: readonly string[];\n};\n\n/** Bit-Stellen der Validierungs-Angabe in {@link RouteIndexEntry}. */\nconst VALIDATES_PARAMS = 1;\nconst VALIDATES_QUERY = 2;\nconst VALIDATES_BODY = 4;\n\nconst CHANNEL_BY_CODE: Record<string, OrvelloAuthChannel> = {\n b: \"bearer\",\n k: \"api_key\",\n n: \"none\",\n};\n\n/**\n * Bildet eine Auth-Art des Vertrags auf die Bahn ab, ueber die sie bedient wird.\n *\n * Unbekannte Arten landen bewusst auf `bearer`: das ist die Bahn aller\n * Geschaeftsrouten und damit die einzige Voreinstellung, die einen neuen,\n * hier noch nicht gesehenen Routentyp nicht sofort unbrauchbar macht.\n */\nexport function authChannelForContractType(authType: string | undefined | null): OrvelloAuthChannel {\n if (!authType) return \"bearer\";\n if (API_KEY_AUTH_TYPES.has(authType)) return \"api_key\";\n if (PUBLIC_AUTH_TYPES.has(authType)) return \"none\";\n return \"bearer\";\n}\n\nfunction toOperation(operationId: string, entry: RouteIndexEntry): OrvelloOperation {\n const [method, path, channelCode, authType, validated, scopes] = entry;\n return {\n operationId,\n method,\n path,\n authType,\n // Der Code in der Tabelle ist bereits das Ergebnis von\n // `authChannelForContractType` zur Erzeugungszeit; faellt er unbekannt aus,\n // gilt dieselbe Regel noch einmal statt einer stillen Voreinstellung.\n channel: CHANNEL_BY_CODE[channelCode] ?? authChannelForContractType(authType),\n validated: {\n params: (validated & VALIDATES_PARAMS) !== 0,\n query: (validated & VALIDATES_QUERY) !== 0,\n body: (validated & VALIDATES_BODY) !== 0,\n },\n scopes: scopes ? [...scopes] : [],\n };\n}\n\nlet cachedOperations: OrvelloOperation[] | null = null;\n\n/** Alle Operationen des Vertrags, gegen den dieses SDK gebaut wurde. */\nexport function listOperations(): readonly OrvelloOperation[] {\n if (!cachedOperations) {\n cachedOperations = Object.entries(ROUTE_INDEX).map(([operationId, entry]) =>\n toOperation(operationId, entry)\n );\n }\n return cachedOperations;\n}\n\n/** Eine Operation nach ihrer `operationId`, oder `null`, wenn der Vertrag sie nicht kennt. */\nexport function describeOperation(operationId: string): OrvelloOperation | null {\n const entry = ROUTE_INDEX[operationId];\n return entry ? toOperation(operationId, entry) : null;\n}\n\ntype PathIndexEntry = { segments: string[]; operation: OrvelloOperation };\n\nlet cachedPathIndex: Map<string, PathIndexEntry[]> | null = null;\n\nfunction pathIndex(): Map<string, PathIndexEntry[]> {\n if (cachedPathIndex) return cachedPathIndex;\n const index = new Map<string, PathIndexEntry[]>();\n for (const operation of listOperations()) {\n const segments = splitPath(operation.path);\n const key = `${operation.method} ${segments.length}`;\n const bucket = index.get(key);\n if (bucket) bucket.push({ segments, operation });\n else index.set(key, [{ segments, operation }]);\n }\n cachedPathIndex = index;\n return index;\n}\n\nfunction splitPath(path: string): string[] {\n return path.split(\"/\").filter((segment) => segment.length > 0);\n}\n\n/**\n * Findet die Route, die ein konkreter Pfad anspricht.\n *\n * ⭐ Woertliche Segmente schlagen Platzhalter. Ohne diese Regel wuerde\n * `GET /oauth/clients/external/list` auf `/oauth/clients/external/:idOrClientId`\n * fallen — beide sind GET mit vier Segmenten — und die Auflistung bekaeme die\n * Auth-Entscheidung einer anderen Route. Dass beide hier dieselbe Bahn\n * verlangen, ist Zufall und kein Verlass.\n */\nexport function resolveOperation(method: string, path: string): OrvelloOperation | null {\n const wanted = splitPath(path.split(\"?\")[0] ?? path);\n const bucket = pathIndex().get(`${method.toUpperCase()} ${wanted.length}`);\n if (!bucket) return null;\n\n let best: { score: number; operation: OrvelloOperation } | null = null;\n\n for (const entry of bucket) {\n let score = 0;\n let matches = true;\n for (let i = 0; i < wanted.length; i++) {\n const template = entry.segments[i] as string;\n if (template.startsWith(\":\")) continue;\n if (template === decodeSegment(wanted[i] as string)) score++;\n else {\n matches = false;\n break;\n }\n }\n if (!matches) continue;\n if (!best || score > best.score) best = { score, operation: entry.operation };\n }\n\n return best?.operation ?? null;\n}\n\nfunction decodeSegment(segment: string): string {\n try {\n return decodeURIComponent(segment);\n } catch {\n return segment;\n }\n}\n\n/** Fehlt ein Pfad-Parameter, ist der Aufruf falsch — nicht der Dienst. */\nexport class OrvelloOperationError extends Error {\n constructor(message: string, public readonly operationId: string) {\n super(message);\n this.name = \"OrvelloOperationError\";\n }\n}\n\n/**\n * Setzt die Platzhalter einer Vertrags-Route.\n *\n * Ein fehlender Parameter wirft hier, statt einen Pfad mit `:idOrClientId` darin\n * ans Netz zu geben. Der Dienst antwortete darauf mit 404 oder — schlimmer — mit\n * dem Treffer einer anderen Route.\n */\nexport function buildPath(operationId: string, params?: Record<string, unknown>): string {\n const operation = describeOperation(operationId);\n if (!operation) {\n throw new OrvelloOperationError(\n `Unknown orvello operation \"${operationId}\". It is not part of the contract this SDK was built against.`,\n operationId\n );\n }\n\n return (\n \"/\" +\n splitPath(operation.path)\n .map((segment) => {\n if (!segment.startsWith(\":\")) return segment;\n const name = segment.slice(1);\n const value = params?.[name];\n if (value === undefined || value === null || value === \"\") {\n throw new OrvelloOperationError(\n `orvello operation \"${operationId}\" needs the path parameter \"${name}\" (${operation.method} ${operation.path}).`,\n operationId\n );\n }\n return encodeURIComponent(String(value));\n })\n .join(\"/\")\n );\n}\n","/**\n * Was dieser Dienst kann — als Daten, ohne Netz und ohne Vermutung.\n *\n * Ein Verbindungs-Verwalter (node-amp) kann Kanten nur dann selbst herstellen,\n * pruefen und reparieren, wenn er weiss, *was die Gegenseite ueberhaupt anbietet*.\n * Bis hierher war das Wissen implizit: irgendwo im Verwalter stand fest\n * einprogrammiert, dass orvello Clients ausstellen kann. Wird eine Faehigkeit dort\n * angenommen und fehlt sie hier, ist das Ergebnis eine Zeile, die gesund aussieht,\n * weil nie jemand gefragt hat.\n *\n * Deshalb leitet sich der Bericht ausschliesslich aus dem mitgelieferten Vertrag\n * ab: eine Faehigkeit gilt genau dann als vorhanden, wenn die zugehoerige\n * Operation im Vertrag steht. Faellt sie in node-bill weg, verschwindet sie beim\n * naechsten `sync:contract` auch hier — niemand muss daran denken.\n *\n * ⚠ Der Bericht sagt, was der Vertrag hergibt, nicht was der Aufrufer darf. Ob ein\n * Credential wirklich traegt, beantwortet allein {@link preflightOrvello}.\n */\n\nimport { CONTRACT_SHA256 } from \"./contract-hash.js\";\nimport { listOperations, describeOperation, type OrvelloAuthChannel } from \"./operations.js\";\n\ndeclare const __ORVELLO_SDK_VERSION__: string;\nconst SDK_VERSION: string =\n typeof __ORVELLO_SDK_VERSION__ === \"string\" ? __ORVELLO_SDK_VERSION__ : \"0.0.0-unbuilt\";\n\n/**\n * Eine Faehigkeit und die Operationen, an denen sie haengt.\n *\n * `operations` ist der Beleg: wer die Angabe anzweifelt, kann sie gegen den\n * Vertrag nachschlagen, statt dem Wort zu glauben.\n */\nexport type OrvelloCapability = {\n supported: boolean;\n operations: string[];\n /** Warum nicht — nur gesetzt, wenn `supported` falsch ist. */\n reason?: string;\n};\n\nexport type OrvelloCapabilities = {\n service: \"orvello\";\n sdkVersion: string;\n contractSha256: string;\n /** Wie viele Operationen der Vertrag insgesamt kennt. */\n operationCount: number;\n /** Welche Credential-Bahnen der Vertrag ueberhaupt verlangt. */\n authChannels: Record<OrvelloAuthChannel, number>;\n capabilities: {\n /** Der Dienst nennt seinen eigenen Vertrags-Fingerabdruck (`GET /health/contract`). */\n contractFingerprint: OrvelloCapability;\n /** Ein unauthentisierter Erreichbarkeits-Endpunkt. */\n healthCheck: OrvelloCapability;\n /** OAuth2-Clients fuer andere Apps anlegen, lesen, aendern, loeschen. */\n clientManagement: OrvelloCapability;\n /** Client-Geheimnis erneuern. */\n clientRotation: OrvelloCapability;\n /**\n * Gnadenfrist beim Wechsel: das alte Geheimnis bleibt gueltig, bis es\n * ausdruecklich zurueckgezogen wird — und laesst sich zurueckdrehen.\n */\n rotationGracePeriod: OrvelloCapability;\n /** Zugang sofort entziehen. */\n clientRevocation: OrvelloCapability;\n /** Berechtigungen (entitlements) lesen und setzen. */\n entitlements: OrvelloCapability;\n /** Rechnungen ueber die externe API. */\n invoicing: OrvelloCapability;\n /**\n * Ein serverseitiger Probelauf, der schreibt *als ob*, aber nichts aendert.\n *\n * ⭐ Steht hier bewusst mit dem Grund statt still auf `false`: orvello kennt\n * `dryRun` heute nur in der Buchhaltung, nicht in der Client-Verwaltung. Ein\n * Verwalter, der einen Probelauf braucht, nimmt {@link preflightOrvello} —\n * der ist nebenwirkungsfrei, aber er beweist die Berechtigung, nicht das\n * Ergebnis. Der Unterschied gehoert benannt, nicht verschwiegen.\n */\n serverSideDryRun: OrvelloCapability;\n };\n};\n\nconst CLIENT_MANAGEMENT_OPS = [\n \"oauth2_external_clients_list\",\n \"oauth2_external_clients_get\",\n \"oauth2_external_clients_create\",\n \"oauth2_external_clients_update\",\n \"oauth2_external_clients_delete\",\n];\nconst CLIENT_ROTATION_OPS = [\"oauth2_external_clients_rotate\"];\nconst GRACE_PERIOD_OPS = [\"oauth2_external_clients_retire\", \"oauth2_external_clients_rollback\"];\nconst REVOCATION_OPS = [\"oauth2_external_clients_revoke\"];\n\nfunction capabilityFrom(operationIds: string[], reasonWhenMissing: string): OrvelloCapability {\n const present = operationIds.filter((id) => describeOperation(id) !== null);\n if (present.length === operationIds.length) {\n return { supported: true, operations: present };\n }\n const missing = operationIds.filter((id) => !present.includes(id));\n return {\n supported: false,\n operations: present,\n reason: `${reasonWhenMissing} Fehlend im Vertrag: ${missing.join(\", \")}.`,\n };\n}\n\nfunction capabilityFromPrefix(prefix: string, reasonWhenMissing: string): OrvelloCapability {\n const present = listOperations()\n .filter((operation) => operation.operationId.startsWith(prefix))\n .map((operation) => operation.operationId);\n return present.length > 0\n ? { supported: true, operations: present }\n : { supported: false, operations: [], reason: reasonWhenMissing };\n}\n\n/**\n * Der Faehigkeitsbericht dieses Dienstes. Rein aus dem Vertrag, kein Netzzugriff,\n * kein Credential noetig — damit ein Verwalter ihn auch dann fuehren kann, wenn\n * die Verbindung gerade nicht steht.\n */\nexport function orvelloCapabilities(): OrvelloCapabilities {\n const operations = listOperations();\n const authChannels: Record<OrvelloAuthChannel, number> = { bearer: 0, api_key: 0, none: 0 };\n for (const operation of operations) authChannels[operation.channel]++;\n\n return {\n service: \"orvello\",\n sdkVersion: SDK_VERSION,\n contractSha256: CONTRACT_SHA256,\n operationCount: operations.length,\n authChannels,\n capabilities: {\n // `/health/contract` ist bewusst KEINE Vertrags-Route: der Endpunkt\n // beschreibt den Vertrag und kann deshalb nicht in ihm stehen. Er gehoert\n // zur Zusage dieses SDK und wird von `diagnoseOrvello` live geprueft.\n contractFingerprint: {\n supported: true,\n operations: [],\n },\n healthCheck: capabilityFrom(\n [\"app_info_health\"],\n \"Ohne Erreichbarkeits-Endpunkt bleibt nur der Umweg ueber eine echte Anfrage.\"\n ),\n clientManagement: capabilityFrom(\n CLIENT_MANAGEMENT_OPS,\n \"Ohne diese Routen kann ein Verwalter keine Zugaenge fuer andere Apps ausstellen.\"\n ),\n clientRotation: capabilityFrom(\n CLIENT_ROTATION_OPS,\n \"Ohne Erneuerung ist ein einmal ausgegebenes Geheimnis dauerhaft.\"\n ),\n rotationGracePeriod: capabilityFrom(\n GRACE_PERIOD_OPS,\n \"Ohne Rueckzug und Ruecknahme ist jede Erneuerung ein harter Schnitt.\"\n ),\n clientRevocation: capabilityFrom(\n REVOCATION_OPS,\n \"Ohne Widerruf bleibt ein kompromittierter Zugang bis zum Ablauf gueltig.\"\n ),\n entitlements: capabilityFromPrefix(\n \"entitlements_\",\n \"Dieser Vertrag kennt keine Berechtigungs-Routen.\"\n ),\n invoicing: capabilityFromPrefix(\n \"invoices_\",\n \"Dieser Vertrag kennt keine Rechnungs-Routen.\"\n ),\n serverSideDryRun: {\n supported: false,\n operations: [],\n reason:\n \"orvello bietet keinen serverseitigen Probelauf fuer die Client-Verwaltung an \"\n + \"(`dryRun` gibt es nur in der Buchhaltung). Nebenwirkungsfrei pruefbar ist der \"\n + \"Weg trotzdem: `preflightOrvello` beweist Erreichbarkeit, Vertrag und Credential, \"\n + \"ohne zu schreiben — es beweist damit die Berechtigung, nicht das Ergebnis.\",\n },\n },\n };\n}\n","/**\n * Der Probelauf: \"wuerde dieser Aufruf heute klappen?\" — ohne ihn zu tun.\n *\n * Ein Verbindungs-Verwalter muss zwei Dinge auseinanderhalten koennen, die sonst\n * gern zusammenfallen: *darf ich* und *habe ich*. Eine Kante anzulegen erzeugt\n * echte Daten auf beiden Seiten; das ist ein freigegebener Schritt und kein\n * Nebenprodukt einer Pruefung. Trotzdem will man jederzeit — auch turnusmaessig,\n * auch ohne Anlass — wissen, ob der Weg noch traegt.\n *\n * Genau diese Luecke fuellt der Probelauf. Er geht denselben Weg wie der echte\n * Aufruf: dieselbe Basis-URL, dieselbe Credential-Bahn, derselbe Vertrag. Er\n * hoert nur vor dem Schreiben auf. Was er beweist, ist die **Berechtigung**, nicht\n * das **Ergebnis** — und dieser Unterschied steht in jedem Bericht, damit ihn\n * niemand ueberliest.\n *\n * ⭐ Jeder Schritt traegt seinen Grund. Ein `ok: false` ohne Satz ist genau die\n * schweigende Luecke, die aussieht wie Gesundheit.\n */\n\nimport { diagnoseOrvello, type OrvelloDiagnosis } from \"./diagnose.js\";\nimport {\n describeOperation,\n OrvelloOperationError,\n buildPath,\n type OrvelloAuthChannel,\n type OrvelloOperation,\n} from \"./operations.js\";\n\n/** Der oeffentliche Erreichbarkeits-Endpunkt, wie ihn der Vertrag fuehrt. */\nexport const HEALTH_PATH = describeOperation(\"app_info_health\")?.path ?? \"/app-info/health\";\n\nexport type PreflightStepName =\n | \"operation\"\n | \"path-parameters\"\n | \"request-shape\"\n | \"reachable\"\n | \"contract\"\n | \"credential-configured\"\n | \"credential-accepted\";\n\nexport type PreflightStep = {\n name: PreflightStepName;\n ok: boolean;\n /** Uebersprungen heisst: nicht gepruefft. Nie \"in Ordnung\". */\n skipped: boolean;\n /** Was geprueft wurde und was dabei herauskam — in Worten, nicht als Code. */\n detail: string;\n};\n\nexport type PreflightReport = {\n ok: boolean;\n operationId: string;\n method: string | null;\n /** Der Pfad, der wirklich gerufen wuerde — Platzhalter bereits gesetzt. */\n path: string | null;\n baseUrl: string | null;\n authChannel: OrvelloAuthChannel | null;\n /**\n * Immer `\"none\"`. Ein Probelauf schreibt nicht — das ist seine Zusage, nicht\n * eine Eigenschaft des Einzelfalls.\n */\n sideEffects: \"none\";\n /**\n * Ob der Dienst selbst einen serverseitigen Probelauf dieser Operation kennt.\n * `false` heisst: das hier ist eine Wegpruefung, keine Ergebnisvorschau.\n */\n serverSideDryRun: boolean;\n steps: PreflightStep[];\n problems: string[];\n checkedAt: string;\n};\n\n/**\n * Was der Probelauf vom Client braucht. Bewusst schmal gehalten, damit die\n * Pruefung nicht am Client haengt und einzeln testbar bleibt.\n */\nexport type PreflightHost = {\n resolveBaseUrl(): Promise<string>;\n fetchImpl(): typeof globalThis.fetch;\n /** Ist fuer diese Bahn ueberhaupt ein Credential hinterlegt? Ohne Netz. */\n hasCredentialFor(channel: OrvelloAuthChannel): Promise<boolean>;\n /**\n * Ein echter, ausschliesslich lesender Aufruf auf derselben Bahn.\n * Beweist, dass das Credential nicht nur da ist, sondern auch angenommen wird.\n */\n probeCredential(channel: OrvelloAuthChannel, signal?: AbortSignal): Promise<{ ok: boolean; detail: string }>;\n};\n\nexport type PreflightOptions = {\n params?: Record<string, unknown>;\n query?: Record<string, unknown>;\n body?: unknown;\n timeoutMs?: number;\n signal?: AbortSignal;\n /**\n * Den teuersten Schritt auslassen: kein echter Aufruf, nur die Frage, ob ein\n * Credential hinterlegt ist. Fuer Massenpruefungen ueber viele Kanten.\n */\n skipCredentialProbe?: boolean;\n};\n\nfunction step(name: PreflightStepName, ok: boolean, detail: string, skipped = false): PreflightStep {\n return { name, ok, skipped, detail };\n}\n\n/**\n * Prueft einen Aufrufweg, ohne ihn zu gehen.\n *\n * Die Reihenfolge ist Absicht: erst alles, was ohne Netz entschieden werden kann\n * (Vertrag, Parameter, Gestalt), dann die Erreichbarkeit, dann der Vertrag der\n * laufenden Gegenstelle, zuletzt das Credential. So nennt der Bericht bei einem\n * Fehlschlag die *frueheste* Ursache, statt einen Folgefehler zu melden.\n */\nexport async function preflightOrvello(\n host: PreflightHost,\n operationId: string,\n options: PreflightOptions = {}\n): Promise<PreflightReport> {\n const checkedAt = new Date().toISOString();\n const steps: PreflightStep[] = [];\n const problems: string[] = [];\n\n const report = (extra: Partial<PreflightReport>): PreflightReport => ({\n ok: problems.length === 0,\n operationId,\n method: null,\n path: null,\n baseUrl: null,\n authChannel: null,\n sideEffects: \"none\",\n serverSideDryRun: false,\n steps,\n problems,\n checkedAt,\n ...extra,\n });\n\n // 1 — Kennt der Vertrag diese Operation ueberhaupt?\n const operation: OrvelloOperation | null = describeOperation(operationId);\n if (!operation) {\n steps.push(\n step(\n \"operation\",\n false,\n `Der Vertrag, gegen den dieses SDK gebaut wurde, kennt \"${operationId}\" nicht. `\n + \"Entweder ist der Name falsch, oder das SDK ist aelter als der Dienst.\"\n )\n );\n problems.push(`Unbekannte Operation \"${operationId}\".`);\n return report({});\n }\n steps.push(\n step(\n \"operation\",\n true,\n `${operation.method} ${operation.path} (Auth laut Vertrag: ${operation.authType || \"keine Angabe\"} → Bahn \"${operation.channel}\").`\n )\n );\n\n // 2 — Sind die Platzhalter gefuellt? Ohne das ginge ein Pfad mit \":name\" ans Netz.\n let path: string | null = null;\n try {\n path = buildPath(operationId, options.params);\n steps.push(step(\"path-parameters\", true, `Gerufen wuerde: ${operation.method} ${path}`));\n } catch (error) {\n const detail = error instanceof OrvelloOperationError ? error.message : String(error);\n steps.push(step(\"path-parameters\", false, detail));\n problems.push(detail);\n return report({ method: operation.method, authChannel: operation.channel });\n }\n\n // 3 — Passt die Gestalt der Anfrage zu dem, was der Dienst validiert?\n const shapeProblems: string[] = [];\n if (operation.validated.body && options.body === undefined) {\n shapeProblems.push(\"Der Dienst validiert einen Body, es wurde aber keiner uebergeben.\");\n }\n if (!operation.validated.body && options.body !== undefined) {\n shapeProblems.push(\"Es wurde ein Body uebergeben, den diese Route nicht auswertet.\");\n }\n if (operation.validated.query && options.query === undefined) {\n shapeProblems.push(\n \"Die Route validiert Query-Parameter; ohne uebergebene Werte gelten allein die Voreinstellungen des Dienstes.\"\n );\n }\n if (shapeProblems.length === 0) {\n steps.push(step(\"request-shape\", true, \"Body- und Query-Erwartung des Vertrags sind erfuellt.\"));\n } else {\n // Bewusst kein `problem`: die Gestalt ist ein Hinweis, kein Beweis. Nur ein\n // fehlender Pflicht-Body ist hart — alles andere kann legitim sein.\n const hard = operation.validated.body && options.body === undefined;\n steps.push(step(\"request-shape\", !hard, shapeProblems.join(\" \")));\n if (hard) problems.push(shapeProblems[0] as string);\n }\n\n // 4 — Steht der Dienst?\n const baseUrl = await host.resolveBaseUrl().catch(() => null);\n if (!baseUrl) {\n steps.push(step(\"reachable\", false, \"Die Basis-URL des Dienstes konnte nicht aufgeloest werden.\"));\n problems.push(\"Basis-URL nicht aufloesbar.\");\n return report({ method: operation.method, path, authChannel: operation.channel });\n }\n\n const timeoutMs = options.timeoutMs ?? 8_000;\n const reachable = await probeReachable(host, baseUrl, timeoutMs, options.signal);\n steps.push(step(\"reachable\", reachable.ok, reachable.detail));\n if (!reachable.ok) {\n problems.push(reachable.detail);\n return report({ method: operation.method, path, baseUrl, authChannel: operation.channel });\n }\n\n // 5 — Spricht die laufende Gegenstelle den Vertrag, den dieses SDK kennt?\n const diagnosis: OrvelloDiagnosis = await diagnoseOrvello({\n baseUrl,\n fetch: host.fetchImpl(),\n timeoutMs,\n signal: options.signal,\n });\n if (diagnosis.contract.status === \"match\") {\n steps.push(step(\"contract\", true, `Vertrag stimmt ueberein (${diagnosis.contract.sdk.slice(0, 12)}).`));\n } else if (diagnosis.contract.status === \"drift\") {\n const detail = diagnosis.problems[0] ?? \"Vertrags-Abweichung zwischen SDK und Dienst.\";\n steps.push(step(\"contract\", false, detail));\n problems.push(detail);\n } else {\n // Unbekannt ist nicht gut und nicht schlecht — aber es ist nicht geprueft,\n // und genau so steht es im Bericht.\n steps.push(\n step(\n \"contract\",\n false,\n diagnosis.problems[0] ?? \"Der Vertrag der Gegenstelle konnte nicht ermittelt werden.\",\n true\n )\n );\n }\n\n // 6 — Ist fuer die von der Route verlangte Bahn ueberhaupt etwas hinterlegt?\n if (operation.channel === \"none\") {\n steps.push(step(\"credential-configured\", true, \"Die Route ist oeffentlich und braucht kein Credential.\", true));\n steps.push(step(\"credential-accepted\", true, \"Entfaellt: oeffentliche Route.\", true));\n return report({ method: operation.method, path, baseUrl, authChannel: operation.channel });\n }\n\n const configured = await host.hasCredentialFor(operation.channel);\n const channelName =\n operation.channel === \"api_key\"\n ? \"der Verwaltungs-Schluessel (Header `x-api-key`)\"\n : \"das Bearer-Credential (OAuth2-Client oder Token)\";\n steps.push(\n step(\n \"credential-configured\",\n configured,\n configured\n ? `${channelName} ist hinterlegt.`\n : `${channelName} fehlt. Diese Route ist ohne ihn nicht aufrufbar.`\n )\n );\n if (!configured) {\n problems.push(`Kein Credential fuer die Bahn \"${operation.channel}\" hinterlegt.`);\n return report({ method: operation.method, path, baseUrl, authChannel: operation.channel });\n }\n\n // 7 — Und wird es auch angenommen? Ein lesender Aufruf, kein schreibender.\n if (options.skipCredentialProbe) {\n steps.push(\n step(\"credential-accepted\", false, \"Auf Wunsch uebersprungen — hinterlegt ist nicht angenommen.\", true)\n );\n return report({ method: operation.method, path, baseUrl, authChannel: operation.channel });\n }\n\n const accepted = await host.probeCredential(operation.channel, options.signal);\n steps.push(step(\"credential-accepted\", accepted.ok, accepted.detail));\n if (!accepted.ok) problems.push(accepted.detail);\n\n return report({ method: operation.method, path, baseUrl, authChannel: operation.channel });\n}\n\nasync function probeReachable(\n host: PreflightHost,\n baseUrl: string,\n timeoutMs: number,\n signal?: AbortSignal\n): Promise<{ ok: boolean; detail: string }> {\n const doFetch = host.fetchImpl();\n const controller = new AbortController();\n const onAbort = () => controller.abort(signal?.reason);\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n if (signal?.aborted) controller.abort(signal.reason);\n const timer = setTimeout(() => controller.abort(new Error(`Reachability probe timed out after ${timeoutMs}ms`)), timeoutMs);\n\n const started = Date.now();\n try {\n // ⭐ Die Vertrags-Route, nicht ein geratener Pfad. `/health` gibt es bei\n // node-bill, aber es steht in keinem Vertrag -- eine andere orvello-Instanz\n // muss es nicht haben, und ein 404 saehe dann aus wie \"Dienst tot\".\n // `app_info_health` ist die Operation, die `capabilities()` als\n // Erreichbarkeits-Weg ausweist; beide zeigen damit auf dasselbe.\n const response = await doFetch(`${baseUrl}${HEALTH_PATH}`, {\n method: \"GET\",\n headers: { accept: \"application/json\" },\n signal: controller.signal,\n });\n const took = Date.now() - started;\n // Auch eine 4xx-Antwort beweist, dass jemand zuhoert. Erreichbarkeit ist\n // Transport, nicht Berechtigung — die Trennung ist der ganze Punkt.\n return {\n ok: response.status < 500,\n detail:\n response.status < 500\n ? `${baseUrl} antwortet (${response.status}, ${took} ms).`\n : `${baseUrl} antwortet mit ${response.status} — der Dienst laeuft, aber nicht gesund.`,\n };\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n return { ok: false, detail: `${baseUrl} ist nicht erreichbar: ${detail}` };\n } finally {\n clearTimeout(timer);\n signal?.removeEventListener(\"abort\", onAbort);\n }\n}\n","import type {\n InvoicesCreateExternalBody,\n InvoicesPreviewExternalBody,\n InvoicesPreviewExternalResponseData,\n InvoicesCreateExternalResponseData,\n InvoicesGetByIdExternalResponseData,\n InvoicesPaymentEvidenceExternalResponseData,\n InvoicesPaymentEventsExternalResponseData,\n InvoicesPaymentEventsExternalQuery,\n InvoicesPaymentInstructionsExternalResponseData,\n InvoicesSearchExternalQuery,\n InvoicesSearchExternalResponseData,\n InvoicesPendingExternalResponseData,\n InvoicesOverdueExternalResponseData,\n InvoicesStatusPolicyExternalResponseData,\n InvoicesUpdateStatusExternalBody,\n InvoicesUpdateStatusExternalResponseData,\n InvoicesCreditNotePreviewExternalBody,\n InvoicesCreditNotePreviewExternalResponseData,\n InvoicesCreditNoteIssueExternalBody,\n InvoicesCreditNoteIssueExternalResponseData,\n InvoicesDeleteExternalResponseData,\n InvoicesSendEmailExternalBody,\n InvoicesSendEmailExternalResponseData,\n} from \"./generated/api/features/routes.invoices_external.js\";\n\nimport type {\n CustomerCompaniesSearchExternalQuery,\n CustomerCompaniesSearchExternalResponseData,\n CustomerCompaniesGetByIdExternalResponseData,\n CustomerCompaniesCreateExternalBody,\n CustomerCompaniesCreateExternalResponseData,\n CustomerCompaniesUpdateExternalBody,\n CustomerCompaniesUpdateExternalResponseData,\n CustomerCompaniesDeleteExternalResponseData,\n} from \"./generated/api/features/routes.customer_companies_external.js\";\n\nimport type {\n ManagingCompaniesCurrentExternalResponseData,\n} from \"./generated/api/features/routes.managing_companies_external.js\";\n\nimport type {\n DunningSuggestionsExternalQuery,\n DunningSuggestionsExternalResponseData,\n DunningPreviewExternalBody,\n DunningPreviewExternalResponseData,\n DunningIssueExternalBody,\n DunningIssueExternalResponseData,\n DunningGetSettingsExternalResponseData,\n DunningUpdateSettingsExternalBody,\n DunningUpdateSettingsExternalResponseData,\n} from \"./generated/api/features/routes.dunning_external.js\";\n\nimport type {\n BookkeepingRevenuesCreateExternalBody,\n BookkeepingRevenuesCreateExternalResponseData,\n BookkeepingRevenuesInvoiceAdjustmentExternalBody,\n BookkeepingRevenuesInvoiceAdjustmentExternalResponseData,\n BookkeepingExpensesCreateExternalBody,\n BookkeepingExpensesCreateExternalResponseData,\n BookkeepingPaymentsListAccountsExternalQuery,\n BookkeepingPaymentsListAccountsExternalResponseData,\n BookkeepingPaymentsCreateManualExternalBody,\n BookkeepingPaymentsCreateManualExternalResponseData,\n BookkeepingPaymentsSettleInvoiceExternalBody,\n BookkeepingPaymentsSettleInvoiceExternalResponseData,\n} from \"./generated/api/features/routes.bookkeeping.js\";\n\nimport type {\n UsersGetByExternalUserIdResponseData,\n UsersUpdateExternalBody,\n UsersUpdateExternalResponseData,\n UsersDeleteExternalResponseData,\n} from \"./generated/api/base/routes.users.js\";\n\nimport type {\n Oauth2ExternalClientsListQuery,\n Oauth2ExternalClientsListResponseData,\n Oauth2ExternalClientsGetResponseData,\n Oauth2ExternalClientsCreateBody,\n Oauth2ExternalClientsCreateResponseData,\n Oauth2ExternalClientsUpdateBody,\n Oauth2ExternalClientsUpdateResponseData,\n Oauth2ExternalClientsRotateBody,\n Oauth2ExternalClientsRotateResponseData,\n Oauth2ExternalClientsRetireResponseData,\n Oauth2ExternalClientsRollbackResponseData,\n Oauth2ExternalClientsRevokeResponseData,\n Oauth2ExternalClientsDeleteResponseData,\n} from \"./generated/api/index.js\";\n\nimport { diagnoseOrvello, type BaseUrlProvider, type OrvelloDiagnosis } from \"./diagnose.js\";\nimport {\n type ExpenseReceiptUpload,\n type BankAccountDetails,\n mapPaymentAccountToBankDetails,\n} from \"./helpers.js\";\nimport {\n buildPath,\n describeOperation,\n resolveOperation,\n OrvelloOperationError,\n type OrvelloAuthChannel,\n} from \"./operations.js\";\nimport { orvelloCapabilities, type OrvelloCapabilities } from \"./capabilities.js\";\nimport {\n preflightOrvello,\n HEALTH_PATH,\n type PreflightHost,\n type PreflightOptions,\n type PreflightReport,\n} from \"./preflight.js\";\n\nexport type AuthProvider =\n | string\n | (() => string | Promise<string>)\n | {\n apiKey: string;\n }\n | {\n clientId: string;\n clientSecret: string;\n scope?: string;\n tokenUrl?: string;\n };\n\n/** Ein Wert, der sich auch erst beim Aufruf ergeben darf. */\nexport type ValueProvider<T> = T | (() => T | Promise<T>);\n\nexport type HeadersProvider = ValueProvider<Record<string, string>>;\n\nexport interface CircuitBreakerConfig {\n /** Wie viele Fehlschlaege in Folge den Kreis oeffnen. */\n threshold?: number;\n /** Wie lange danach nicht erneut versucht wird, bevor ein Versuch den Kreis prueft. */\n cooldownMs?: number;\n}\n\nexport interface OrvelloClientConfig {\n /**\n * Base URL of the orvello accounting/invoicing service this client talks to.\n *\n * The SDK deliberately ships **no** baked-in default endpoint: every instance\n * resolves its target platform explicitly. Pass `baseUrl`, or the same value\n * via the `ORVELLO_URL` environment variable. Without either the constructor\n * throws rather than silently aiming at a fixed host.\n */\n baseUrl?: BaseUrlProvider;\n /**\n * Das Credential der **Geschaeftsrouten** — ein OAuth2-Client\n * (client_credentials) oder ein fertiger Token. Geht als\n * `Authorization: Bearer` mit. Env: `ORVELLO_OAUTH_CLIENT_ID` /\n * `ORVELLO_OAUTH_CLIENT_SECRET` / `ORVELLO_OAUTH_SCOPE`, ersatzweise\n * `ORVELLO_API_KEY`.\n */\n auth?: AuthProvider;\n /**\n * Das Credential der **Verwaltungsrouten** (`/oauth/clients/external/*`), also\n * der Header `x-api-key`. Env: `ORVELLO_MANAGEMENT_API_KEY`.\n *\n * ⭐ Das ist bewusst ein zweiter, eigener Wert und keine zweite Schreibweise\n * desselben. Die Geschaeftsrouten gehoeren der rufenden App, die\n * Verwaltungsrouten der Kante zwischen Verwalter und Dienst — wer beides in ein\n * Feld legt, verliert genau die Trennung, die eine Rotation je Kante moeglich\n * macht. Ein Client, der nur Rechnungen schreibt, laesst diesen Wert weg und\n * kann dann auch keine Zugaenge ausstellen. Das ist erwuenscht.\n */\n managementApiKey?: ValueProvider<string>;\n /**\n * Zusaetzliche Kopfzeilen fuer jede Anfrage an den Dienst: Geschaeftsaufrufe,\n * Token-Tausch, Gesundheits- und Vertragsprobe, Preflight. Typischer Fall ist der\n * Ausweis fuer eine Kante davor (Cloudflare Access), ohne den keiner dieser Wege\n * durchkommt. Wird vor der Auth-Kopfzeile angewandt, kann sie also nicht\n * versehentlich ueberschreiben. Andere Hosts (etwa ein vorsignierter\n * Speicher-Link) bekommen sie nicht.\n */\n headers?: HeadersProvider;\n fetch?: typeof globalThis.fetch;\n timeoutMs?: number;\n maxRetries?: number;\n retryBaseDelayMs?: number;\n /**\n * Der Sicherungsautomat. `false` schaltet ihn ab.\n *\n * Wiederholungen helfen gegen einen Aussetzer; sie helfen nicht, wenn die\n * Gegenstelle weg ist — dann verlaengern sie nur jede einzelne Anfrage um das\n * volle Zeitlimit mal Versuche. Der Automat beendet diesen Zustand schnell und\n * laut, statt langsam und leise.\n */\n circuitBreaker?: CircuitBreakerConfig | false;\n}\n\nexport interface RequestOptions {\n query?: Record<string, unknown>;\n headers?: Record<string, string>;\n idempotencyKey?: string;\n rawResponse?: boolean;\n timeoutMs?: number;\n maxRetries?: number;\n signal?: AbortSignal;\n /**\n * Die Credential-Bahn ausdruecklich setzen. Normalerweise unnoetig: der Client\n * liest sie aus dem Vertrag der angesprochenen Route. Nur fuer Pfade gedacht,\n * die der mitgelieferte Vertrag (noch) nicht kennt.\n */\n authChannel?: OrvelloAuthChannel;\n}\n\n/** Wie {@link RequestOptions}, aber fuer den Aufruf ueber eine `operationId`. */\nexport interface CallOptions extends RequestOptions {\n params?: Record<string, unknown>;\n body?: unknown;\n}\n\nexport type OrvelloHealth = {\n /** Antwortet der Dienst ueberhaupt? */\n available: boolean;\n responseTimeMs: number;\n /**\n * Wurde ein Credential wirklich angenommen? `null` heisst: nicht geprueft,\n * weil keines hinterlegt ist — nie \"in Ordnung\".\n */\n authenticated: boolean | null;\n error?: string;\n};\n\nexport type CircuitBreakerState = {\n open: boolean;\n consecutiveFailures: number;\n lastFailureAt: number | null;\n threshold: number;\n cooldownMs: number;\n};\n\nexport class OrvelloApiError extends Error {\n constructor(\n public readonly status: number,\n public readonly statusText: string,\n public readonly endpoint: string,\n public readonly body: unknown,\n message?: string\n ) {\n super(message || `orvello request to ${endpoint} failed with status ${status}: ${statusText}`);\n this.name = \"OrvelloApiError\";\n }\n\n /** Readable alias for the primary `status` field. */\n public get statusCode(): number {\n return this.status;\n }\n\n /** Readable alias for the raw `body` payload. */\n public get responseBody(): unknown {\n return this.body;\n }\n}\n\nexport class OrvelloClient {\n public readonly baseUrl: BaseUrlProvider;\n private readonly auth?: AuthProvider;\n private readonly managementApiKey?: ValueProvider<string>;\n private readonly extraHeaders?: HeadersProvider;\n private readonly doFetch: typeof globalThis.fetch;\n private readonly timeoutMs: number;\n private readonly maxRetries: number;\n private readonly retryBaseDelayMs: number;\n private cachedOAuthToken: { token: string; expiresAt: number } | null = null;\n\n private readonly breakerThreshold: number;\n private readonly breakerCooldownMs: number;\n private breakerFailures = 0;\n private breakerLastFailureAt: number | null = null;\n\n // Cached default bank account (5 minutes TTL)\n private _bankAccountCache: BankAccountDetails | null = null;\n private _bankAccountCacheTime = 0;\n\n constructor(config: OrvelloClientConfig = {}) {\n const baseUrl = config.baseUrl ?? this.envBaseUrl();\n if (!baseUrl) {\n throw new Error(\n \"OrvelloClient requires a target platform: pass { baseUrl } or set the ORVELLO_URL \" +\n \"environment variable. The SDK deliberately ships no baked-in default endpoint.\"\n );\n }\n this.baseUrl = baseUrl;\n\n if (config.auth) {\n this.auth = config.auth;\n } else {\n this.auth = this.envAuth();\n }\n\n this.managementApiKey = config.managementApiKey ?? this.envManagementApiKey();\n this.extraHeaders = config.headers;\n\n const rawFetch = config.fetch || globalThis.fetch;\n // Jeder Weg zum Dienst geht durch diese eine Stelle, auch Token-Tausch und Proben.\n // Vorher bekam nur der Geschaeftsaufruf die Kopfzeilen, und hinter Cloudflare Access\n // waere der Token-Tausch davor an der Kante abgeprallt.\n this.doFetch = typeof rawFetch === \"function\"\n ? ((input, init) => this.fetchWithServiceHeaders(rawFetch, input, init)) as typeof globalThis.fetch\n : rawFetch;\n this.timeoutMs = config.timeoutMs ?? 15_000;\n this.maxRetries = config.maxRetries ?? 3;\n this.retryBaseDelayMs = config.retryBaseDelayMs ?? 500;\n\n // `false` heisst wirklich aus: Schwelle 0 wird nie erreicht.\n if (config.circuitBreaker === false) {\n this.breakerThreshold = Number.POSITIVE_INFINITY;\n this.breakerCooldownMs = 0;\n } else {\n this.breakerThreshold = config.circuitBreaker?.threshold ?? 5;\n this.breakerCooldownMs = config.circuitBreaker?.cooldownMs ?? 60_000;\n }\n }\n\n private envBaseUrl(): BaseUrlProvider | undefined {\n if (typeof process === \"undefined\" || !process?.env) return undefined;\n const url = process.env.ORVELLO_URL;\n return url ? url : undefined;\n }\n\n private envAuth(): AuthProvider | undefined {\n if (typeof process === \"undefined\" || !process?.env) return undefined;\n const clientId = process.env.ORVELLO_OAUTH_CLIENT_ID;\n const clientSecret = process.env.ORVELLO_OAUTH_CLIENT_SECRET;\n const apiKey = process.env.ORVELLO_API_KEY;\n const scope = process.env.ORVELLO_OAUTH_SCOPE;\n\n if (clientId && clientSecret && clientId !== \"todo\" && clientSecret !== \"todo\") {\n return { clientId, clientSecret, ...(scope ? { scope } : {}) };\n }\n if (apiKey) return { apiKey };\n return undefined;\n }\n\n private envManagementApiKey(): string | undefined {\n if (typeof process === \"undefined\" || !process?.env) return undefined;\n const key = process.env.ORVELLO_MANAGEMENT_API_KEY;\n return key && key !== \"todo\" ? key : undefined;\n }\n\n public async resolveBaseUrl(): Promise<string> {\n const val = typeof this.baseUrl === \"function\" ? await this.baseUrl() : this.baseUrl;\n return val.replace(/\\/+$/, \"\");\n }\n\n /**\n * Haengt die konfigurierten Kopfzeilen an, wenn die Anfrage an den Dienst selbst geht\n * (Basis-Adresse oder eigener Token-Endpunkt). Schon gesetzte Kopfzeilen bleiben.\n */\n private async fetchWithServiceHeaders(\n rawFetch: typeof globalThis.fetch,\n input: Parameters<typeof globalThis.fetch>[0],\n init?: Parameters<typeof globalThis.fetch>[1],\n ): Promise<Response> {\n const configured = await OrvelloClient.resolveValue(this.extraHeaders);\n if (!configured || Object.keys(configured).length === 0) return rawFetch(input, init);\n\n const target = typeof input === \"string\" ? input : input instanceof URL ? input.href : input.url;\n if (!(await this.isServiceOrigin(target))) return rawFetch(input, init);\n\n const headers = new Headers(init?.headers ?? (typeof input === \"object\" && \"headers\" in input ? input.headers : undefined));\n for (const [name, value] of Object.entries(configured)) {\n if (!headers.has(name)) headers.set(name, value);\n }\n return rawFetch(input, { ...init, headers });\n }\n\n private async isServiceOrigin(target: string): Promise<boolean> {\n let origin: string;\n try {\n origin = new URL(target).origin;\n } catch {\n return false;\n }\n const own: string[] = [];\n try {\n own.push(new URL(await this.resolveBaseUrl()).origin);\n } catch {\n // Ohne aufloesbare Basis-Adresse gibt es keinen Dienst, dem die Kopfzeilen gehoeren.\n }\n if (typeof this.auth === \"object\" && \"tokenUrl\" in this.auth && this.auth.tokenUrl) {\n try {\n own.push(new URL(this.auth.tokenUrl).origin);\n } catch {\n // Ein kaputter Token-Endpunkt scheitert gleich beim Aufruf mit eigener Meldung.\n }\n }\n return own.includes(origin);\n }\n\n private static async resolveValue<T>(provider: ValueProvider<T> | undefined): Promise<T | undefined> {\n if (provider === undefined) return undefined;\n return typeof provider === \"function\" ? await (provider as () => T | Promise<T>)() : provider;\n }\n\n /**\n * Der Verwaltungs-Schluessel, sofern hinterlegt.\n *\n * Ein leerer String zaehlt als \"nicht hinterlegt\". Sonst waere die haeufigste\n * Fehlkonfiguration — eine gesetzte, aber leere Umgebungsvariable — von einem\n * echten Wert nicht zu unterscheiden, und der Fehler kaeme erst als `403` vom\n * Dienst zurueck.\n */\n private async resolveManagementApiKey(): Promise<string | undefined> {\n const key = (await OrvelloClient.resolveValue(this.managementApiKey))?.trim();\n return key ? key : undefined;\n }\n\n private async getAuthHeader(): Promise<string | null> {\n if (!this.auth) return null;\n\n if (typeof this.auth === \"string\") {\n return this.auth.startsWith(\"Bearer \") ? this.auth : `Bearer ${this.auth}`;\n }\n\n if (typeof this.auth === \"function\") {\n const token = await this.auth();\n return token.startsWith(\"Bearer \") ? token : `Bearer ${token}`;\n }\n\n if (typeof this.auth === \"object\" && \"apiKey\" in this.auth && typeof this.auth.apiKey === \"string\") {\n const key = this.auth.apiKey;\n return key.startsWith(\"Bearer \") ? key : `Bearer ${key}`;\n }\n\n // OAuth2 client_credentials flow\n if (\n typeof this.auth === \"object\" &&\n \"clientId\" in this.auth &&\n \"clientSecret\" in this.auth\n ) {\n const now = Date.now();\n if (this.cachedOAuthToken && this.cachedOAuthToken.expiresAt > now + 30_000) {\n return `Bearer ${this.cachedOAuthToken.token}`;\n }\n\n const baseUrl = await this.resolveBaseUrl();\n const tokenEndpoint = this.auth.tokenUrl || `${baseUrl}/oauth/token`;\n const credentials = typeof Buffer !== \"undefined\"\n ? Buffer.from(`${this.auth.clientId}:${this.auth.clientSecret}`).toString(\"base64\")\n : globalThis.btoa(`${this.auth.clientId}:${this.auth.clientSecret}`);\n\n const bodyParams = new URLSearchParams({\n grant_type: \"client_credentials\",\n client_id: this.auth.clientId,\n client_secret: this.auth.clientSecret,\n });\n if (this.auth.scope) {\n bodyParams.set(\"scope\", this.auth.scope);\n }\n\n const resp = await this.doFetch(tokenEndpoint, {\n method: \"POST\",\n headers: {\n \"Authorization\": `Basic ${credentials}`,\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n body: bodyParams.toString(),\n });\n\n if (!resp.ok) {\n let errBody: unknown;\n try {\n errBody = await resp.json();\n } catch {\n errBody = await resp.text().catch(() => \"\");\n }\n throw new OrvelloApiError(\n resp.status,\n resp.statusText,\n tokenEndpoint,\n errBody,\n \"Failed to obtain OAuth2 token from the orvello service\" );\n }\n\n const data = (await resp.json()) as { access_token: string; expires_in?: number };\n const expiresIn = data.expires_in || 3600;\n this.cachedOAuthToken = {\n token: data.access_token,\n expiresAt: now + expiresIn * 1000,\n };\n\n return `Bearer ${data.access_token}`;\n }\n\n return null;\n }\n\n private isRetriable(status: number | null, error: unknown): boolean {\n if (status !== null) {\n // 5xx = server error, 429 = rate limit\n return status >= 500 || status === 429;\n }\n if (error instanceof Error) {\n const msg = error.message.toLowerCase();\n return (\n error.name === \"AbortError\" ||\n error.name === \"TimeoutError\" ||\n msg.includes(\"fetch failed\") ||\n msg.includes(\"network\") ||\n msg.includes(\"econnrefused\") ||\n msg.includes(\"etimedout\") ||\n msg.includes(\"enotfound\") ||\n msg.includes(\"socket\")\n );\n }\n return false;\n }\n\n public async request<T = unknown>(\n path: string,\n options: RequestInit & RequestOptions = {}\n ): Promise<T> {\n const maxRetries = options.maxRetries ?? this.maxRetries;\n const timeoutMs = options.timeoutMs ?? this.timeoutMs;\n const baseUrl = await this.resolveBaseUrl();\n const cleanPath = path.startsWith(\"/\") ? path : `/${path}`;\n const url = new URL(`${baseUrl}${cleanPath}`);\n\n // ⭐ Die Route bestimmt das Credential, nicht der Aufrufer. Wer den Pfad von\n // Hand baut, bekommt dieselbe Entscheidung wie die getippten Methoden — der\n // Vertrag ist fuer beide dieselbe Quelle.\n const method = (options.method ?? \"GET\").toUpperCase();\n const authChannel: OrvelloAuthChannel =\n options.authChannel ?? resolveOperation(method, cleanPath)?.channel ?? \"bearer\";\n\n this.assertCircuitClosed(cleanPath);\n\n if (options.query) {\n for (const [k, v] of Object.entries(options.query)) {\n if (v !== undefined && v !== null) {\n url.searchParams.set(k, String(v));\n }\n }\n }\n\n let lastError: unknown;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n const controller = new AbortController();\n const onAbort = () => controller.abort(options.signal?.reason);\n options.signal?.addEventListener(\"abort\", onAbort, { once: true });\n if (options.signal?.aborted) controller.abort(options.signal.reason);\n\n const timer = setTimeout(\n () => controller.abort(new Error(`Request timed out after ${timeoutMs}ms`)),\n timeoutMs\n );\n\n try {\n const headers = new Headers(options.headers);\n\n // Erst die mitgegebenen Kopfzeilen, dann die Auth-Kopfzeile: so kann eine\n // allgemeine Konfiguration das Credential nicht versehentlich verdraengen.\n const configured = await OrvelloClient.resolveValue(this.extraHeaders);\n if (configured) {\n for (const [name, value] of Object.entries(configured)) {\n if (!headers.has(name)) headers.set(name, value);\n }\n }\n\n if (authChannel === \"bearer\") {\n const authHeader = await this.getAuthHeader();\n if (authHeader && !headers.has(\"Authorization\")) {\n headers.set(\"Authorization\", authHeader);\n }\n } else if (authChannel === \"api_key\") {\n const key = await this.resolveManagementApiKey();\n if (!key) {\n // Ohne diesen Wert antwortet der Dienst mit `403 Forbidden: Invalid\n // API key` — einer Meldung, die nach einem falschen Schluessel\n // aussieht statt nach einem fehlenden. Der Unterschied kostet sonst\n // eine Suche an der falschen Stelle.\n throw new OrvelloApiError(\n 0,\n \"missing management credential\",\n cleanPath,\n null,\n `${method} ${cleanPath} is a management route and needs the \\`x-api-key\\` credential. `\n + \"Pass `managementApiKey` to createOrvelloClient() or set ORVELLO_MANAGEMENT_API_KEY. \"\n + \"It is a different value from the OAuth2 client used for the business routes.\"\n );\n }\n if (!headers.has(\"x-api-key\")) headers.set(\"x-api-key\", key);\n }\n if (options.idempotencyKey && !headers.has(\"Idempotency-Key\")) {\n headers.set(\"Idempotency-Key\", options.idempotencyKey);\n }\n if (options.body && typeof options.body === \"string\" && !headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json\");\n }\n\n const resp = await this.doFetch(url.toString(), {\n ...options,\n headers,\n signal: controller.signal,\n });\n\n if (!resp.ok) {\n // Nur die Bearer-Bahn hat einen zwischengespeicherten Token, der\n // abgelaufen sein koennte. Ein `401` auf der Schluessel-Bahn hat eine\n // andere Ursache, und den Token dafuer wegzuwerfen wuerde nur den\n // naechsten Geschaeftsaufruf unnoetig verlangsamen.\n if (resp.status === 401 && authChannel === \"bearer\") {\n const hadCachedToken = Boolean(this.cachedOAuthToken);\n this.cachedOAuthToken = null;\n // If we used a cached token and it was rejected with 401, retry once with fresh token\n if (hadCachedToken && attempt === 0 && attempt < maxRetries) {\n continue;\n }\n }\n\n let errBody: unknown;\n try {\n errBody = await resp.json();\n } catch {\n errBody = await resp.text().catch(() => null);\n }\n\n const apiMessage =\n errBody && typeof errBody === \"object\" && \"message\" in errBody && typeof (errBody as { message: unknown }).message === \"string\"\n ? (errBody as { message: string }).message\n : undefined;\n\n const error = new OrvelloApiError(resp.status, resp.statusText, cleanPath, errBody, apiMessage);\n\n // ⭐ Eine `403` ist kein Ausfall. Der Dienst hat geantwortet, er hat nur\n // nein gesagt — der Sicherungsautomat schuetzt gegen eine tote\n // Gegenstelle, nicht gegen ein falsches Credential. Wer beides\n // zusammenwirft, schaltet sich nach fuenf Berechtigungsfehlern selbst ab.\n if (resp.status >= 500) this.recordFailure();\n else this.recordSuccess();\n\n if (!this.isRetriable(resp.status, error) || attempt >= maxRetries) {\n throw error;\n }\n lastError = error;\n } else {\n this.recordSuccess();\n // Success response\n const contentType = resp.headers.get(\"content-type\") || \"\";\n\n if (options.rawResponse || contentType.includes(\"application/pdf\")) {\n return (await resp.blob()) as unknown as T;\n }\n\n if (contentType.includes(\"application/json\")) {\n const json = await resp.json();\n\n // Check if response is wrapped in ApiEnvelope ({ success, data, message })\n if (json && typeof json === \"object\" && \"success\" in json) {\n const env = json as { success: boolean; data?: unknown; message?: string };\n if (env.success === false) {\n throw new OrvelloApiError(resp.status, resp.statusText, cleanPath, json, env.message || \"API returned success=false\");\n }\n return env.data as T;\n }\n\n return json as T;\n }\n\n return (await resp.text()) as unknown as T;\n }\n } catch (err) {\n lastError = err;\n if (err instanceof OrvelloApiError && !this.isRetriable(err.status, err)) {\n throw err;\n }\n // Bis hierher kommt nur, was kein Antwort-Fehler ist: Zeitablauf,\n // Verbindungsabbruch, Namensaufloesung. Das sind die Faelle, gegen die\n // der Automat gebaut ist.\n if (!(err instanceof OrvelloApiError)) this.recordFailure();\n if (!this.isRetriable(null, err) || attempt >= maxRetries) {\n throw err;\n }\n } finally {\n clearTimeout(timer);\n options.signal?.removeEventListener(\"abort\", onAbort);\n }\n\n // Retry backoff delay: base * 2^attempt + jitter\n const jitter = Math.random() * 100;\n const delay = this.retryBaseDelayMs * Math.pow(2, attempt) + jitter;\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n\n throw lastError;\n }\n\n // ── Sicherungsautomat ────────────────────────────────────────────────────\n\n private recordSuccess(): void {\n this.breakerFailures = 0;\n this.breakerLastFailureAt = null;\n }\n\n private recordFailure(): void {\n this.breakerFailures++;\n this.breakerLastFailureAt = Date.now();\n }\n\n /**\n * Ist der Dienst nach aktuellem Wissen ansprechbar?\n *\n * Antwortet ohne Netzzugriff aus dem Zustand des Automaten. Nach Ablauf der\n * Abkuehlzeit gilt er wieder als ansprechbar — der naechste echte Aufruf\n * entscheidet dann, ob das stimmt.\n */\n public isAvailable(): boolean {\n if (this.breakerFailures < this.breakerThreshold) return true;\n if (this.breakerLastFailureAt === null) return true;\n return Date.now() - this.breakerLastFailureAt > this.breakerCooldownMs;\n }\n\n /** Der Zustand des Automaten, unverfaelscht — fuer Diagnose-Oberflaechen. */\n public circuitState(): CircuitBreakerState {\n return {\n open: !this.isAvailable(),\n consecutiveFailures: this.breakerFailures,\n lastFailureAt: this.breakerLastFailureAt,\n threshold: this.breakerThreshold,\n cooldownMs: this.breakerCooldownMs,\n };\n }\n\n /** Den Automaten von Hand schliessen, etwa nach einer behobenen Stoerung. */\n public resetCircuit(): void {\n this.recordSuccess();\n }\n\n private assertCircuitClosed(path: string): void {\n if (this.isAvailable()) return;\n const waited = this.breakerLastFailureAt ? Date.now() - this.breakerLastFailureAt : 0;\n const remaining = Math.max(0, this.breakerCooldownMs - waited);\n throw new OrvelloApiError(\n 0,\n \"circuit open\",\n path,\n null,\n `orvello is not answering: ${this.breakerFailures} consecutive transport failures. `\n + `Not retrying for another ${Math.ceil(remaining / 1000)}s.`\n );\n }\n\n // ── Vertragsgetriebener Aufruf ───────────────────────────────────────────\n\n /**\n * Eine Operation des Vertrags ueber ihre `operationId` aufrufen.\n *\n * Methode, Pfad und Credential-Bahn kommen aus dem Vertrag; der Aufrufer gibt\n * nur die Werte. Das ist der Weg fuer alles, wofuer es keine getippte Methode\n * gibt — und der Weg, der bei einer neuen Route sofort mitwaechst, statt auf\n * eine Handarbeit in diesem Client zu warten.\n *\n * Der Rueckgabetyp ist bewusst offen: die genauen Typen je Operation stehen im\n * Unterpfad `@orvello/sdk/contract` und werden hier als Typ-Argument gesetzt.\n * Ein `operationId`, den der Vertrag nicht kennt, wirft sofort — nicht erst,\n * wenn der Dienst mit 404 antwortet.\n */\n public async call<T = unknown>(operationId: string, options: CallOptions = {}): Promise<T> {\n const operation = describeOperation(operationId);\n if (!operation) {\n throw new OrvelloOperationError(\n `Unknown orvello operation \"${operationId}\". It is not part of the contract this SDK was built against `\n + `(@orvello/sdk speaks ${orvelloCapabilities().operationCount} operations).`,\n operationId\n );\n }\n\n const { params, body, ...rest } = options;\n const path = buildPath(operationId, params);\n\n return this.request<T>(path, {\n ...rest,\n method: operation.method,\n authChannel: rest.authChannel ?? operation.channel,\n ...(body === undefined ? {} : { body: JSON.stringify(body) }),\n });\n }\n\n // ── Zustand und Faehigkeiten ─────────────────────────────────────────────\n\n /**\n * Steht der Dienst, und wird unser Credential angenommen?\n *\n * ⭐ `available` und `authenticated` sind zwei Fragen, und der Bericht haelt sie\n * auseinander. Ein Dienst, der laeuft, aber unser Credential ablehnt, ist nicht\n * \"verfuegbar\" im Sinne dessen, der ihn benutzen will — und ein `authenticated:\n * null` heisst \"nicht gefragt\", nie \"in Ordnung\".\n */\n public async checkHealth(options: { timeoutMs?: number; signal?: AbortSignal } = {}): Promise<OrvelloHealth> {\n const started = Date.now();\n const timeoutMs = options.timeoutMs ?? 8_000;\n\n let baseUrl: string;\n try {\n baseUrl = await this.resolveBaseUrl();\n } catch (error) {\n return {\n available: false,\n responseTimeMs: Date.now() - started,\n authenticated: null,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n\n const controller = new AbortController();\n const onAbort = () => controller.abort(options.signal?.reason);\n options.signal?.addEventListener(\"abort\", onAbort, { once: true });\n if (options.signal?.aborted) controller.abort(options.signal.reason);\n const timer = setTimeout(() => controller.abort(new Error(`Health check timed out after ${timeoutMs}ms`)), timeoutMs);\n\n try {\n const response = await this.doFetch(`${baseUrl}${HEALTH_PATH}`, {\n method: \"GET\",\n headers: { accept: \"application/json\" },\n signal: controller.signal,\n });\n if (response.status >= 500) {\n this.recordFailure();\n return {\n available: false,\n responseTimeMs: Date.now() - started,\n authenticated: null,\n error: `orvello answered ${response.status} on ${HEALTH_PATH}`,\n };\n }\n this.recordSuccess();\n } catch (error) {\n this.recordFailure();\n return {\n available: false,\n responseTimeMs: Date.now() - started,\n authenticated: null,\n error: error instanceof Error ? error.message : String(error),\n };\n } finally {\n clearTimeout(timer);\n options.signal?.removeEventListener(\"abort\", onAbort);\n }\n\n if (!this.auth) {\n return { available: true, responseTimeMs: Date.now() - started, authenticated: null };\n }\n\n try {\n // Schon das Holen des Tokens ist der Beweis: node-bill prueft dabei Kennung\n // und Geheimnis. Ein anschliessender Leseaufruf wuerde zusaetzlich Scopes\n // verlangen, die nicht jeder Client hat — und ein fehlender Scope ist kein\n // Auth-Fehler.\n const header = await this.getAuthHeader();\n return {\n available: true,\n responseTimeMs: Date.now() - started,\n authenticated: Boolean(header),\n };\n } catch (error) {\n return {\n available: true,\n responseTimeMs: Date.now() - started,\n authenticated: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n }\n\n /** Was der Vertrag hergibt — ohne Netz, ohne Credential. */\n public capabilities(): OrvelloCapabilities {\n return orvelloCapabilities();\n }\n\n /** Spricht die laufende Gegenstelle denselben Vertrag wie dieses SDK? */\n public async diagnose(options: { timeoutMs?: number; signal?: AbortSignal } = {}): Promise<OrvelloDiagnosis> {\n return diagnoseOrvello({\n baseUrl: this.baseUrl,\n fetch: this.doFetch,\n ...options,\n });\n }\n\n /**\n * Wuerde dieser Aufruf heute klappen? Prueft den ganzen Weg — Erreichbarkeit,\n * Vertrag, Credential — und schreibt dabei nichts.\n *\n * Gedacht fuer Verbindungs-Verwalter: eine Kante laesst sich damit turnusmaessig\n * nachpruefen, ohne sie anzufassen, und vor einem freigegebenen Schreibschritt\n * laesst sich zeigen, was er tun wuerde.\n */\n public async preflight(operationId: string, options: PreflightOptions = {}): Promise<PreflightReport> {\n const host: PreflightHost = {\n resolveBaseUrl: () => this.resolveBaseUrl(),\n fetchImpl: () => this.doFetch,\n hasCredentialFor: async (channel) => {\n if (channel === \"none\") return true;\n if (channel === \"api_key\") return Boolean(await this.resolveManagementApiKey());\n return Boolean(this.auth);\n },\n probeCredential: (channel, signal) => this.probeCredential(channel, signal),\n };\n const report = await preflightOrvello(host, operationId, options);\n return {\n ...report,\n serverSideDryRun: this.capabilities().capabilities.serverSideDryRun.supported,\n };\n }\n\n /**\n * Ein ausschliesslich lesender Aufruf auf einer Credential-Bahn.\n *\n * Je Bahn die guenstigste Frage, die ohne Nebenwirkung beantwortet, ob das\n * Credential angenommen wird:\n * - `api_key` → die Auflistung der Zugaenge mit `pageSize=1`\n * - `bearer` → das Holen des Tokens (der Dienst prueft dabei Kennung und Geheimnis)\n */\n private async probeCredential(\n channel: OrvelloAuthChannel,\n signal?: AbortSignal\n ): Promise<{ ok: boolean; detail: string }> {\n if (channel === \"none\") return { ok: true, detail: \"Oeffentliche Route, kein Credential noetig.\" };\n\n if (channel === \"api_key\") {\n try {\n await this.call(\"oauth2_external_clients_list\", {\n query: { pageSize: 1 },\n maxRetries: 0,\n signal,\n });\n return { ok: true, detail: \"Der Verwaltungs-Schluessel wird angenommen (Leseprobe auf die Zugangsliste).\" };\n } catch (error) {\n if (error instanceof OrvelloApiError) {\n return {\n ok: false,\n detail:\n error.status === 403 || error.status === 401\n ? `Der Verwaltungs-Schluessel wird abgelehnt (${error.status}). Der Wert ist gesetzt, aber nicht der, den der Dienst erwartet.`\n : `Leseprobe fehlgeschlagen (${error.status}): ${error.message}`,\n };\n }\n return { ok: false, detail: `Leseprobe fehlgeschlagen: ${(error as Error).message}` };\n }\n }\n\n try {\n const header = await this.getAuthHeader();\n return header\n ? { ok: true, detail: \"Das Bearer-Credential wird angenommen (Token wurde ausgestellt).\" }\n : { ok: false, detail: \"Es konnte kein Bearer-Credential ermittelt werden.\" };\n } catch (error) {\n return { ok: false, detail: `Token konnte nicht geholt werden: ${(error as Error).message}` };\n }\n }\n\n // ── Invoices ─────────────────────────────────────────────────────────────\n public invoices = {\n /** Durable per-invoice replay. Commit the cursor with processing; re-read evidence before commerce actions. */\n getPaymentEvents: (id: number, query?: InvoicesPaymentEventsExternalQuery, options?: RequestOptions) =>\n this.request<InvoicesPaymentEventsExternalResponseData>(`/invoices/external/${id}/payment-events`, {\n method: \"GET\",\n query: query as Record<string, unknown>,\n ...options,\n }),\n\n /** Frozen recipient and reference; historical invoices without a snapshot return 409. */\n getPaymentInstructions: (id: number, options?: RequestOptions) =>\n this.request<InvoicesPaymentInstructionsExternalResponseData>(`/invoices/external/${id}/payment-instructions`, {\n method: \"GET\",\n ...options,\n }),\n\n /** Bank evidence, distinct from accounting status; this never initiates a bank call. */\n getPaymentEvidence: (id: number, options?: RequestOptions) =>\n this.request<InvoicesPaymentEvidenceExternalResponseData>(`/invoices/external/${id}/payment-evidence`, {\n method: \"GET\",\n ...options,\n }),\n\n search: (query?: InvoicesSearchExternalQuery, options?: RequestOptions) =>\n this.request<InvoicesSearchExternalResponseData>(\"/invoices/external\", {\n method: \"GET\",\n query: query as Record<string, unknown>,\n ...options,\n }),\n\n getById: (id: number, options?: RequestOptions) =>\n this.request<InvoicesGetByIdExternalResponseData>(`/invoices/external/${id}`, {\n method: \"GET\",\n ...options,\n }),\n\n getPending: (options?: RequestOptions) =>\n this.request<InvoicesPendingExternalResponseData>(\"/invoices/external/pending\", {\n method: \"GET\",\n ...options,\n }),\n\n getOverdue: (options?: RequestOptions) =>\n this.request<InvoicesOverdueExternalResponseData>(\"/invoices/external/overdue\", {\n method: \"GET\",\n ...options,\n }),\n\n getStatusPolicy: (id: number, options?: RequestOptions) =>\n this.request<InvoicesStatusPolicyExternalResponseData>(`/invoices/external/${id}/status-policy`, {\n method: \"GET\",\n ...options,\n }),\n\n preview: (body: InvoicesPreviewExternalBody, options?: RequestOptions) =>\n this.request<InvoicesPreviewExternalResponseData>(\"/invoices/external/preview\", {\n ...options, method: \"POST\", body: JSON.stringify(body),\n }),\n\n create: async (body: InvoicesCreateExternalBody, options?: RequestOptions) => {\n if (body.idempotencyKey !== undefined && options?.idempotencyKey !== undefined\n && body.idempotencyKey !== options.idempotencyKey) {\n throw new Error(\"Invoice body and request options contain different idempotency keys\");\n }\n const idempotencyKey = body.idempotencyKey ?? options?.idempotencyKey;\n return this.request<InvoicesCreateExternalResponseData>(\"/invoices/external\", {\n method: \"POST\",\n body: JSON.stringify({ ...body, ...(idempotencyKey !== undefined ? { idempotencyKey } : {}) }),\n ...options,\n });\n },\n\n updateStatus: (id: number, body: InvoicesUpdateStatusExternalBody, options?: RequestOptions) =>\n this.request<InvoicesUpdateStatusExternalResponseData>(`/invoices/external/${id}/status`, {\n method: \"PUT\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n previewCreditNote: (id: number, body: InvoicesCreditNotePreviewExternalBody, options?: RequestOptions) =>\n this.request<InvoicesCreditNotePreviewExternalResponseData>(`/invoices/external/${id}/credit-note/preview`, {\n method: \"POST\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n issueCreditNote: (id: number, body: InvoicesCreditNoteIssueExternalBody, options?: RequestOptions) =>\n this.request<InvoicesCreditNoteIssueExternalResponseData>(`/invoices/external/${id}/credit-note/issue`, {\n method: \"POST\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n delete: (id: number, options?: RequestOptions) =>\n this.request<InvoicesDeleteExternalResponseData>(`/invoices/external/${id}`, {\n method: \"DELETE\",\n ...options,\n }),\n\n viewPdf: (id: number, options?: RequestOptions) =>\n this.request<Blob>(`/invoices/external/${id}/pdf`, {\n method: \"GET\",\n rawResponse: true,\n ...options,\n }),\n\n downloadPdf: (id: number, options?: RequestOptions) =>\n this.request<Blob>(`/invoices/external/${id}/download`, {\n method: \"GET\",\n rawResponse: true,\n ...options,\n }),\n\n sendEmail: (id: number, body: InvoicesSendEmailExternalBody, options?: RequestOptions) =>\n this.request<InvoicesSendEmailExternalResponseData>(`/invoices/external/${id}/send-email`, {\n method: \"POST\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n downloadPdfFromUrl: async (pdfUrl: string, options?: RequestOptions): Promise<Blob> => {\n const baseUrl = await this.resolveBaseUrl();\n const targetUrl = pdfUrl.startsWith(\"http://\") || pdfUrl.startsWith(\"https://\")\n ? pdfUrl\n : `${baseUrl}${pdfUrl.startsWith(\"/\") ? \"\" : \"/\"}${pdfUrl}`;\n\n const doFetch = this.doFetch;\n const headers = new Headers(options?.headers);\n // Das Credential geht nur an den Dienst selbst. Eine absolute Adresse auf einem\n // anderen Host (etwa ein vorsignierter Speicher-Link) bekommt es nicht: dort\n // waere es ein Leck, und ein Speicher mit eigener Signatur lehnt eine zweite\n // Anmeldung ohnehin ab.\n if (new URL(targetUrl).origin === new URL(baseUrl).origin) {\n const authHeader = await this.getAuthHeader();\n if (authHeader && !headers.has(\"Authorization\")) {\n headers.set(\"Authorization\", authHeader);\n }\n }\n\n const resp = await doFetch(targetUrl, {\n method: \"GET\",\n headers,\n signal: options?.signal,\n });\n\n if (!resp.ok) {\n throw new OrvelloApiError(resp.status, resp.statusText, targetUrl, null, `Failed to download PDF from ${targetUrl}`);\n }\n return await resp.blob();\n },\n };\n\n // ── Customer Companies ───────────────────────────────────────────────────\n public customerCompanies = {\n search: (query?: CustomerCompaniesSearchExternalQuery, options?: RequestOptions) =>\n this.request<CustomerCompaniesSearchExternalResponseData>(\"/customer-companies/external\", {\n method: \"GET\",\n query: query as Record<string, unknown>,\n ...options,\n }),\n\n getById: (id: number, options?: RequestOptions) =>\n this.request<CustomerCompaniesGetByIdExternalResponseData>(`/customer-companies/external/${id}`, {\n method: \"GET\",\n ...options,\n }),\n\n create: (body: CustomerCompaniesCreateExternalBody, options?: RequestOptions) =>\n this.request<CustomerCompaniesCreateExternalResponseData>(\"/customer-companies/external\", {\n method: \"POST\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n update: (id: number, body: CustomerCompaniesUpdateExternalBody, options?: RequestOptions) =>\n this.request<CustomerCompaniesUpdateExternalResponseData>(`/customer-companies/external/${id}`, {\n method: \"PUT\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n delete: (id: number, options?: RequestOptions) =>\n this.request<CustomerCompaniesDeleteExternalResponseData>(`/customer-companies/external/${id}`, {\n method: \"DELETE\",\n ...options,\n }),\n };\n\n // ── Managing Companies ───────────────────────────────────────────────────\n public managingCompanies = {\n getCurrent: (options?: RequestOptions) =>\n this.request<ManagingCompaniesCurrentExternalResponseData>(\"/managing-companies/external/current\", {\n method: \"GET\",\n ...options,\n }),\n };\n\n // ── Dunning ──────────────────────────────────────────────────────────────\n public dunning = {\n suggestions: (query?: DunningSuggestionsExternalQuery, options?: RequestOptions) =>\n this.request<DunningSuggestionsExternalResponseData>(\"/invoices/external/dunning/suggestions\", {\n method: \"GET\",\n query: query as Record<string, unknown>,\n ...options,\n }),\n\n preview: (invoiceId: number, body?: DunningPreviewExternalBody, options?: RequestOptions) =>\n this.request<DunningPreviewExternalResponseData>(`/invoices/external/dunning/${invoiceId}/preview`, {\n method: \"POST\",\n body: body ? JSON.stringify(body) : undefined,\n ...options,\n }),\n\n issue: (invoiceId: number, body: DunningIssueExternalBody, options?: RequestOptions) =>\n this.request<DunningIssueExternalResponseData>(`/invoices/external/dunning/${invoiceId}/issue`, {\n method: \"POST\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n getNoticePdf: (noticeId: number, options?: RequestOptions) =>\n this.request<Blob>(`/invoices/external/dunning/notices/${noticeId}/pdf`, {\n method: \"GET\",\n rawResponse: true,\n ...options,\n }),\n\n downloadNoticePdf: (noticeId: number, options?: RequestOptions) =>\n this.request<Blob>(`/invoices/external/dunning/notices/${noticeId}/download`, {\n method: \"GET\",\n rawResponse: true,\n ...options,\n }),\n\n getSettings: (options?: RequestOptions) =>\n this.request<DunningGetSettingsExternalResponseData>(\"/invoices/external/dunning/settings\", {\n method: \"GET\",\n ...options,\n }),\n\n updateSettings: (body: DunningUpdateSettingsExternalBody, options?: RequestOptions) =>\n this.request<DunningUpdateSettingsExternalResponseData>(\"/invoices/external/dunning/settings\", {\n method: \"PUT\",\n body: JSON.stringify(body),\n ...options,\n }),\n };\n\n // ── Bookkeeping ──────────────────────────────────────────────────────────\n public bookkeeping = {\n revenues: {\n create: (body: BookkeepingRevenuesCreateExternalBody, options?: RequestOptions) => {\n const idempotencyKey = options?.idempotencyKey || (body as { externalRef?: string }).externalRef;\n return this.request<BookkeepingRevenuesCreateExternalResponseData>(\"/bookkeeping/revenues/external\", {\n method: \"POST\",\n body: JSON.stringify(body),\n idempotencyKey,\n ...options,\n });\n },\n\n createInvoiceAdjustment: (\n body: BookkeepingRevenuesInvoiceAdjustmentExternalBody,\n options?: RequestOptions\n ) => {\n const idempotencyKey = options?.idempotencyKey || body.externalRef;\n return this.request<BookkeepingRevenuesInvoiceAdjustmentExternalResponseData>(\n \"/bookkeeping/revenues/external/invoice-adjustment\",\n {\n method: \"POST\",\n body: JSON.stringify(body),\n idempotencyKey,\n ...options,\n }\n );\n },\n },\n\n expenses: {\n create: (\n body: BookkeepingExpensesCreateExternalBody,\n options?: RequestOptions & { receipt?: ExpenseReceiptUpload }\n ) => {\n const { receipt, ...reqOpts } = options || {};\n const payload = receipt ? { ...body, ...receipt } : body;\n const idempotencyKey = reqOpts.idempotencyKey || (body as { externalRef?: string }).externalRef;\n\n return this.request<BookkeepingExpensesCreateExternalResponseData>(\"/bookkeeping/expenses/external\", {\n method: \"POST\",\n body: JSON.stringify(payload),\n idempotencyKey,\n ...reqOpts,\n });\n },\n },\n\n payments: {\n listAccounts: (options?: BookkeepingPaymentsListAccountsExternalQuery, reqOptions?: RequestOptions) =>\n this.request<BookkeepingPaymentsListAccountsExternalResponseData>(\"/bookkeeping/payments/external/accounts\", {\n method: \"GET\",\n query: options as Record<string, unknown>,\n ...reqOptions,\n }),\n\n createManual: (body: BookkeepingPaymentsCreateManualExternalBody, options?: RequestOptions) => {\n const idempotencyKey = options?.idempotencyKey || body.externalRef;\n return this.request<BookkeepingPaymentsCreateManualExternalResponseData>(\n \"/bookkeeping/payments/external/manual\",\n {\n method: \"POST\",\n body: JSON.stringify(body),\n idempotencyKey,\n ...options,\n }\n );\n },\n\n settleInvoice: (body: BookkeepingPaymentsSettleInvoiceExternalBody, options?: RequestOptions) => {\n const idempotencyKey =\n options?.idempotencyKey ||\n body.externalRef ||\n `settle-${body.invoiceId}-${Date.now()}`;\n\n return this.request<BookkeepingPaymentsSettleInvoiceExternalResponseData>(\n \"/bookkeeping/payments/external/settle-invoice\",\n {\n method: \"POST\",\n body: JSON.stringify(body),\n idempotencyKey,\n ...options,\n }\n );\n },\n },\n\n getDefaultBankAccount: async (options?: { forceRefresh?: boolean }): Promise<BankAccountDetails> => {\n const now = Date.now();\n if (\n !options?.forceRefresh &&\n this._bankAccountCache &&\n now - this._bankAccountCacheTime < 5 * 60 * 1000\n ) {\n return this._bankAccountCache;\n }\n\n const accounts = await this.bookkeeping.payments.listAccounts({ includeArchived: false });\n const bankAccounts = (accounts || []).filter((a) => a.type === \"bank\" && !a.isArchived);\n\n // Primary: isDefault bank account\n let target = bankAccounts.find((a) => a.isDefault);\n\n // Fallback: if exactly one active bank account exists, use it\n if (!target && bankAccounts.length === 1) {\n target = bankAccounts[0];\n }\n\n if (!target) {\n throw new Error(\n \"Kein Default-Bankkonto im orvello-Dienst gefunden. Bitte dort ein Bankkonto als Standard markieren.\"\n );\n }\n\n const result = mapPaymentAccountToBankDetails(target);\n this._bankAccountCache = result;\n this._bankAccountCacheTime = now;\n return result;\n },\n };\n\n // ── Users ────────────────────────────────────────────────────────────────\n public users = {\n getByExternalUserId: (externalUserId: string, options?: RequestOptions) =>\n this.request<UsersGetByExternalUserIdResponseData>(`/users/getByExternalUserId/${encodeURIComponent(externalUserId)}`, {\n method: \"GET\",\n ...options,\n }),\n\n update: (frontendUserId: number, body: UsersUpdateExternalBody, options?: RequestOptions) =>\n this.request<UsersUpdateExternalResponseData>(`/users/update/external/${frontendUserId}`, {\n method: \"PUT\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n delete: (frontendUserId: number, options?: RequestOptions) =>\n this.request<UsersDeleteExternalResponseData>(`/users/delete/external/${frontendUserId}`, {\n method: \"DELETE\",\n ...options,\n }),\n };\n\n // ── OAuth2 External Clients (Connection Manager) ─────────────────────────\n public oauthClients = {\n list: (query?: Oauth2ExternalClientsListQuery, options?: RequestOptions) =>\n this.request<Oauth2ExternalClientsListResponseData>(\"/oauth/clients/external/list\", {\n method: \"GET\",\n query: query as Record<string, unknown>,\n ...options,\n }),\n\n get: (idOrClientId: string, options?: RequestOptions) =>\n this.request<Oauth2ExternalClientsGetResponseData>(`/oauth/clients/external/${encodeURIComponent(idOrClientId)}`, {\n method: \"GET\",\n ...options,\n }),\n\n create: (body: Oauth2ExternalClientsCreateBody, options?: RequestOptions) =>\n this.request<Oauth2ExternalClientsCreateResponseData>(\"/oauth/clients/external\", {\n method: \"POST\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n update: (idOrClientId: string, body: Oauth2ExternalClientsUpdateBody, options?: RequestOptions) =>\n this.request<Oauth2ExternalClientsUpdateResponseData>(`/oauth/clients/external/${encodeURIComponent(idOrClientId)}`, {\n method: \"PUT\",\n body: JSON.stringify(body),\n ...options,\n }),\n\n delete: (idOrClientId: string, options?: RequestOptions) =>\n this.request<Oauth2ExternalClientsDeleteResponseData>(`/oauth/clients/external/${encodeURIComponent(idOrClientId)}`, {\n method: \"DELETE\",\n ...options,\n }),\n\n rotate: (idOrClientId: string, body?: Oauth2ExternalClientsRotateBody, options?: RequestOptions) =>\n this.request<Oauth2ExternalClientsRotateResponseData>(`/oauth/clients/external/${encodeURIComponent(idOrClientId)}/rotate`, {\n method: \"POST\",\n body: body ? JSON.stringify(body) : undefined,\n ...options,\n }),\n\n retire: (idOrClientId: string, options?: RequestOptions) =>\n this.request<Oauth2ExternalClientsRetireResponseData>(`/oauth/clients/external/${encodeURIComponent(idOrClientId)}/retire`, {\n method: \"POST\",\n ...options,\n }),\n\n rollback: (idOrClientId: string, options?: RequestOptions) =>\n this.request<Oauth2ExternalClientsRollbackResponseData>(`/oauth/clients/external/${encodeURIComponent(idOrClientId)}/rollback`, {\n method: \"POST\",\n ...options,\n }),\n\n revoke: (idOrClientId: string, options?: RequestOptions) =>\n this.request<Oauth2ExternalClientsRevokeResponseData>(`/oauth/clients/external/${encodeURIComponent(idOrClientId)}/revoke`, {\n method: \"POST\",\n ...options,\n }),\n };\n}\n\nexport function createOrvelloClient(config?: OrvelloClientConfig): OrvelloClient {\n return new OrvelloClient(config);\n}\n"]}
|