@orvello/sdk 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRACT_SHA256 +1 -1
- package/README.md +8 -0
- package/dist/contract.cjs +178 -0
- package/dist/contract.cjs.map +1 -1
- package/dist/contract.d.cts +535 -3
- package/dist/contract.d.ts +535 -3
- package/dist/contract.js +178 -0
- package/dist/contract.js.map +1 -1
- package/dist/index.cjs +22 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -4
- package/dist/index.d.ts +6 -4
- package/dist/index.js +22 -3
- package/dist/index.js.map +1 -1
- package/dist/openapi.json +1606 -172
- package/package.json +1 -1
package/dist/contract.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/generated/api/catalog.ts","../src/generated/api/features/routes.admin.ts","../src/generated/api/base/routes.amp_mail.ts","../src/generated/api/base/routes.app_info.ts","../src/generated/api/base/routes.auth.ts","../src/generated/api/features/routes.bookkeeping.ts","../src/generated/api/features/routes.currency_rates.ts","../src/generated/api/features/routes.customer_companies.ts","../src/generated/api/features/routes.customer_companies_external.ts","../src/generated/api/features/routes.documents.ts","../src/generated/api/features/routes.dunning_external.ts","../src/generated/api/features/routes.enterprise.ts","../src/generated/api/base/routes.entitlements.ts","../src/generated/api/features/routes.exports.ts","../src/generated/api/base/routes.internal.ts","../src/generated/api/features/routes.invoices.ts","../src/generated/api/features/routes.invoices_external.ts","../src/generated/api/base/routes.logs.ts","../src/generated/api/features/routes.managing_companies.ts","../src/generated/api/features/routes.managing_companies_external.ts","../src/generated/api/features/routes.managing_company_logos.ts","../src/generated/api/base/routes.oauth2.ts","../src/generated/api/base/routes.oauth2_external.ts","../src/generated/api/base/routes.permissions.ts","../src/generated/api/base/routes.roles.ts","../src/generated/api/base/routes.security.ts","../src/generated/api/base/routes.settings.ts","../src/generated/api/base/routes.user_activity.ts","../src/generated/api/base/routes.users.ts","../src/generated/api/base/routes.webhooks.ts","../src/generated/api/features/routes.work_tracking.ts","../src/generated/api/index.ts"],"names":[],"mappings":"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","file":"contract.cjs","sourcesContent":["// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type RouteGroup = { key: string; module: string };\n\nexport const apiMountPrefixes = {\n base: [\n \"/api-keys\",\n \"/api/amp-mail\",\n \"/api/amp-proxy\",\n \"/api/entitlements\",\n \"/app-info\",\n \"/app-logs\",\n \"/auth\",\n \"/docs\",\n \"/entitlements\",\n \"/internal/users\",\n \"/oauth\",\n \"/permissions\",\n \"/role-assignments\",\n \"/roles\",\n \"/security\",\n \"/settings\",\n \"/user-activity\",\n \"/users\",\n \"/webhooks\"\n],\n features: [\n \"/admin/vat\",\n \"/apps/admin/work-tracking\",\n \"/apps/enterprise/onboarding\",\n \"/bookkeeping\",\n \"/currency-rates\",\n \"/customer-companies\",\n \"/documents\",\n \"/exports\",\n \"/invoices\",\n \"/managing-companies\",\n \"/oauth\"\n],\n} as const;\n\nexport const apiGroups = {\n base: [\n {\n \"key\": \"app_info\",\n \"module\": \"./routes.app_info\"\n },\n {\n \"key\": \"auth\",\n \"module\": \"./routes.auth\"\n },\n {\n \"key\": \"entitlements\",\n \"module\": \"./routes.entitlements\"\n },\n {\n \"key\": \"internal\",\n \"module\": \"./routes.internal\"\n },\n {\n \"key\": \"permissions\",\n \"module\": \"./routes.permissions\"\n },\n {\n \"key\": \"roles\",\n \"module\": \"./routes.roles\"\n },\n {\n \"key\": \"security\",\n \"module\": \"./routes.security\"\n },\n {\n \"key\": \"settings\",\n \"module\": \"./routes.settings\"\n },\n {\n \"key\": \"user_activity\",\n \"module\": \"./routes.user_activity\"\n },\n {\n \"key\": \"users\",\n \"module\": \"./routes.users\"\n },\n {\n \"key\": \"webhooks\",\n \"module\": \"./routes.webhooks\"\n }\n] as RouteGroup[],\n features: [\n {\n \"key\": \"admin\",\n \"module\": \"./routes.admin\"\n },\n {\n \"key\": \"bookkeeping\",\n \"module\": \"./routes.bookkeeping\"\n },\n {\n \"key\": \"currency_rates\",\n \"module\": \"./routes.currency_rates\"\n },\n {\n \"key\": \"customer_companies\",\n \"module\": \"./routes.customer_companies\"\n },\n {\n \"key\": \"documents\",\n \"module\": \"./routes.documents\"\n },\n {\n \"key\": \"exports\",\n \"module\": \"./routes.exports\"\n },\n {\n \"key\": \"invoices\",\n \"module\": \"./routes.invoices\"\n },\n {\n \"key\": \"managing_companies\",\n \"module\": \"./routes.managing_companies\"\n }\n] as RouteGroup[],\n all: [\n {\n \"key\": \"admin\",\n \"module\": \"./features/routes.admin\"\n },\n {\n \"key\": \"amp_mail\",\n \"module\": \"./base/routes.amp_mail\"\n },\n {\n \"key\": \"app_info\",\n \"module\": \"./base/routes.app_info\"\n },\n {\n \"key\": \"auth\",\n \"module\": \"./base/routes.auth\"\n },\n {\n \"key\": \"bookkeeping\",\n \"module\": \"./features/routes.bookkeeping\"\n },\n {\n \"key\": \"currency_rates\",\n \"module\": \"./features/routes.currency_rates\"\n },\n {\n \"key\": \"customer_companies\",\n \"module\": \"./features/routes.customer_companies\"\n },\n {\n \"key\": \"customer_companies_external\",\n \"module\": \"./features/routes.customer_companies_external\"\n },\n {\n \"key\": \"documents\",\n \"module\": \"./features/routes.documents\"\n },\n {\n \"key\": \"dunning_external\",\n \"module\": \"./features/routes.dunning_external\"\n },\n {\n \"key\": \"enterprise\",\n \"module\": \"./features/routes.enterprise\"\n },\n {\n \"key\": \"entitlements\",\n \"module\": \"./base/routes.entitlements\"\n },\n {\n \"key\": \"exports\",\n \"module\": \"./features/routes.exports\"\n },\n {\n \"key\": \"internal\",\n \"module\": \"./base/routes.internal\"\n },\n {\n \"key\": \"invoices\",\n \"module\": \"./features/routes.invoices\"\n },\n {\n \"key\": \"invoices_external\",\n \"module\": \"./features/routes.invoices_external\"\n },\n {\n \"key\": \"logs\",\n \"module\": \"./base/routes.logs\"\n },\n {\n \"key\": \"managing_companies\",\n \"module\": \"./features/routes.managing_companies\"\n },\n {\n \"key\": \"managing_companies_external\",\n \"module\": \"./features/routes.managing_companies_external\"\n },\n {\n \"key\": \"managing_company_logos\",\n \"module\": \"./features/routes.managing_company_logos\"\n },\n {\n \"key\": \"oauth2\",\n \"module\": \"./base/routes.oauth2\"\n },\n {\n \"key\": \"oauth2_external\",\n \"module\": \"./base/routes.oauth2_external\"\n },\n {\n \"key\": \"permissions\",\n \"module\": \"./base/routes.permissions\"\n },\n {\n \"key\": \"roles\",\n \"module\": \"./base/routes.roles\"\n },\n {\n \"key\": \"security\",\n \"module\": \"./base/routes.security\"\n },\n {\n \"key\": \"settings\",\n \"module\": \"./base/routes.settings\"\n },\n {\n \"key\": \"user_activity\",\n \"module\": \"./base/routes.user_activity\"\n },\n {\n \"key\": \"users\",\n \"module\": \"./base/routes.users\"\n },\n {\n \"key\": \"webhooks\",\n \"module\": \"./base/routes.webhooks\"\n },\n {\n \"key\": \"work_tracking\",\n \"module\": \"./features/routes.work_tracking\"\n }\n] as RouteGroup[],\n} as const;\n\n/**\n * Hinweis:\n * - Diese Klassifikation ist best-effort (Prefix->GroupKey).\n * - Für exakte Zuordnung nutzt ihr am besten die Route-Pfade in openapi.json.\n */\n","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { PaginatedResult, SystemSettings, VatAccountingMethod, VatSettingsHistory } from \"../../frontend-types\";\n\nexport type AdminVatGetSystemSettingsParams = undefined;\nexport type AdminVatGetSystemSettingsQuery = undefined;\nexport type AdminVatGetSystemSettingsBody = undefined;\nexport type AdminVatGetSystemSettingsResponseData = SystemSettings;\nexport type AdminVatGetSystemSettingsResponse = import(\"../types\").ApiEnvelope<AdminVatGetSystemSettingsResponseData>;\n\nexport type AdminVatGetSystemSettingsHistoryParams = undefined;\nexport type AdminVatGetSystemSettingsHistoryQuery = {\n from?: string;\n to?: string;\n page?: number;\n pageSize?: number;\n};\nexport type AdminVatGetSystemSettingsHistoryBody = undefined;\nexport type AdminVatGetSystemSettingsHistoryResponseData = PaginatedResult<SystemSettings>;\nexport type AdminVatGetSystemSettingsHistoryResponse = import(\"../types\").ApiEnvelope<AdminVatGetSystemSettingsHistoryResponseData>;\n\nexport type AdminVatUpdateSystemSettingsParams = {\n id: number;\n};\nexport type AdminVatUpdateSystemSettingsQuery = undefined;\nexport type AdminVatUpdateSystemSettingsBody = {\n defaultKleinunternehmerGraceAmount?: string;\n defaultKleinunternehmerMaxAmount?: string;\n defaultVatAccountingMethod?: \"SOLL\" | \"IST\";\n ustvaMonthlyVatDueThreshold?: string;\n ustvaAnnualVatDueExemptThreshold?: string;\n ustvaNewCompanyMonthlyYears?: number;\n};\nexport type AdminVatUpdateSystemSettingsResponseData = SystemSettings;\nexport type AdminVatUpdateSystemSettingsResponse = import(\"../types\").ApiEnvelope<AdminVatUpdateSystemSettingsResponseData>;\n\nexport type AdminVatCreateSystemSettingsParams = undefined;\nexport type AdminVatCreateSystemSettingsQuery = undefined;\nexport type AdminVatCreateSystemSettingsBody = {\n defaultKleinunternehmerGraceAmount: string;\n defaultKleinunternehmerMaxAmount: string;\n defaultVatAccountingMethod: \"SOLL\" | \"IST\";\n validFrom?: string;\n validTo?: string;\n};\nexport type AdminVatCreateSystemSettingsResponseData = SystemSettings;\nexport type AdminVatCreateSystemSettingsResponse = import(\"../types\").ApiEnvelope<AdminVatCreateSystemSettingsResponseData>;\n\nexport type AdminVatUpdateCompanySettingsParams = {\n companyId: number;\n};\nexport type AdminVatUpdateCompanySettingsQuery = undefined;\nexport type AdminVatUpdateCompanySettingsBody = {\n accountingMethod: \"SOLL\" | \"IST\";\n ustvaFilingPreference?: \"auto\" | \"monthly\" | \"quarterly\" | \"annual\" | \"none\";\n changeReason: string;\n};\nexport type AdminVatUpdateCompanySettingsResponseData = { accountingMethod: VatAccountingMethod; ustvaFilingPreference?: string };\nexport type AdminVatUpdateCompanySettingsResponse = import(\"../types\").ApiEnvelope<AdminVatUpdateCompanySettingsResponseData>;\n\nexport type AdminVatGetCompanySettingsHistoryParams = {\n companyId: number;\n};\nexport type AdminVatGetCompanySettingsHistoryQuery = undefined;\nexport type AdminVatGetCompanySettingsHistoryBody = undefined;\nexport type AdminVatGetCompanySettingsHistoryResponseData = VatSettingsHistory[];\nexport type AdminVatGetCompanySettingsHistoryResponse = import(\"../types\").ApiEnvelope<AdminVatGetCompanySettingsHistoryResponseData>;\n\nexport const apiRoutes_admin = {\n // Contract source: explicit\n \"admin_vat_get_system_settings\": {\n method: \"GET\",\n path: \"/admin/vat/system-settings\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"managing_company_admin\"},\n meta: {\n tags: [\"admin\",\"vat\"],\n },\n types: null as unknown as {\n params: AdminVatGetSystemSettingsParams;\n query: AdminVatGetSystemSettingsQuery;\n body: AdminVatGetSystemSettingsBody;\n response: AdminVatGetSystemSettingsResponse;\n responseData: AdminVatGetSystemSettingsResponseData;\n },\n },\n // Contract source: explicit\n \"admin_vat_get_system_settings_history\": {\n method: \"GET\",\n path: \"/admin/vat/system-settings/history\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"managing_company_admin\"},\n meta: {\n tags: [\"admin\",\"vat\"],\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: AdminVatGetSystemSettingsHistoryParams;\n query: AdminVatGetSystemSettingsHistoryQuery;\n body: AdminVatGetSystemSettingsHistoryBody;\n response: AdminVatGetSystemSettingsHistoryResponse;\n responseData: AdminVatGetSystemSettingsHistoryResponseData;\n },\n },\n // Contract source: explicit\n \"admin_vat_update_system_settings\": {\n method: \"PUT\",\n path: \"/admin/vat/system-settings/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"managing_company_admin\"},\n meta: {\n tags: [\"admin\",\"vat\"],\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AdminVatUpdateSystemSettingsParams;\n query: AdminVatUpdateSystemSettingsQuery;\n body: AdminVatUpdateSystemSettingsBody;\n response: AdminVatUpdateSystemSettingsResponse;\n responseData: AdminVatUpdateSystemSettingsResponseData;\n },\n },\n // Contract source: explicit\n \"admin_vat_create_system_settings\": {\n method: \"POST\",\n path: \"/admin/vat/system-settings\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"managing_company_admin\"},\n meta: {\n tags: [\"admin\",\"vat\"],\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AdminVatCreateSystemSettingsParams;\n query: AdminVatCreateSystemSettingsQuery;\n body: AdminVatCreateSystemSettingsBody;\n response: AdminVatCreateSystemSettingsResponse;\n responseData: AdminVatCreateSystemSettingsResponseData;\n },\n },\n // Contract source: explicit\n \"admin_vat_update_company_settings\": {\n method: \"PUT\",\n path: \"/admin/vat/company/:companyId/settings\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"managing_company_admin\"},\n meta: {\n tags: [\"admin\",\"vat\"],\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AdminVatUpdateCompanySettingsParams;\n query: AdminVatUpdateCompanySettingsQuery;\n body: AdminVatUpdateCompanySettingsBody;\n response: AdminVatUpdateCompanySettingsResponse;\n responseData: AdminVatUpdateCompanySettingsResponseData;\n },\n },\n // Contract source: explicit\n \"admin_vat_get_company_settings_history\": {\n method: \"GET\",\n path: \"/admin/vat/company/:companyId/settings-history\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"managing_company_admin\"},\n meta: {\n tags: [\"admin\",\"vat\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: AdminVatGetCompanySettingsHistoryParams;\n query: AdminVatGetCompanySettingsHistoryQuery;\n body: AdminVatGetCompanySettingsHistoryBody;\n response: AdminVatGetCompanySettingsHistoryResponse;\n responseData: AdminVatGetCompanySettingsHistoryResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type GETApiAmpMailBrandLogoParams = {\n slug: string;\n};\nexport type GETApiAmpMailBrandLogoQuery = undefined;\nexport type GETApiAmpMailBrandLogoBody = undefined;\nexport type GETApiAmpMailBrandLogoResponseData = Blob;\nexport type GETApiAmpMailBrandLogoResponse = Blob;\n\nexport type GETApiAmpMailFileParams = {\n token: string;\n};\nexport type GETApiAmpMailFileQuery = undefined;\nexport type GETApiAmpMailFileBody = undefined;\nexport type GETApiAmpMailFileResponseData = Blob;\nexport type GETApiAmpMailFileResponse = Blob;\n\nexport const apiRoutes_amp_mail = {\n // Contract source: explicit\n \"GET__api_amp_mail_brand_logo\": {\n method: \"GET\",\n path: \"/api/amp-mail/brands/:slug/logo\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"amp-mail\"],\n summary: \"Logo einer Marke aus der Kopie dieser App\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: GETApiAmpMailBrandLogoParams;\n query: GETApiAmpMailBrandLogoQuery;\n body: GETApiAmpMailBrandLogoBody;\n response: GETApiAmpMailBrandLogoResponse;\n responseData: GETApiAmpMailBrandLogoResponseData;\n },\n },\n // Contract source: explicit\n \"GET__api_amp_mail_file\": {\n method: \"GET\",\n path: \"/api/amp-mail/files/:token\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"amp-mail\"],\n summary: \"Download-Link aus einer Mail: leitet auf eine frisch signierte Adresse der Dateiablage weiter\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: GETApiAmpMailFileParams;\n query: GETApiAmpMailFileQuery;\n body: GETApiAmpMailFileBody;\n response: GETApiAmpMailFileResponse;\n responseData: GETApiAmpMailFileResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { NodeBillUser, Permission, Role } from \"../../frontend-types\";\n\nexport type AppInfoHealthParams = undefined;\nexport type AppInfoHealthQuery = undefined;\nexport type AppInfoHealthBody = undefined;\nexport type AppInfoHealthResponseData = {\n status: \"healthy\" | \"degraded\" | \"unhealthy\";\n uptime: number;\n timestamp: string;\n version: string;\n checks: Array<{\n name: string;\n status: \"ok\" | \"warning\" | \"error\";\n latencyMs: number | null;\n message?: string;\n details?: Record<string, any>;\n}>;\n dependencies: Array<{\n name: string;\n status: \"ok\" | \"warning\" | \"error\";\n latencyMs: number | null;\n message?: string;\n details?: Record<string, any>;\n}>;\n};\nexport type AppInfoHealthResponse = import(\"../types\").ApiEnvelope<AppInfoHealthResponseData>;\n\nexport type AppInfoManifestParams = undefined;\nexport type AppInfoManifestQuery = undefined;\nexport type AppInfoManifestBody = undefined;\nexport type AppInfoManifestResponseData = { appId: string; manifestVersion: string; [key: string]: unknown };\nexport type AppInfoManifestResponse = import(\"../types\").ApiEnvelope<AppInfoManifestResponseData>;\n\nexport type AppInfoGetParams = undefined;\nexport type AppInfoGetQuery = {\n\n};\nexport type AppInfoGetBody = undefined;\nexport type AppInfoGetResponseData = { appId: string; plannerUser: NodeBillUser; userRoles: Role[]; subscriptionLimits?: { planCode: string; sourceRoles: string[]; limits: Record<string, number | null> }; subscriptionUsage?: { planCode: string; sourceRoles: string[]; metrics: Record<string, { used: number; limit: number | null; remaining: number | null; canUse: boolean }> }; subscription?: { upgradeUrl: string | null } };\nexport type AppInfoGetResponse = import(\"../types\").ApiEnvelope<AppInfoGetResponseData>;\n\nexport type AppInfoOwnPermissionsGetParams = undefined;\nexport type AppInfoOwnPermissionsGetQuery = {\n\n};\nexport type AppInfoOwnPermissionsGetBody = undefined;\nexport type AppInfoOwnPermissionsGetResponseData = Permission[];\nexport type AppInfoOwnPermissionsGetResponse = import(\"../types\").ApiEnvelope<AppInfoOwnPermissionsGetResponseData>;\n\nexport const apiRoutes_app_info = {\n // Contract source: explicit\n \"app_info_health\": {\n method: \"GET\",\n path: \"/app-info/health\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"app-info\"],\n summary: \"Health check\",\n description: \"Kern-Pruefungen des Prozesses (Datenbank, Speicher, Event-Loop, Verschluesselung). 200 bei healthy/degraded, 503 bei unhealthy.\",\n validated: {\"params\":false,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: AppInfoHealthParams;\n query: AppInfoHealthQuery;\n body: AppInfoHealthBody;\n response: AppInfoHealthResponse;\n responseData: AppInfoHealthResponseData;\n },\n },\n // Contract source: explicit\n \"app_info_manifest\": {\n method: \"GET\",\n path: \"/app-info/manifest\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"app-info\"],\n summary: \"AMP App Manifest\",\n validated: {\"params\":false,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: AppInfoManifestParams;\n query: AppInfoManifestQuery;\n body: AppInfoManifestBody;\n response: AppInfoManifestResponse;\n responseData: AppInfoManifestResponseData;\n },\n },\n // Contract source: explicit\n \"app_info_get\": {\n method: \"GET\",\n path: \"/app-info\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"app-info\"],\n summary: \"Get app info for current user\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: AppInfoGetParams;\n query: AppInfoGetQuery;\n body: AppInfoGetBody;\n response: AppInfoGetResponse;\n responseData: AppInfoGetResponseData;\n },\n },\n // Contract source: explicit\n \"app_info_own_permissions_get\": {\n method: \"GET\",\n path: \"/app-info/ownPermissions\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"app-info\"],\n summary: \"Get own permissions\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: AppInfoOwnPermissionsGetParams;\n query: AppInfoOwnPermissionsGetQuery;\n body: AppInfoOwnPermissionsGetBody;\n response: AppInfoOwnPermissionsGetResponse;\n responseData: AppInfoOwnPermissionsGetResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { DirectAuthMe, DirectAuthRequestVerificationResponse, DirectAuthResponse, DirectAuthTokens, DirectAuthVerifyEmailResponse } from \"../../frontend-types\";\n\nexport type AuthRegisterParams = undefined;\nexport type AuthRegisterQuery = undefined;\nexport type AuthRegisterBody = {\n email: string;\n password: string;\n name?: string;\n};\nexport type AuthRegisterResponseData = DirectAuthResponse;\nexport type AuthRegisterResponse = import(\"../types\").ApiEnvelope<AuthRegisterResponseData>;\n\nexport type AuthLoginParams = undefined;\nexport type AuthLoginQuery = undefined;\nexport type AuthLoginBody = {\n email: string;\n password: string;\n};\nexport type AuthLoginResponseData = DirectAuthResponse;\nexport type AuthLoginResponse = import(\"../types\").ApiEnvelope<AuthLoginResponseData>;\n\nexport type AuthRefreshParams = undefined;\nexport type AuthRefreshQuery = undefined;\nexport type AuthRefreshBody = {\n refreshToken: string;\n};\nexport type AuthRefreshResponseData = DirectAuthTokens;\nexport type AuthRefreshResponse = import(\"../types\").ApiEnvelope<AuthRefreshResponseData>;\n\nexport type AuthLogoutParams = undefined;\nexport type AuthLogoutQuery = undefined;\nexport type AuthLogoutBody = {\n refreshToken?: string;\n};\nexport type AuthLogoutResponseData = {\n\n};\nexport type AuthLogoutResponse = import(\"../types\").ApiEnvelope<AuthLogoutResponseData>;\n\nexport type AuthMeParams = undefined;\nexport type AuthMeQuery = {\n\n};\nexport type AuthMeBody = undefined;\nexport type AuthMeResponseData = DirectAuthMe;\nexport type AuthMeResponse = import(\"../types\").ApiEnvelope<AuthMeResponseData>;\n\nexport type AuthMeProfileUpdateParams = undefined;\nexport type AuthMeProfileUpdateQuery = undefined;\nexport type AuthMeProfileUpdateBody = {\n name?: string;\n avatarStyle?: {\n seed?: string;\n hue?: number;\n shape?: \"round\" | \"organic\" | \"boxy\" | \"nub\" | \"cloud\" | \"sun\" | \"capsule\" | \"triangle\" | \"hexagon\" | \"droplet\";\n expression?: \"idle\" | \"happy\" | \"sad\" | \"mad\" | \"surprised\" | \"wink\" | \"sleepy\" | \"smug\" | \"unsure\" | \"scared\" | \"love\" | \"shy\" | \"sick\" | \"thinking\";\n background?: \"none\" | \"squircle\" | \"circle\";\n} | null;\n};\nexport type AuthMeProfileUpdateResponseData = DirectAuthMe;\nexport type AuthMeProfileUpdateResponse = import(\"../types\").ApiEnvelope<AuthMeProfileUpdateResponseData>;\n\nexport type AuthPushTokenUpsertParams = undefined;\nexport type AuthPushTokenUpsertQuery = undefined;\nexport type AuthPushTokenUpsertBody = {\n token: string;\n platform: \"ios\" | \"android\" | \"web\" | \"expo\";\n};\nexport type AuthPushTokenUpsertResponseData = {\n\n};\nexport type AuthPushTokenUpsertResponse = import(\"../types\").ApiEnvelope<AuthPushTokenUpsertResponseData>;\n\nexport type AuthVerifyEmailRequestParams = undefined;\nexport type AuthVerifyEmailRequestQuery = undefined;\nexport type AuthVerifyEmailRequestBody = {\n\n};\nexport type AuthVerifyEmailRequestResponseData = DirectAuthRequestVerificationResponse;\nexport type AuthVerifyEmailRequestResponse = import(\"../types\").ApiEnvelope<AuthVerifyEmailRequestResponseData>;\n\nexport type AuthVerifyEmailConfirmParams = undefined;\nexport type AuthVerifyEmailConfirmQuery = undefined;\nexport type AuthVerifyEmailConfirmBody = {\n token: string;\n};\nexport type AuthVerifyEmailConfirmResponseData = DirectAuthVerifyEmailResponse;\nexport type AuthVerifyEmailConfirmResponse = import(\"../types\").ApiEnvelope<AuthVerifyEmailConfirmResponseData>;\n\nexport type AuthVerifyEmailLandingParams = undefined;\nexport type AuthVerifyEmailLandingQuery = {\n token?: string;\n};\nexport type AuthVerifyEmailLandingBody = undefined;\nexport type AuthVerifyEmailLandingResponseData = Blob;\nexport type AuthVerifyEmailLandingResponse = Blob;\n\nexport const apiRoutes_auth = {\n // Contract source: explicit\n \"auth_register\": {\n method: \"POST\",\n path: \"/auth/register\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Register a new direct-auth account\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthRegisterParams;\n query: AuthRegisterQuery;\n body: AuthRegisterBody;\n response: AuthRegisterResponse;\n responseData: AuthRegisterResponseData;\n },\n },\n // Contract source: explicit\n \"auth_login\": {\n method: \"POST\",\n path: \"/auth/login\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Log in with email + password\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthLoginParams;\n query: AuthLoginQuery;\n body: AuthLoginBody;\n response: AuthLoginResponse;\n responseData: AuthLoginResponseData;\n },\n },\n // Contract source: explicit\n \"auth_refresh\": {\n method: \"POST\",\n path: \"/auth/refresh\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Rotate access + refresh tokens\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthRefreshParams;\n query: AuthRefreshQuery;\n body: AuthRefreshBody;\n response: AuthRefreshResponse;\n responseData: AuthRefreshResponseData;\n },\n },\n // Contract source: explicit\n \"auth_logout\": {\n method: \"POST\",\n path: \"/auth/logout\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Revoke the current refresh token\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthLogoutParams;\n query: AuthLogoutQuery;\n body: AuthLogoutBody;\n response: AuthLogoutResponse;\n responseData: AuthLogoutResponseData;\n },\n },\n // Contract source: explicit\n \"auth_me\": {\n method: \"GET\",\n path: \"/auth/me\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Get the current user incl. roles and isAdmin (Bearer access JWT)\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: AuthMeParams;\n query: AuthMeQuery;\n body: AuthMeBody;\n response: AuthMeResponse;\n responseData: AuthMeResponseData;\n },\n },\n // Contract source: explicit\n \"auth_me_profile_update\": {\n method: \"PATCH\",\n path: \"/auth/me/profile\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Update the current user's own profile (name, avatar)\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthMeProfileUpdateParams;\n query: AuthMeProfileUpdateQuery;\n body: AuthMeProfileUpdateBody;\n response: AuthMeProfileUpdateResponse;\n responseData: AuthMeProfileUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"auth_push_token_upsert\": {\n method: \"POST\",\n path: \"/auth/push-token\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Register a device push token for the current user\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthPushTokenUpsertParams;\n query: AuthPushTokenUpsertQuery;\n body: AuthPushTokenUpsertBody;\n response: AuthPushTokenUpsertResponse;\n responseData: AuthPushTokenUpsertResponseData;\n },\n },\n // Contract source: explicit\n \"auth_verify_email_request\": {\n method: \"POST\",\n path: \"/auth/verify-email/request\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Send a fresh email-verification link to the current user\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthVerifyEmailRequestParams;\n query: AuthVerifyEmailRequestQuery;\n body: AuthVerifyEmailRequestBody;\n response: AuthVerifyEmailRequestResponse;\n responseData: AuthVerifyEmailRequestResponseData;\n },\n },\n // Contract source: explicit\n \"auth_verify_email_confirm\": {\n method: \"POST\",\n path: \"/auth/verify-email/confirm\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Confirm an email-verification token (programmatic / deep-link flow)\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthVerifyEmailConfirmParams;\n query: AuthVerifyEmailConfirmQuery;\n body: AuthVerifyEmailConfirmBody;\n response: AuthVerifyEmailConfirmResponse;\n responseData: AuthVerifyEmailConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"auth_verify_email_landing\": {\n method: \"GET\",\n path: \"/auth/verify-email\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Browser landing page that consumes the verification token\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: AuthVerifyEmailLandingParams;\n query: AuthVerifyEmailLandingQuery;\n body: AuthVerifyEmailLandingBody;\n response: AuthVerifyEmailLandingResponse;\n responseData: AuthVerifyEmailLandingResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { AssetCostComponent, BookkeepingAsset, BookkeepingAuditLog, BookkeepingExpense, BookkeepingLockState, BookkeepingRevenue, CapitalMovement, EStCalculationResult, EmploymentIncome, IapPayoutImport, IncomeTaxSettings, IncomeTaxSummary, Invoice, PaginatedResult, Payment, PaymentAccount, PaymentAllocation, PaymentImportProfile, PaymentProviderConnection, ResolvedPaymentAllocation, Sonderausgaben, Steuerminderungen, VorauszahlungResult, Vorsorgeaufwendungen, Werbungskosten } from \"../../frontend-types\";\n\nexport type BookkeepingRevenuesSearchParams = undefined;\nexport type BookkeepingRevenuesSearchQuery = {\n q?: string;\n startDate?: string;\n endDate?: string;\n category?: \"customer_invoice\" | \"interest\" | \"refund\" | \"other\" | \"asset_disposal\" | \"pos_sale\" | \"saas_revenue_apple_iap\" | \"saas_revenue_google_iap\";\n isConfirmed?: boolean;\n paymentStatus?: \"unmatched\" | \"cash_confirmed\" | \"partially_matched\" | \"fully_matched\";\n minAmount?: string;\n maxAmount?: string;\n invoiceId?: number;\n assetId?: number;\n page?: number;\n pageSize?: number;\n sortBy?: \"createdAt\" | \"revenueDate\" | \"amount\";\n sortDir?: \"asc\" | \"desc\";\n};\nexport type BookkeepingRevenuesSearchBody = undefined;\nexport type BookkeepingRevenuesSearchResponseData = PaginatedResult<BookkeepingRevenue>;\nexport type BookkeepingRevenuesSearchResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesSearchResponseData>;\n\nexport type BookkeepingRevenuesGetByIdParams = {\n id: number;\n};\nexport type BookkeepingRevenuesGetByIdQuery = undefined;\nexport type BookkeepingRevenuesGetByIdBody = undefined;\nexport type BookkeepingRevenuesGetByIdResponseData = BookkeepingRevenue & { paymentAllocations: ResolvedPaymentAllocation[] };\nexport type BookkeepingRevenuesGetByIdResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesGetByIdResponseData>;\n\nexport type BookkeepingRevenuesAnalyzeReceiptParams = undefined;\nexport type BookkeepingRevenuesAnalyzeReceiptQuery = undefined;\nexport type BookkeepingRevenuesAnalyzeReceiptBody = undefined;\nexport type BookkeepingRevenuesAnalyzeReceiptResponseData = {\n extracted: {\n vendor?: string;\n vendorInvoiceNumber?: string;\n revenueDate?: string;\n amount?: string;\n netAmount?: string;\n taxAmount?: string;\n taxRate?: number;\n currency?: string;\n category?: \"customer_invoice\" | \"interest\" | \"refund\" | \"other\" | \"asset_disposal\" | \"pos_sale\" | \"saas_revenue_apple_iap\" | \"saas_revenue_google_iap\";\n description?: string;\n};\n confidence: {\n vendor: number;\n date: number;\n amount: number;\n overall: number;\n};\n rawText: string;\n};\nexport type BookkeepingRevenuesAnalyzeReceiptResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesAnalyzeReceiptResponseData>;\n\nexport type BookkeepingRevenuesCreateParams = undefined;\nexport type BookkeepingRevenuesCreateQuery = undefined;\nexport type BookkeepingRevenuesCreateBody = {\n costCenterId?: number | null;\n revenueDate: string;\n performedAt?: string | null;\n amount: string | number;\n netAmount: string | number;\n taxAmount?: string | number | null;\n taxRate?: string | number | null;\n currency?: string;\n originalCurrency?: string | null;\n originalAmount?: string | number | null;\n description: string;\n category: \"customer_invoice\" | \"interest\" | \"refund\" | \"other\" | \"asset_disposal\" | \"pos_sale\" | \"saas_revenue_apple_iap\" | \"saas_revenue_google_iap\";\n invoiceId?: number | null;\n assetId?: number | null;\n documentId?: number | null;\n notes?: string | null;\n isSelfCreatedReceipt?: boolean;\n selfReceiptReason?: string | null;\n signatureName?: string | null;\n place?: string | null;\n language?: string | null;\n};\nexport type BookkeepingRevenuesCreateResponseData = BookkeepingRevenue;\nexport type BookkeepingRevenuesCreateResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesCreateResponseData>;\n\nexport type BookkeepingRevenuesUpdateParams = {\n id: number;\n};\nexport type BookkeepingRevenuesUpdateQuery = undefined;\nexport type BookkeepingRevenuesUpdateBody = {\n costCenterId?: number | null;\n revenueDate: string;\n performedAt?: string | null;\n amount: string | number;\n netAmount: string | number;\n taxAmount?: string | number | null;\n taxRate?: string | number | null;\n currency?: string;\n originalCurrency?: string | null;\n originalAmount?: string | number | null;\n description: string;\n category: \"customer_invoice\" | \"interest\" | \"refund\" | \"other\" | \"asset_disposal\" | \"pos_sale\" | \"saas_revenue_apple_iap\" | \"saas_revenue_google_iap\";\n invoiceId?: number | null;\n assetId?: number | null;\n documentId?: number | null;\n notes?: string | null;\n isSelfCreatedReceipt?: boolean;\n selfReceiptReason?: string | null;\n signatureName?: string | null;\n place?: string | null;\n language?: string | null;\n};\nexport type BookkeepingRevenuesUpdateResponseData = BookkeepingRevenue;\nexport type BookkeepingRevenuesUpdateResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesUpdateResponseData>;\n\nexport type BookkeepingRevenuesUploadReceiptParams = {\n id: number;\n};\nexport type BookkeepingRevenuesUploadReceiptQuery = undefined;\nexport type BookkeepingRevenuesUploadReceiptBody = undefined;\nexport type BookkeepingRevenuesUploadReceiptResponseData = BookkeepingRevenue;\nexport type BookkeepingRevenuesUploadReceiptResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesUploadReceiptResponseData>;\n\nexport type BookkeepingRevenuesBulkConfirmParams = undefined;\nexport type BookkeepingRevenuesBulkConfirmQuery = undefined;\nexport type BookkeepingRevenuesBulkConfirmBody = {\n ids: Array<number>;\n};\nexport type BookkeepingRevenuesBulkConfirmResponseData = {\n results: Array<{\n id: number;\n success: boolean;\n error?: string;\n}>;\n totalSuccess: number;\n totalFailed: number;\n};\nexport type BookkeepingRevenuesBulkConfirmResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesBulkConfirmResponseData>;\n\nexport type BookkeepingRevenuesConfirmParams = {\n id: number;\n};\nexport type BookkeepingRevenuesConfirmQuery = undefined;\nexport type BookkeepingRevenuesConfirmBody = undefined;\nexport type BookkeepingRevenuesConfirmResponseData = BookkeepingRevenue;\nexport type BookkeepingRevenuesConfirmResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesConfirmResponseData>;\n\nexport type BookkeepingRevenuesConfirmCashParams = {\n id: number;\n};\nexport type BookkeepingRevenuesConfirmCashQuery = undefined;\nexport type BookkeepingRevenuesConfirmCashBody = {\n confirmedAt?: string;\n receivedAt?: string;\n};\nexport type BookkeepingRevenuesConfirmCashResponseData = BookkeepingRevenue;\nexport type BookkeepingRevenuesConfirmCashResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesConfirmCashResponseData>;\n\nexport type BookkeepingRevenuesRevokeCashConfirmParams = {\n id: number;\n};\nexport type BookkeepingRevenuesRevokeCashConfirmQuery = undefined;\nexport type BookkeepingRevenuesRevokeCashConfirmBody = {\n reason: string;\n};\nexport type BookkeepingRevenuesRevokeCashConfirmResponseData = BookkeepingRevenue;\nexport type BookkeepingRevenuesRevokeCashConfirmResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesRevokeCashConfirmResponseData>;\n\nexport type BookkeepingRevenuesDeleteParams = {\n id: number;\n};\nexport type BookkeepingRevenuesDeleteQuery = undefined;\nexport type BookkeepingRevenuesDeleteBody = undefined;\nexport type BookkeepingRevenuesDeleteResponseData = null;\nexport type BookkeepingRevenuesDeleteResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesDeleteResponseData>;\n\nexport type BookkeepingRevenuesCreateExternalParams = undefined;\nexport type BookkeepingRevenuesCreateExternalQuery = undefined;\nexport type BookkeepingRevenuesCreateExternalBody = {\n costCenterId?: number | null;\n revenueDate: string;\n performedAt?: string | null;\n amount: string | number;\n netAmount: string | number;\n taxAmount?: string | number | null;\n taxRate?: string | number | null;\n currency?: string;\n description: string;\n category?: \"customer_invoice\" | \"interest\" | \"refund\" | \"other\" | \"asset_disposal\" | \"pos_sale\" | \"saas_revenue_apple_iap\" | \"saas_revenue_google_iap\";\n invoiceId?: number | null;\n notes?: string | null;\n confirm?: boolean;\n};\nexport type BookkeepingRevenuesCreateExternalResponseData = BookkeepingRevenue;\nexport type BookkeepingRevenuesCreateExternalResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesCreateExternalResponseData>;\n\nexport type BookkeepingRevenuesInvoiceAdjustmentExternalParams = undefined;\nexport type BookkeepingRevenuesInvoiceAdjustmentExternalQuery = undefined;\nexport type BookkeepingRevenuesInvoiceAdjustmentExternalBody = {\n invoiceId: number;\n payoutAmount: string | number;\n revenueDate: string;\n externalRef: string;\n costCenterId?: number | null;\n description?: string;\n notes?: string | null;\n confirm?: boolean;\n};\nexport type BookkeepingRevenuesInvoiceAdjustmentExternalResponseData = { created: boolean; idempotent: boolean; invoiceId: number; invoiceNumber: string; payoutAmount: string; invoiceTotal: string; adjustmentAmount: string; revenue: BookkeepingRevenue };\nexport type BookkeepingRevenuesInvoiceAdjustmentExternalResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesInvoiceAdjustmentExternalResponseData>;\n\nexport type BookkeepingExpensesSearchParams = undefined;\nexport type BookkeepingExpensesSearchQuery = {\n q?: string;\n startDate?: string;\n endDate?: string;\n category?: \"infrastructure\" | \"office\" | \"software\" | \"hardware\" | \"travel\" | \"marketing\" | \"legal\" | \"accounting\" | \"insurance\" | \"personnel\" | \"depreciation\" | \"interest_expense\" | \"rent\" | \"bank_fees\" | \"professional_services\" | \"other\" | \"private_withdrawal\" | \"ust_payment\";\n vendor?: string;\n currency?: string;\n isConfirmed?: boolean;\n paymentStatus?: \"unmatched\" | \"cash_confirmed\" | \"partially_matched\" | \"fully_matched\";\n isDeductible?: boolean;\n minAmount?: string;\n maxAmount?: string;\n page?: number;\n pageSize?: number;\n sortBy?: \"createdAt\" | \"expenseDate\" | \"amount\";\n sortDir?: \"asc\" | \"desc\";\n};\nexport type BookkeepingExpensesSearchBody = undefined;\nexport type BookkeepingExpensesSearchResponseData = PaginatedResult<BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] }>;\nexport type BookkeepingExpensesSearchResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesSearchResponseData>;\n\nexport type BookkeepingExpensesGetByIdParams = {\n id: number;\n};\nexport type BookkeepingExpensesGetByIdQuery = undefined;\nexport type BookkeepingExpensesGetByIdBody = undefined;\nexport type BookkeepingExpensesGetByIdResponseData = BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] };\nexport type BookkeepingExpensesGetByIdResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesGetByIdResponseData>;\n\nexport type BookkeepingExpensesAnalyzeReceiptParams = undefined;\nexport type BookkeepingExpensesAnalyzeReceiptQuery = undefined;\nexport type BookkeepingExpensesAnalyzeReceiptBody = undefined;\nexport type BookkeepingExpensesAnalyzeReceiptResponseData = {\n extracted: {\n vendor?: string;\n vendorInvoiceNumber?: string;\n expenseDate?: string;\n amount?: string;\n netAmount?: string;\n taxAmount?: string;\n taxRate?: number;\n currency?: string;\n category?: \"infrastructure\" | \"office\" | \"software\" | \"hardware\" | \"travel\" | \"marketing\" | \"legal\" | \"accounting\" | \"insurance\" | \"personnel\" | \"depreciation\" | \"interest_expense\" | \"rent\" | \"bank_fees\" | \"professional_services\" | \"other\" | \"ust_payment\";\n description?: string;\n};\n confidence: {\n vendor: number;\n date: number;\n amount: number;\n overall: number;\n};\n rawText: string;\n};\nexport type BookkeepingExpensesAnalyzeReceiptResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesAnalyzeReceiptResponseData>;\n\nexport type BookkeepingExpensesCreateParams = undefined;\nexport type BookkeepingExpensesCreateQuery = undefined;\nexport type BookkeepingExpensesCreateBody = {\n costCenterId?: number | null;\n expenseDate: string;\n amount: string | number;\n netAmount: string | number;\n taxAmount?: string | number | null;\n taxRate?: string | number | null;\n currency?: string;\n description: string;\n category: \"infrastructure\" | \"office\" | \"software\" | \"hardware\" | \"travel\" | \"marketing\" | \"legal\" | \"accounting\" | \"insurance\" | \"personnel\" | \"depreciation\" | \"interest_expense\" | \"rent\" | \"bank_fees\" | \"professional_services\" | \"other\" | \"ust_payment\";\n vendor?: string | null;\n vendorInvoiceNumber?: string | null;\n notes?: string | null;\n isDeductible?: boolean;\n isConfirmed?: boolean;\n isSelfCreatedReceipt?: boolean;\n selfReceiptReason?: string | null;\n signatureName?: string | null;\n place?: string | null;\n language?: string | null;\n inputVatEligibility?: \"NONE\" | \"FULL\" | \"PARTIAL\";\n inputVatAmount?: string | number | null;\n inputVatRate?: string | number | null;\n createAsAsset?: boolean;\n asset?: {\n name?: string;\n description?: string | null;\n assetType?: \"equipment\" | \"vehicle\" | \"software\" | \"furniture\" | \"leasehold_improvement\" | \"other\";\n purchaseDate?: string;\n purchaseAmountNet?: string | number;\n currency?: string;\n usefulLifeMonths?: number;\n depreciationMethod?: \"linear\" | \"immediate_gwg\" | \"none\";\n residualValue?: string | number;\n inputVatEligibility?: \"NONE\" | \"FULL\" | \"PARTIAL\";\n inputVatAmount?: string | number | null;\n inputVatRate?: string | number | null;\n vendorName?: string | null;\n vendorInvoiceNumber?: string | null;\n costCenterId?: number | null;\n documentId?: number | null;\n inheritExpenseDocument?: boolean;\n};\n};\nexport type BookkeepingExpensesCreateResponseData = BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] };\nexport type BookkeepingExpensesCreateResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesCreateResponseData>;\n\nexport type BookkeepingExpensesUpdateParams = {\n id: number;\n};\nexport type BookkeepingExpensesUpdateQuery = undefined;\nexport type BookkeepingExpensesUpdateBody = {\n costCenterId?: number | null;\n expenseDate: string;\n amount: string | number;\n netAmount: string | number;\n taxAmount?: string | number | null;\n taxRate?: string | number | null;\n currency?: string;\n description: string;\n category: \"infrastructure\" | \"office\" | \"software\" | \"hardware\" | \"travel\" | \"marketing\" | \"legal\" | \"accounting\" | \"insurance\" | \"personnel\" | \"depreciation\" | \"interest_expense\" | \"rent\" | \"bank_fees\" | \"professional_services\" | \"other\" | \"ust_payment\";\n vendor?: string | null;\n vendorInvoiceNumber?: string | null;\n notes?: string | null;\n isDeductible?: boolean;\n isConfirmed?: boolean;\n isSelfCreatedReceipt?: boolean;\n selfReceiptReason?: string | null;\n signatureName?: string | null;\n place?: string | null;\n language?: string | null;\n inputVatEligibility?: \"NONE\" | \"FULL\" | \"PARTIAL\";\n inputVatAmount?: string | number | null;\n inputVatRate?: string | number | null;\n};\nexport type BookkeepingExpensesUpdateResponseData = BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] };\nexport type BookkeepingExpensesUpdateResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesUpdateResponseData>;\n\nexport type BookkeepingExpensesUploadReceiptParams = {\n id: number;\n};\nexport type BookkeepingExpensesUploadReceiptQuery = undefined;\nexport type BookkeepingExpensesUploadReceiptBody = undefined;\nexport type BookkeepingExpensesUploadReceiptResponseData = BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] };\nexport type BookkeepingExpensesUploadReceiptResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesUploadReceiptResponseData>;\n\nexport type BookkeepingExpensesBulkConfirmParams = undefined;\nexport type BookkeepingExpensesBulkConfirmQuery = undefined;\nexport type BookkeepingExpensesBulkConfirmBody = {\n ids: Array<number>;\n};\nexport type BookkeepingExpensesBulkConfirmResponseData = {\n results: Array<{\n id: number;\n success: boolean;\n error?: string;\n}>;\n totalSuccess: number;\n totalFailed: number;\n};\nexport type BookkeepingExpensesBulkConfirmResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesBulkConfirmResponseData>;\n\nexport type BookkeepingExpensesConfirmParams = {\n id: number;\n};\nexport type BookkeepingExpensesConfirmQuery = undefined;\nexport type BookkeepingExpensesConfirmBody = undefined;\nexport type BookkeepingExpensesConfirmResponseData = BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] };\nexport type BookkeepingExpensesConfirmResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesConfirmResponseData>;\n\nexport type BookkeepingExpensesConfirmCashParams = {\n id: number;\n};\nexport type BookkeepingExpensesConfirmCashQuery = undefined;\nexport type BookkeepingExpensesConfirmCashBody = {\n confirmedAt?: string;\n};\nexport type BookkeepingExpensesConfirmCashResponseData = BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] };\nexport type BookkeepingExpensesConfirmCashResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesConfirmCashResponseData>;\n\nexport type BookkeepingExpensesRevokeCashConfirmParams = {\n id: number;\n};\nexport type BookkeepingExpensesRevokeCashConfirmQuery = undefined;\nexport type BookkeepingExpensesRevokeCashConfirmBody = {\n reason: string;\n};\nexport type BookkeepingExpensesRevokeCashConfirmResponseData = BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] };\nexport type BookkeepingExpensesRevokeCashConfirmResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesRevokeCashConfirmResponseData>;\n\nexport type BookkeepingExpensesMarkAsAssetParams = {\n id: number;\n};\nexport type BookkeepingExpensesMarkAsAssetQuery = undefined;\nexport type BookkeepingExpensesMarkAsAssetBody = {\n name?: string;\n description?: string | null;\n assetType?: \"equipment\" | \"vehicle\" | \"software\" | \"furniture\" | \"leasehold_improvement\" | \"other\";\n purchaseDate?: string;\n purchaseAmountNet?: string | number;\n currency?: string;\n usefulLifeMonths?: number;\n depreciationMethod?: \"linear\" | \"immediate_gwg\" | \"none\";\n residualValue?: string | number;\n inputVatEligibility?: \"NONE\" | \"FULL\" | \"PARTIAL\";\n inputVatAmount?: string | number | null;\n inputVatRate?: string | number | null;\n vendorName?: string | null;\n vendorInvoiceNumber?: string | null;\n costCenterId?: number | null;\n documentId?: number | null;\n inheritExpenseDocument?: boolean;\n};\nexport type BookkeepingExpensesMarkAsAssetResponseData = { expense: BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] }; asset: BookkeepingAsset; createdFromExpense: true };\nexport type BookkeepingExpensesMarkAsAssetResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesMarkAsAssetResponseData>;\n\nexport type BookkeepingExpensesDeleteParams = {\n id: number;\n};\nexport type BookkeepingExpensesDeleteQuery = undefined;\nexport type BookkeepingExpensesDeleteBody = undefined;\nexport type BookkeepingExpensesDeleteResponseData = null;\nexport type BookkeepingExpensesDeleteResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesDeleteResponseData>;\n\nexport type BookkeepingExpensesCreateExternalParams = undefined;\nexport type BookkeepingExpensesCreateExternalQuery = undefined;\nexport type BookkeepingExpensesCreateExternalBody = {\n s3Key?: string;\n amount: string | number;\n netAmount: string | number;\n taxAmount?: string | number;\n taxRate?: string | number;\n expenseDate: string;\n vendor?: string;\n description: string;\n currency?: string;\n category: \"infrastructure\" | \"office\" | \"software\" | \"hardware\" | \"travel\" | \"marketing\" | \"legal\" | \"accounting\" | \"insurance\" | \"personnel\" | \"depreciation\" | \"interest_expense\" | \"rent\" | \"bank_fees\" | \"professional_services\" | \"other\" | \"ust_payment\";\n vendorInvoiceNumber?: string;\n notes?: string;\n isDeductible?: boolean;\n inputVatEligibility?: \"NONE\" | \"FULL\" | \"PARTIAL\";\n inputVatAmount?: string | number;\n inputVatRate?: string | number;\n costCenterId?: number | null;\n};\nexport type BookkeepingExpensesCreateExternalResponseData = BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] };\nexport type BookkeepingExpensesCreateExternalResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesCreateExternalResponseData>;\n\nexport type BookkeepingAssetsListSammelpostenPoolsParams = undefined;\nexport type BookkeepingAssetsListSammelpostenPoolsQuery = import(\"../types\").ContractNotReady<\"Query not typed yet. Add DTO + validate({ query }) to the route (or explicitly declare none).\">;\nexport type BookkeepingAssetsListSammelpostenPoolsBody = undefined;\nexport type BookkeepingAssetsListSammelpostenPoolsResponseData = Array<any>;\nexport type BookkeepingAssetsListSammelpostenPoolsResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsListSammelpostenPoolsResponseData>;\n\nexport type BookkeepingAssetsGetSammelpostenPoolParams = {\n poolId: number;\n};\nexport type BookkeepingAssetsGetSammelpostenPoolQuery = undefined;\nexport type BookkeepingAssetsGetSammelpostenPoolBody = undefined;\nexport type BookkeepingAssetsGetSammelpostenPoolResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingAssetsGetSammelpostenPoolResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsGetSammelpostenPoolResponseData>;\n\nexport type BookkeepingAssetsGenerateDepreciationParams = undefined;\nexport type BookkeepingAssetsGenerateDepreciationQuery = undefined;\nexport type BookkeepingAssetsGenerateDepreciationBody = {\n fiscalYear: number;\n};\nexport type BookkeepingAssetsGenerateDepreciationResponseData = Array<any>;\nexport type BookkeepingAssetsGenerateDepreciationResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsGenerateDepreciationResponseData>;\n\nexport type BookkeepingAssetsGetDepreciationRecordsParams = undefined;\nexport type BookkeepingAssetsGetDepreciationRecordsQuery = {\n fiscalYear: number;\n};\nexport type BookkeepingAssetsGetDepreciationRecordsBody = undefined;\nexport type BookkeepingAssetsGetDepreciationRecordsResponseData = Array<any>;\nexport type BookkeepingAssetsGetDepreciationRecordsResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsGetDepreciationRecordsResponseData>;\n\nexport type BookkeepingAssetsFinalizeDepreciationParams = undefined;\nexport type BookkeepingAssetsFinalizeDepreciationQuery = undefined;\nexport type BookkeepingAssetsFinalizeDepreciationBody = {\n fiscalYear: number;\n};\nexport type BookkeepingAssetsFinalizeDepreciationResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingAssetsFinalizeDepreciationResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsFinalizeDepreciationResponseData>;\n\nexport type BookkeepingAssetsIabListParams = undefined;\nexport type BookkeepingAssetsIabListQuery = import(\"../types\").ContractNotReady<\"Query not typed yet. Add DTO + validate({ query }) to the route (or explicitly declare none).\">;\nexport type BookkeepingAssetsIabListBody = undefined;\nexport type BookkeepingAssetsIabListResponseData = Array<any>;\nexport type BookkeepingAssetsIabListResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsIabListResponseData>;\n\nexport type BookkeepingAssetsIabCreateParams = undefined;\nexport type BookkeepingAssetsIabCreateQuery = undefined;\nexport type BookkeepingAssetsIabCreateBody = {\n description: string;\n plannedAssetType: \"equipment\" | \"vehicle\" | \"software\" | \"furniture\" | \"leasehold_improvement\" | \"land\" | \"building\" | \"building_equipment\" | \"intangible\" | \"digital_asset\" | \"other\";\n plannedAcquisitionCost: string;\n deductionRate?: string;\n fiscalYearClaimed: number;\n};\nexport type BookkeepingAssetsIabCreateResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingAssetsIabCreateResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsIabCreateResponseData>;\n\nexport type BookkeepingAssetsIabGetParams = {\n iabId: number;\n};\nexport type BookkeepingAssetsIabGetQuery = undefined;\nexport type BookkeepingAssetsIabGetBody = undefined;\nexport type BookkeepingAssetsIabGetResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingAssetsIabGetResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsIabGetResponseData>;\n\nexport type BookkeepingAssetsIabDissolveParams = {\n iabId: number;\n};\nexport type BookkeepingAssetsIabDissolveQuery = undefined;\nexport type BookkeepingAssetsIabDissolveBody = {\n linkedAssetId: number;\n};\nexport type BookkeepingAssetsIabDissolveResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingAssetsIabDissolveResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsIabDissolveResponseData>;\n\nexport type BookkeepingAssetsIabReverseParams = {\n iabId: number;\n};\nexport type BookkeepingAssetsIabReverseQuery = undefined;\nexport type BookkeepingAssetsIabReverseBody = {\n reversalFiscalYear: number;\n};\nexport type BookkeepingAssetsIabReverseResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingAssetsIabReverseResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsIabReverseResponseData>;\n\nexport type BookkeepingAssetsIabDeleteParams = {\n iabId: number;\n};\nexport type BookkeepingAssetsIabDeleteQuery = undefined;\nexport type BookkeepingAssetsIabDeleteBody = undefined;\nexport type BookkeepingAssetsIabDeleteResponseData = null;\nexport type BookkeepingAssetsIabDeleteResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsIabDeleteResponseData>;\n\nexport type BookkeepingAssetsSearchParams = undefined;\nexport type BookkeepingAssetsSearchQuery = {\n page?: number;\n limit?: number;\n assetType?: \"equipment\" | \"vehicle\" | \"software\" | \"furniture\" | \"leasehold_improvement\" | \"land\" | \"building\" | \"building_equipment\" | \"intangible\" | \"digital_asset\" | \"other\";\n depreciationMethod?: \"linear\" | \"degressive\" | \"immediate_gwg\" | \"sammelposten\" | \"digital_afa\" | \"none\";\n buildingType?: \"wohngebaeude_post2022\" | \"wohngebaeude_1925_2022\" | \"wohngebaeude_pre1925\" | \"nichtwohngebaeude\" | \"denkmal_7i\" | \"mietwohnungsbau_7b\";\n isActive?: \"true\" | \"false\";\n isDigitalAsset?: \"true\" | \"false\";\n search?: string;\n sortBy?: \"purchaseDate\" | \"name\" | \"purchaseAmountNet\" | \"inventoryNumber\" | \"inServiceDate\";\n sortOrder?: \"asc\" | \"desc\";\n};\nexport type BookkeepingAssetsSearchBody = undefined;\nexport type BookkeepingAssetsSearchResponseData = PaginatedResult<BookkeepingAsset>;\nexport type BookkeepingAssetsSearchResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsSearchResponseData>;\n\nexport type BookkeepingAssetsCreateParams = undefined;\nexport type BookkeepingAssetsCreateQuery = undefined;\nexport type BookkeepingAssetsCreateBody = {\n costCenterId?: number;\n name: string;\n description?: string;\n assetType: \"equipment\" | \"vehicle\" | \"software\" | \"furniture\" | \"leasehold_improvement\" | \"land\" | \"building\" | \"building_equipment\" | \"intangible\" | \"digital_asset\" | \"other\";\n purchaseDate: string;\n inServiceDate?: string;\n purchaseAmountNet: string;\n currency?: string;\n inventoryNumber?: string;\n ancillaryAcquisitionCosts?: string;\n acquisitionPriceReductions?: string;\n usefulLifeMonths?: number;\n depreciationMethod: \"linear\" | \"degressive\" | \"immediate_gwg\" | \"sammelposten\" | \"digital_afa\" | \"none\";\n residualValue?: string;\n degressiveRate?: string;\n isDigitalAsset?: boolean;\n buildingType?: \"wohngebaeude_post2022\" | \"wohngebaeude_1925_2022\" | \"wohngebaeude_pre1925\" | \"nichtwohngebaeude\" | \"denkmal_7i\" | \"mietwohnungsbau_7b\";\n constructionYear?: number;\n buildingApplicationDate?: string;\n landValue?: string;\n buildingAreaSqm?: string;\n herstellungskostenPerSqm?: string;\n denkmalBescheinigung?: boolean;\n businessUsePercentage?: string;\n afaTableKey?: string;\n afaTableName?: string;\n inputVatAmount?: string;\n inputVatRate?: string;\n inputVatEligibility?: \"NONE\" | \"FULL\" | \"PARTIAL\";\n vendorName?: string;\n vendorInvoiceNumber?: string;\n expenseId?: number;\n documentId?: number;\n};\nexport type BookkeepingAssetsCreateResponseData = BookkeepingAsset;\nexport type BookkeepingAssetsCreateResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsCreateResponseData>;\n\nexport type BookkeepingAssetsGetByIdParams = {\n assetId: number;\n};\nexport type BookkeepingAssetsGetByIdQuery = undefined;\nexport type BookkeepingAssetsGetByIdBody = undefined;\nexport type BookkeepingAssetsGetByIdResponseData = {\n asset: any;\n depreciationSchedule: any;\n linkedDisposalRevenue: {\n id: number;\n amount: string;\n revenueDate: any;\n isConfirmed: boolean;\n} | null;\n};\nexport type BookkeepingAssetsGetByIdResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsGetByIdResponseData>;\n\nexport type BookkeepingAssetsUpdateParams = {\n assetId: number;\n};\nexport type BookkeepingAssetsUpdateQuery = undefined;\nexport type BookkeepingAssetsUpdateBody = {\n costCenterId?: number;\n name?: string;\n description?: string;\n assetType?: \"equipment\" | \"vehicle\" | \"software\" | \"furniture\" | \"leasehold_improvement\" | \"land\" | \"building\" | \"building_equipment\" | \"intangible\" | \"digital_asset\" | \"other\";\n purchaseDate?: string;\n inServiceDate?: string;\n purchaseAmountNet?: string;\n currency?: string;\n inventoryNumber?: string;\n usefulLifeMonths?: number;\n depreciationMethod?: \"linear\" | \"degressive\" | \"immediate_gwg\" | \"sammelposten\" | \"digital_afa\" | \"none\";\n residualValue?: string;\n degressiveRate?: string;\n isDigitalAsset?: boolean;\n buildingType?: \"wohngebaeude_post2022\" | \"wohngebaeude_1925_2022\" | \"wohngebaeude_pre1925\" | \"nichtwohngebaeude\" | \"denkmal_7i\" | \"mietwohnungsbau_7b\";\n constructionYear?: number;\n buildingApplicationDate?: string;\n landValue?: string;\n buildingAreaSqm?: string;\n herstellungskostenPerSqm?: string;\n denkmalBescheinigung?: boolean;\n businessUsePercentage?: string;\n afaTableKey?: string;\n afaTableName?: string;\n inputVatAmount?: string;\n inputVatRate?: string;\n inputVatEligibility?: \"NONE\" | \"FULL\" | \"PARTIAL\";\n vendorName?: string;\n vendorInvoiceNumber?: string;\n expenseId?: number;\n documentId?: number;\n accountNumber?: string;\n bilanzPosition?: string;\n};\nexport type BookkeepingAssetsUpdateResponseData = BookkeepingAsset;\nexport type BookkeepingAssetsUpdateResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsUpdateResponseData>;\n\nexport type BookkeepingAssetsDisposeParams = {\n assetId: number;\n};\nexport type BookkeepingAssetsDisposeQuery = undefined;\nexport type BookkeepingAssetsDisposeBody = {\n disposedAt: string;\n disposalType: \"sale\" | \"scrapping\" | \"theft\" | \"private_withdrawal\" | \"insurance_claim\" | \"donation\" | \"destruction\";\n disposalAmount?: string;\n disposalReason: string;\n};\nexport type BookkeepingAssetsDisposeResponseData = BookkeepingAsset;\nexport type BookkeepingAssetsDisposeResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsDisposeResponseData>;\n\nexport type BookkeepingAssetsDeleteParams = {\n assetId: number;\n};\nexport type BookkeepingAssetsDeleteQuery = undefined;\nexport type BookkeepingAssetsDeleteBody = undefined;\nexport type BookkeepingAssetsDeleteResponseData = null;\nexport type BookkeepingAssetsDeleteResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsDeleteResponseData>;\n\nexport type BookkeepingAssetsApplySonderafaParams = {\n assetId: number;\n};\nexport type BookkeepingAssetsApplySonderafaQuery = undefined;\nexport type BookkeepingAssetsApplySonderafaBody = {\n amount: string;\n};\nexport type BookkeepingAssetsApplySonderafaResponseData = BookkeepingAsset;\nexport type BookkeepingAssetsApplySonderafaResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsApplySonderafaResponseData>;\n\nexport type BookkeepingAssetsSwitchToLinearParams = {\n assetId: number;\n};\nexport type BookkeepingAssetsSwitchToLinearQuery = undefined;\nexport type BookkeepingAssetsSwitchToLinearBody = {\n switchDate: string;\n};\nexport type BookkeepingAssetsSwitchToLinearResponseData = BookkeepingAsset;\nexport type BookkeepingAssetsSwitchToLinearResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsSwitchToLinearResponseData>;\n\nexport type BookkeepingAssetsAddCostComponentParams = {\n assetId: number;\n};\nexport type BookkeepingAssetsAddCostComponentQuery = undefined;\nexport type BookkeepingAssetsAddCostComponentBody = {\n componentType: \"delivery\" | \"installation\" | \"customs\" | \"notary\" | \"grunderwerbsteuer\" | \"subsequent\" | \"reduction\" | \"other\";\n description: string;\n amount: string;\n date: string;\n documentId?: number;\n};\nexport type BookkeepingAssetsAddCostComponentResponseData = AssetCostComponent;\nexport type BookkeepingAssetsAddCostComponentResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsAddCostComponentResponseData>;\n\nexport type BookkeepingAssetsListCostComponentsParams = {\n assetId: number;\n};\nexport type BookkeepingAssetsListCostComponentsQuery = undefined;\nexport type BookkeepingAssetsListCostComponentsBody = undefined;\nexport type BookkeepingAssetsListCostComponentsResponseData = Array<any>;\nexport type BookkeepingAssetsListCostComponentsResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsListCostComponentsResponseData>;\n\nexport type BookkeepingAssetsDeleteCostComponentParams = {\n assetId: number;\n componentId: number;\n};\nexport type BookkeepingAssetsDeleteCostComponentQuery = undefined;\nexport type BookkeepingAssetsDeleteCostComponentBody = undefined;\nexport type BookkeepingAssetsDeleteCostComponentResponseData = null;\nexport type BookkeepingAssetsDeleteCostComponentResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsDeleteCostComponentResponseData>;\n\nexport type BookkeepingReportsEuerParams = undefined;\nexport type BookkeepingReportsEuerQuery = {\n year?: number;\n format?: \"json\" | \"csv\";\n};\nexport type BookkeepingReportsEuerBody = undefined;\nexport type BookkeepingReportsEuerResponseData = {\n year: number;\n period: {\n start: string;\n end: string;\n};\n revenues: {\n customerInvoices: number;\n interest: number;\n refunds: number;\n assetDisposal: number;\n posSales: number;\n other: number;\n total: number;\n};\n expenses: {\n infrastructure: number;\n office: number;\n software: number;\n hardware: number;\n travel: number;\n marketing: number;\n legal: number;\n accounting: number;\n insurance: number;\n personnel: number;\n depreciation: number;\n interestExpense: number;\n rent: number;\n bankFees: number;\n professionalServices: number;\n ustPayment: number;\n other: number;\n total: number;\n};\n kapitalkonto: {\n entnahmenGesamt: number;\n entnahmenGeld: number;\n einlagenGesamt: number;\n einlagenGeld: number;\n};\n profit: number;\n taxableAmount: number;\n currency: string;\n generatedAt: string;\n bookkeepingBasis: \"eur\" | \"accrual\";\n summary: {\n totalRevenues: number;\n totalExpenses: number;\n profitMargin: number;\n};\n};\nexport type BookkeepingReportsEuerResponse = import(\"../types\").ApiEnvelope<BookkeepingReportsEuerResponseData>;\n\nexport type BookkeepingReportsSummaryParams = undefined;\nexport type BookkeepingReportsSummaryQuery = {\n year?: number;\n month?: number;\n};\nexport type BookkeepingReportsSummaryBody = undefined;\nexport type BookkeepingReportsSummaryResponseData = {\n period: {\n year: number;\n month: number | null;\n start: string;\n end: string;\n};\n summary: {\n totalRevenues: number;\n totalExpenses: number;\n profit: number;\n profitMargin: number;\n};\n revenuesByCategory: Array<{\n category: string;\n total: number;\n count: number;\n}>;\n expensesByCategory: Array<{\n category: string;\n total: number;\n count: number;\n}>;\n};\nexport type BookkeepingReportsSummaryResponse = import(\"../types\").ApiEnvelope<BookkeepingReportsSummaryResponseData>;\n\nexport type BookkeepingReportsMonthlyTrendParams = undefined;\nexport type BookkeepingReportsMonthlyTrendQuery = {\n year?: number;\n};\nexport type BookkeepingReportsMonthlyTrendBody = undefined;\nexport type BookkeepingReportsMonthlyTrendResponseData = {\n year: number;\n months: Array<{\n month: number;\n monthName: string;\n revenues: number;\n expenses: number;\n profit: number;\n}>;\n};\nexport type BookkeepingReportsMonthlyTrendResponse = import(\"../types\").ApiEnvelope<BookkeepingReportsMonthlyTrendResponseData>;\n\nexport type BookkeepingReportsAssetRegisterParams = undefined;\nexport type BookkeepingReportsAssetRegisterQuery = {\n year?: number;\n};\nexport type BookkeepingReportsAssetRegisterBody = undefined;\nexport type BookkeepingReportsAssetRegisterResponseData = {\n year: number;\n period: {\n start: string;\n end: string;\n};\n summary: {\n openingBookValue: number;\n acquisitionsNet: number;\n disposalProceeds: number;\n depreciationCurrentYear: number;\n closingBookValue: number;\n acquiredAssets: number;\n activeAssetsAtYearEnd: number;\n disposedAssetsInYear: number;\n};\n items: Array<{\n assetId: number;\n name: string;\n assetType: string;\n isActive: boolean;\n purchaseDate: string;\n purchaseAmountNet: number;\n depreciationMethod: string;\n usefulLifeMonths: number | null;\n residualValue: number;\n depreciationCurrentYear: number;\n accumulatedDepreciation: number;\n bookValueStartOfYear: number;\n bookValueEndOfYear: number;\n bookValueAtDisposal: number | null;\n disposedAt: string | null;\n disposalAmount: number | null;\n linkedDisposalRevenueId: number | null;\n sourceExpenseId: number | null;\n sourceExpenseConfirmed: boolean | null;\n}>;\n generatedAt: string;\n currency: string;\n};\nexport type BookkeepingReportsAssetRegisterResponse = import(\"../types\").ApiEnvelope<BookkeepingReportsAssetRegisterResponseData>;\n\nexport type BookkeepingReportsCategoryBreakdownParams = undefined;\nexport type BookkeepingReportsCategoryBreakdownQuery = {\n year?: number;\n type?: \"expense\" | \"revenue\";\n};\nexport type BookkeepingReportsCategoryBreakdownBody = undefined;\nexport type BookkeepingReportsCategoryBreakdownResponseData = {\n year: number;\n type: string;\n breakdown: Array<{\n category: string;\n total: number;\n count: number;\n percentage: number;\n}>;\n total: number;\n};\nexport type BookkeepingReportsCategoryBreakdownResponse = import(\"../types\").ApiEnvelope<BookkeepingReportsCategoryBreakdownResponseData>;\n\nexport type BookkeepingReportsVendorBreakdownParams = undefined;\nexport type BookkeepingReportsVendorBreakdownQuery = {\n year?: number;\n};\nexport type BookkeepingReportsVendorBreakdownBody = undefined;\nexport type BookkeepingReportsVendorBreakdownResponseData = {\n year: number;\n breakdown: Array<{\n vendor: string;\n total: number;\n count: number;\n percentage: number;\n}>;\n total: number;\n};\nexport type BookkeepingReportsVendorBreakdownResponse = import(\"../types\").ApiEnvelope<BookkeepingReportsVendorBreakdownResponseData>;\n\nexport type BookkeepingReportsVatStatusParams = undefined;\nexport type BookkeepingReportsVatStatusQuery = undefined;\nexport type BookkeepingReportsVatStatusBody = undefined;\nexport type BookkeepingReportsVatStatusResponseData = {\n currentRegime: {\n regime: string | null;\n validFrom?: any | null;\n validTo?: any | null;\n reason?: string | null;\n};\n thresholds: {\n kleinunternehmerGraceAmount: number;\n kleinunternehmerMaxAmount: number;\n};\n revenue: {\n currentYear: {\n year: number;\n amount: number;\n percent: number;\n threshold: number;\n};\n previousYear: {\n year: number;\n amount: number;\n percent: number;\n threshold: number;\n};\n};\n warning: string | null;\n warningLevel: \"none\" | \"info\" | \"warning\" | \"critical\";\n userDecisionRequired: boolean;\n regimeRecommendation: {\n currentYear: any;\n nextYear: any;\n};\n taxDecisions: Record<string, any>;\n accountingMethod: string;\n ustva: {\n filingPreference: string;\n recommendation: any;\n thresholds: {\n monthlyVatDueThreshold: number;\n annualVatDueExemptThreshold: number;\n newCompanyMonthlyYears: number;\n};\n};\n};\nexport type BookkeepingReportsVatStatusResponse = import(\"../types\").ApiEnvelope<BookkeepingReportsVatStatusResponseData>;\n\nexport type BookkeepingReportsVatPeriodsParams = undefined;\nexport type BookkeepingReportsVatPeriodsQuery = undefined;\nexport type BookkeepingReportsVatPeriodsBody = undefined;\nexport type BookkeepingReportsVatPeriodsResponseData = {\n count: number;\n periods: Array<{\n id: number;\n regime: string;\n validFrom?: any | null;\n validTo?: any | null;\n reason?: string | null;\n triggerAmount: number | null;\n triggerAt?: any | null;\n triggerDocId?: number | null;\n triggerDocType?: string | null;\n createdAt?: any | null;\n}>;\n};\nexport type BookkeepingReportsVatPeriodsResponse = import(\"../types\").ApiEnvelope<BookkeepingReportsVatPeriodsResponseData>;\n\nexport type BookkeepingReportsVatUstvaParams = undefined;\nexport type BookkeepingReportsVatUstvaQuery = {\n year?: number;\n period?: \"monthly\" | \"quarterly\" | \"annual\";\n periodNumber?: number;\n format?: \"json\" | \"csv\";\n};\nexport type BookkeepingReportsVatUstvaBody = undefined;\nexport type BookkeepingReportsVatUstvaResponseData = {\n period: {\n year: number;\n quarter?: number;\n month?: number;\n startDate: string;\n endDate: string;\n};\n generatedAt: string;\n outputVat: {\n standard19: any;\n reduced7: any;\n reverseCharge: any;\n section13bReceived: any;\n section13bTax: any;\n euB2b: any;\n export: any;\n exempt: any;\n total: number;\n};\n inputVat: {\n standard19: any;\n reduced7: any;\n section13b: any;\n other: any;\n total: number;\n};\n taxLiability: {\n outputVat: number;\n inputVat: number;\n netLiability: number;\n};\n currency: string;\n regime?: string;\n accountingMethod?: string;\n hasKleinunternehmerSegments?: boolean;\n kleinunternehmerNote?: string;\n outputVatWarnings?: Array<{\n code: \"missing_receipt_date\" | \"correction_without_refund\" | \"not_convertible\" | \"foreign_currency\";\n invoiceId: number;\n message: string;\n}>;\n};\nexport type BookkeepingReportsVatUstvaResponse = import(\"../types\").ApiEnvelope<BookkeepingReportsVatUstvaResponseData>;\n\nexport type PaymentsImportCsvParams = undefined;\nexport type PaymentsImportCsvQuery = undefined;\nexport type PaymentsImportCsvBody = {\n paymentAccountId: number;\n delimiter?: string;\n profile?: string;\n dryRun?: boolean;\n};\nexport type PaymentsImportCsvResponseData = {\n inserted: number;\n skipped: number;\n autoSyncSkipped?: number;\n preview: {\n headers: Array<string>;\n rowCount: number;\n};\n};\nexport type PaymentsImportCsvResponse = import(\"../types\").ApiEnvelope<PaymentsImportCsvResponseData>;\n\nexport type PaymentsImportCsvPreviewParams = undefined;\nexport type PaymentsImportCsvPreviewQuery = undefined;\nexport type PaymentsImportCsvPreviewBody = {\n paymentAccountId: number;\n delimiter?: string;\n profile?: string;\n dryRun?: boolean;\n previewRows?: number;\n maxRows?: number;\n};\nexport type PaymentsImportCsvPreviewResponseData = {\n profileKey: string | null;\n delimiter: string;\n preview: {\n headers: Array<string>;\n rowCount: number;\n};\n mappedRows: Array<any>;\n errors: Array<any>;\n stats: {\n validRows: number;\n invalidRows: number;\n};\n};\nexport type PaymentsImportCsvPreviewResponse = import(\"../types\").ApiEnvelope<PaymentsImportCsvPreviewResponseData>;\n\nexport type PaymentsListCsvProfilesParams = undefined;\nexport type PaymentsListCsvProfilesQuery = undefined;\nexport type PaymentsListCsvProfilesBody = undefined;\nexport type PaymentsListCsvProfilesResponseData = Array<{\n key: string;\n name: string;\n description: string | null;\n delimiterHint: string | null;\n}>;\nexport type PaymentsListCsvProfilesResponse = import(\"../types\").ApiEnvelope<PaymentsListCsvProfilesResponseData>;\n\nexport type PaymentsDownloadCsvTemplateParams = {\n profileKey: string;\n};\nexport type PaymentsDownloadCsvTemplateQuery = undefined;\nexport type PaymentsDownloadCsvTemplateBody = undefined;\nexport type PaymentsDownloadCsvTemplateResponseData = Blob;\nexport type PaymentsDownloadCsvTemplateResponse = Blob;\n\nexport type PaymentsListImportProfilesParams = undefined;\nexport type PaymentsListImportProfilesQuery = {\n includeArchived?: boolean;\n};\nexport type PaymentsListImportProfilesBody = undefined;\nexport type PaymentsListImportProfilesResponseData = PaymentImportProfile[];\nexport type PaymentsListImportProfilesResponse = import(\"../types\").ApiEnvelope<PaymentsListImportProfilesResponseData>;\n\nexport type PaymentsCreateImportProfileParams = undefined;\nexport type PaymentsCreateImportProfileQuery = undefined;\nexport type PaymentsCreateImportProfileBody = {\n key: string;\n name: string;\n description?: string;\n delimiterHint?: \",\" | \";\" | \"\\t\";\n headerAliases: Record<string, Array<string>>;\n};\nexport type PaymentsCreateImportProfileResponseData = PaymentImportProfile;\nexport type PaymentsCreateImportProfileResponse = import(\"../types\").ApiEnvelope<PaymentsCreateImportProfileResponseData>;\n\nexport type PaymentsUpdateImportProfileParams = {\n id: number;\n};\nexport type PaymentsUpdateImportProfileQuery = undefined;\nexport type PaymentsUpdateImportProfileBody = {\n key?: string;\n name?: string;\n description?: string;\n delimiterHint?: \",\" | \";\" | \"\\t\";\n headerAliases?: Record<string, Array<string>>;\n isArchived?: boolean;\n};\nexport type PaymentsUpdateImportProfileResponseData = PaymentImportProfile;\nexport type PaymentsUpdateImportProfileResponse = import(\"../types\").ApiEnvelope<PaymentsUpdateImportProfileResponseData>;\n\nexport type PaymentsSearchParams = undefined;\nexport type PaymentsSearchQuery = {\n paymentAccountId?: number;\n direction?: \"in\" | \"out\";\n q?: string;\n startDate?: string;\n endDate?: string;\n allocationStatus?: \"allocated\" | \"partial\" | \"unallocated\";\n page?: number;\n pageSize?: number;\n};\nexport type PaymentsSearchBody = undefined;\nexport type PaymentsSearchResponseData = PaginatedResult<Payment & { allocatedAmount: string; allocationCount: number }>;\nexport type PaymentsSearchResponse = import(\"../types\").ApiEnvelope<PaymentsSearchResponseData>;\n\nexport type PaymentsCreateManualParams = undefined;\nexport type PaymentsCreateManualQuery = undefined;\nexport type PaymentsCreateManualBody = {\n paymentAccountId: number;\n bookedAt: string;\n valueAt?: string;\n amount: string;\n currency?: string;\n counterpartyName?: string;\n counterpartyIban?: string;\n counterpartyBic?: string;\n reference?: string;\n endToEndId?: string;\n bankTransactionId?: string;\n raw?: any;\n allocations?: Array<{\n targetType: \"invoice\" | \"expense\" | \"revenue\";\n targetId: number;\n amount: string;\n}>;\n};\nexport type PaymentsCreateManualResponseData = Payment;\nexport type PaymentsCreateManualResponse = import(\"../types\").ApiEnvelope<PaymentsCreateManualResponseData>;\n\nexport type PaymentsTransferLinkParams = undefined;\nexport type PaymentsTransferLinkQuery = undefined;\nexport type PaymentsTransferLinkBody = {\n paymentIdA: number;\n paymentIdB: number;\n fxRate?: string;\n};\nexport type PaymentsTransferLinkResponseData = { outPayment: Payment; inPayment: Payment; fxRate: string | null };\nexport type PaymentsTransferLinkResponse = import(\"../types\").ApiEnvelope<PaymentsTransferLinkResponseData>;\n\nexport type PaymentsCashbookParams = undefined;\nexport type PaymentsCashbookQuery = {\n paymentAccountId: number;\n startDate?: string;\n endDate?: string;\n};\nexport type PaymentsCashbookBody = undefined;\nexport type PaymentsCashbookResponseData = { account: PaymentAccount & { paypalApiConfigured: boolean; sumupConnected: boolean; sumupMerchantCode: string | null; sumupMerchantLabel: string | null; sumupLastSyncAt: Date | null; sumupSyncEnabled: boolean; sumupReauthRequired: boolean; feeVatTreatment: string | null; feeVatRate: string | null; allowCsvImport: boolean; openingBalanceLocked: boolean; canEditOpeningBalance: boolean; openingBalanceLockReason: string | null; canCreateBalanceSnapshot: boolean; balanceCorrectionMode: 'opening_balance' | 'snapshot_only' }; openingBalance: string; closingBalance: string; movements: PaginatedResult<Payment> };\nexport type PaymentsCashbookResponse = import(\"../types\").ApiEnvelope<PaymentsCashbookResponseData>;\n\nexport type PaymentsMatchSuggestionsParams = {\n paymentId: number;\n};\nexport type PaymentsMatchSuggestionsQuery = {\n limit?: number;\n includePaid?: boolean;\n includeDraft?: boolean;\n};\nexport type PaymentsMatchSuggestionsBody = undefined;\nexport type PaymentsMatchSuggestionsResponseData = {\n payment: any;\n remainingAmount: string;\n suggestions: Array<any>;\n allocations: Array<any>;\n providerPayoutSuggestion: {\n payoutId: string;\n providerAccountId: number;\n providerAccountName: string;\n existingPayoutPaymentId: number | null;\n transactionCount: number;\n totalGross: string;\n totalNet: string;\n totalFees: string;\n bankDepositAmount: string;\n difference: string;\n confidence: \"high\" | \"medium\" | \"low\";\n} | null;\n};\nexport type PaymentsMatchSuggestionsResponse = import(\"../types\").ApiEnvelope<PaymentsMatchSuggestionsResponseData>;\n\nexport type PaymentsBookingPaymentSuggestionsParams = {\n targetType: \"expense\" | \"revenue\";\n targetId: number;\n};\nexport type PaymentsBookingPaymentSuggestionsQuery = {\n limit?: number;\n paymentAccountId?: number;\n};\nexport type PaymentsBookingPaymentSuggestionsBody = undefined;\nexport type PaymentsBookingPaymentSuggestionsResponseData = {\n targetType: \"expense\" | \"revenue\";\n targetId: number;\n targetAmount: string;\n targetCurrency: string;\n openAmount: string;\n suggestions: Array<any>;\n};\nexport type PaymentsBookingPaymentSuggestionsResponse = import(\"../types\").ApiEnvelope<PaymentsBookingPaymentSuggestionsResponseData>;\n\nexport type PaymentsAllocateParams = {\n paymentId: number;\n};\nexport type PaymentsAllocateQuery = undefined;\nexport type PaymentsAllocateBody = {\n allocations: Array<{\n targetType: \"invoice\" | \"expense\" | \"revenue\";\n targetId: number;\n amount: string;\n kind?: \"payment\" | \"refund\";\n}>;\n};\nexport type PaymentsAllocateResponseData = PaymentAllocation[];\nexport type PaymentsAllocateResponse = import(\"../types\").ApiEnvelope<PaymentsAllocateResponseData>;\n\nexport type PaymentsUnallocateParams = {\n paymentId: number;\n allocationId: number;\n};\nexport type PaymentsUnallocateQuery = undefined;\nexport type PaymentsUnallocateBody = undefined;\nexport type PaymentsUnallocateResponseData = {\n message: string;\n};\nexport type PaymentsUnallocateResponse = import(\"../types\").ApiEnvelope<PaymentsUnallocateResponseData>;\n\nexport type PaymentsUpdateParams = {\n paymentId: number;\n};\nexport type PaymentsUpdateQuery = undefined;\nexport type PaymentsUpdateBody = {\n bookedAt?: string;\n valueAt?: string | null;\n amount?: string;\n currency?: string;\n counterpartyName?: string;\n counterpartyIban?: string;\n counterpartyBic?: string;\n reference?: string;\n endToEndId?: string;\n bankTransactionId?: string;\n raw?: any;\n};\nexport type PaymentsUpdateResponseData = Payment;\nexport type PaymentsUpdateResponse = import(\"../types\").ApiEnvelope<PaymentsUpdateResponseData>;\n\nexport type PaymentsReversalPreviewParams = {\n paymentId: number;\n};\nexport type PaymentsReversalPreviewQuery = undefined;\nexport type PaymentsReversalPreviewBody = undefined;\nexport type PaymentsReversalPreviewResponseData = {\n payment: any;\n allocations: Array<any>;\n warnings: Array<string>;\n canReverse: boolean;\n blockers: Array<string>;\n};\nexport type PaymentsReversalPreviewResponse = import(\"../types\").ApiEnvelope<PaymentsReversalPreviewResponseData>;\n\nexport type PaymentsReverseParams = {\n paymentId: number;\n};\nexport type PaymentsReverseQuery = undefined;\nexport type PaymentsReverseBody = {\n reason: string;\n};\nexport type PaymentsReverseResponseData = {\n reversalPayment: any;\n reversedAllocations: Array<any>;\n updatedInvoices: Array<any>;\n};\nexport type PaymentsReverseResponse = import(\"../types\").ApiEnvelope<PaymentsReverseResponseData>;\n\nexport type PaymentsTransferUnlinkParams = {\n paymentId: number;\n};\nexport type PaymentsTransferUnlinkQuery = undefined;\nexport type PaymentsTransferUnlinkBody = {\n reason: string;\n};\nexport type PaymentsTransferUnlinkResponseData = { paymentA: Payment; paymentB: Payment };\nexport type PaymentsTransferUnlinkResponse = import(\"../types\").ApiEnvelope<PaymentsTransferUnlinkResponseData>;\n\nexport type PaymentsTransferLinkableParams = {\n paymentId: number;\n};\nexport type PaymentsTransferLinkableQuery = {\n paymentAccountId: number;\n direction?: \"in\" | \"out\";\n startDate?: string;\n endDate?: string;\n amountMin?: string;\n amountMax?: string;\n q?: string;\n page?: number;\n pageSize?: number;\n};\nexport type PaymentsTransferLinkableBody = undefined;\nexport type PaymentsTransferLinkableResponseData = PaginatedResult<Payment>;\nexport type PaymentsTransferLinkableResponse = import(\"../types\").ApiEnvelope<PaymentsTransferLinkableResponseData>;\n\nexport type PaymentsAllocationReversalPreviewParams = {\n paymentId: number;\n allocationId: number;\n};\nexport type PaymentsAllocationReversalPreviewQuery = undefined;\nexport type PaymentsAllocationReversalPreviewBody = undefined;\nexport type PaymentsAllocationReversalPreviewResponseData = {\n allocation: any;\n invoice: any | null;\n newInvoiceStatus: string | null;\n remainingAllocationAfterReversal: string;\n impact: string;\n canReverse: boolean;\n blockers: Array<string>;\n};\nexport type PaymentsAllocationReversalPreviewResponse = import(\"../types\").ApiEnvelope<PaymentsAllocationReversalPreviewResponseData>;\n\nexport type PaymentsAllocationReverseParams = {\n paymentId: number;\n allocationId: number;\n};\nexport type PaymentsAllocationReverseQuery = undefined;\nexport type PaymentsAllocationReverseBody = undefined;\nexport type PaymentsAllocationReverseResponseData = {\n reversalAllocation: any;\n updatedInvoice: any | null;\n};\nexport type PaymentsAllocationReverseResponse = import(\"../types\").ApiEnvelope<PaymentsAllocationReverseResponseData>;\n\nexport type PaymentsDeleteParams = {\n paymentId: number;\n};\nexport type PaymentsDeleteQuery = undefined;\nexport type PaymentsDeleteBody = undefined;\nexport type PaymentsDeleteResponseData = {\n message: string;\n};\nexport type PaymentsDeleteResponse = import(\"../types\").ApiEnvelope<PaymentsDeleteResponseData>;\n\nexport type PaymentsBookParams = {\n paymentId: number;\n};\nexport type PaymentsBookQuery = undefined;\nexport type PaymentsBookBody = {\n category: string;\n description: string;\n notes?: string | null;\n amount?: string;\n netAmount?: string;\n taxAmount?: string | null;\n taxRate?: string | number | null;\n inputVatEligibility?: \"NONE\" | \"FULL\" | \"PARTIAL\";\n inputVatAmount?: string | null;\n inputVatRate?: string | null;\n isDeductible?: boolean;\n isConfirmed?: boolean;\n vendor?: string | null;\n vendorInvoiceNumber?: string | null;\n};\nexport type PaymentsBookResponseData = {\n targetType: \"expense\" | \"revenue\";\n targetId: number;\n allocationId: number;\n paymentId: number;\n};\nexport type PaymentsBookResponse = import(\"../types\").ApiEnvelope<PaymentsBookResponseData>;\n\nexport type PaymentsRecordFeeParams = {\n paymentId: number;\n};\nexport type PaymentsRecordFeeQuery = undefined;\nexport type PaymentsRecordFeeBody = {\n amount: string;\n description?: string;\n};\nexport type PaymentsRecordFeeResponseData = PaymentAllocation;\nexport type PaymentsRecordFeeResponse = import(\"../types\").ApiEnvelope<PaymentsRecordFeeResponseData>;\n\nexport type PaymentsWriteoffParams = {\n paymentId: number;\n};\nexport type PaymentsWriteoffQuery = undefined;\nexport type PaymentsWriteoffBody = {\n targetType: \"invoice\" | \"expense\" | \"revenue\";\n targetId: number;\n amount: string;\n reason: string;\n};\nexport type PaymentsWriteoffResponseData = PaymentAllocation;\nexport type PaymentsWriteoffResponse = import(\"../types\").ApiEnvelope<PaymentsWriteoffResponseData>;\n\nexport type PaymentsApplyDiscountParams = {\n paymentId: number;\n};\nexport type PaymentsApplyDiscountQuery = undefined;\nexport type PaymentsApplyDiscountBody = {\n targetType: \"invoice\" | \"expense\" | \"revenue\";\n targetId: number;\n amount: string;\n reason?: string;\n};\nexport type PaymentsApplyDiscountResponseData = PaymentAllocation;\nexport type PaymentsApplyDiscountResponse = import(\"../types\").ApiEnvelope<PaymentsApplyDiscountResponseData>;\n\nexport type PaymentsGetAccountByIdParams = {\n accountId: number;\n};\nexport type PaymentsGetAccountByIdQuery = undefined;\nexport type PaymentsGetAccountByIdBody = undefined;\nexport type PaymentsGetAccountByIdResponseData = PaymentAccount & { paypalApiConfigured: boolean; sumupConnected: boolean; sumupMerchantCode: string | null; sumupMerchantLabel: string | null; sumupLastSyncAt: Date | null; sumupSyncEnabled: boolean; sumupReauthRequired: boolean; feeVatTreatment: string | null; feeVatRate: string | null; allowCsvImport: boolean; openingBalanceLocked: boolean; canEditOpeningBalance: boolean; openingBalanceLockReason: string | null; canCreateBalanceSnapshot: boolean; balanceCorrectionMode: 'opening_balance' | 'snapshot_only' };\nexport type PaymentsGetAccountByIdResponse = import(\"../types\").ApiEnvelope<PaymentsGetAccountByIdResponseData>;\n\nexport type PaymentsListAccountsParams = undefined;\nexport type PaymentsListAccountsQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n};\nexport type PaymentsListAccountsBody = undefined;\nexport type PaymentsListAccountsResponseData = PaginatedResult<PaymentAccount & { paypalApiConfigured: boolean; sumupConnected: boolean; sumupMerchantCode: string | null; sumupMerchantLabel: string | null; sumupLastSyncAt: Date | null; sumupSyncEnabled: boolean; sumupReauthRequired: boolean; feeVatTreatment: string | null; feeVatRate: string | null; allowCsvImport: boolean; openingBalanceLocked: boolean; canEditOpeningBalance: boolean; openingBalanceLockReason: string | null; canCreateBalanceSnapshot: boolean; balanceCorrectionMode: 'opening_balance' | 'snapshot_only' }>;\nexport type PaymentsListAccountsResponse = import(\"../types\").ApiEnvelope<PaymentsListAccountsResponseData>;\n\nexport type PaymentsCreateAccountParams = undefined;\nexport type PaymentsCreateAccountQuery = undefined;\nexport type PaymentsCreateAccountBody = {\n type: \"bank\" | \"cash\" | \"paypal\" | \"sumup\";\n name: string;\n currency?: string;\n costCenterId?: number | null;\n iban?: string | null;\n bic?: string | null;\n bankName?: string | null;\n accountOwner?: string | null;\n paypalEmail?: string | null;\n paypalHandle?: string | null;\n paypalClientId?: string | null;\n paypalClientSecret?: string | null;\n paypalEnvironment?: \"live\" | \"sandbox\";\n paypalSyncEnabled?: boolean;\n sumupSyncEnabled?: boolean;\n isDefault?: boolean;\n openingBalance?: string | null;\n openingBalanceDate?: string | string | {\n year: number;\n month: number;\n day: number;\n} | null;\n};\nexport type PaymentsCreateAccountResponseData = PaymentAccount & { paypalApiConfigured: boolean; sumupConnected: boolean; sumupMerchantCode: string | null; sumupMerchantLabel: string | null; sumupLastSyncAt: Date | null; sumupSyncEnabled: boolean; sumupReauthRequired: boolean; feeVatTreatment: string | null; feeVatRate: string | null; allowCsvImport: boolean; openingBalanceLocked: boolean; canEditOpeningBalance: boolean; openingBalanceLockReason: string | null; canCreateBalanceSnapshot: boolean; balanceCorrectionMode: 'opening_balance' | 'snapshot_only' };\nexport type PaymentsCreateAccountResponse = import(\"../types\").ApiEnvelope<PaymentsCreateAccountResponseData>;\n\nexport type PaymentsUpdateAccountParams = {\n accountId: number;\n};\nexport type PaymentsUpdateAccountQuery = undefined;\nexport type PaymentsUpdateAccountBody = {\n type?: \"bank\" | \"cash\" | \"paypal\" | \"sumup\";\n name?: string;\n currency?: string;\n costCenterId?: number | null;\n iban?: string | null;\n bic?: string | null;\n bankName?: string | null;\n accountOwner?: string | null;\n paypalEmail?: string | null;\n paypalHandle?: string | null;\n paypalClientId?: string | null;\n paypalClientSecret?: string | null;\n paypalEnvironment?: \"live\" | \"sandbox\";\n paypalSyncEnabled?: boolean;\n sumupSyncEnabled?: boolean;\n isDefault?: boolean;\n openingBalance?: string | null;\n openingBalanceDate?: string | string | {\n year: number;\n month: number;\n day: number;\n} | null;\n isArchived?: boolean;\n allowCsvImport?: boolean;\n};\nexport type PaymentsUpdateAccountResponseData = PaymentAccount & { paypalApiConfigured: boolean; sumupConnected: boolean; sumupMerchantCode: string | null; sumupMerchantLabel: string | null; sumupLastSyncAt: Date | null; sumupSyncEnabled: boolean; sumupReauthRequired: boolean; feeVatTreatment: string | null; feeVatRate: string | null; allowCsvImport: boolean; openingBalanceLocked: boolean; canEditOpeningBalance: boolean; openingBalanceLockReason: string | null; canCreateBalanceSnapshot: boolean; balanceCorrectionMode: 'opening_balance' | 'snapshot_only' };\nexport type PaymentsUpdateAccountResponse = import(\"../types\").ApiEnvelope<PaymentsUpdateAccountResponseData>;\n\nexport type PaymentsArchiveAccountParams = {\n accountId: number;\n};\nexport type PaymentsArchiveAccountQuery = undefined;\nexport type PaymentsArchiveAccountBody = undefined;\nexport type PaymentsArchiveAccountResponseData = {\n archived: boolean;\n message: string;\n};\nexport type PaymentsArchiveAccountResponse = import(\"../types\").ApiEnvelope<PaymentsArchiveAccountResponseData>;\n\nexport type PaymentsDeleteAccountParams = {\n accountId: number;\n};\nexport type PaymentsDeleteAccountQuery = undefined;\nexport type PaymentsDeleteAccountBody = undefined;\nexport type PaymentsDeleteAccountResponseData = {\n deleted: boolean;\n message: string;\n};\nexport type PaymentsDeleteAccountResponse = import(\"../types\").ApiEnvelope<PaymentsDeleteAccountResponseData>;\n\nexport type PaymentsPaypalSyncParams = {\n accountId: number;\n};\nexport type PaymentsPaypalSyncQuery = {\n fromDate?: string;\n toDate?: string;\n};\nexport type PaymentsPaypalSyncBody = undefined;\nexport type PaymentsPaypalSyncResponseData = { inserted: number; skipped: number; syncedFrom: string; syncedUntil: string; accountId: number };\nexport type PaymentsPaypalSyncResponse = import(\"../types\").ApiEnvelope<PaymentsPaypalSyncResponseData>;\n\nexport type PaymentsSumupOauthStartParams = {\n accountId: number;\n};\nexport type PaymentsSumupOauthStartQuery = undefined;\nexport type PaymentsSumupOauthStartBody = {\n autoCreateBankAccount?: boolean;\n};\nexport type PaymentsSumupOauthStartResponseData = { authorizeUrl: string; state: string; expiresAt: string | Date };\nexport type PaymentsSumupOauthStartResponse = import(\"../types\").ApiEnvelope<PaymentsSumupOauthStartResponseData>;\n\nexport type PaymentsSumupSyncParams = {\n accountId: number;\n};\nexport type PaymentsSumupSyncQuery = {\n fromDate?: string;\n toDate?: string;\n};\nexport type PaymentsSumupSyncBody = undefined;\nexport type PaymentsSumupSyncResponseData = { inserted: number; skipped: number; payoutsInserted: number; payoutsSkipped: number; syncedFrom: string; syncedUntil: string; accountId: number };\nexport type PaymentsSumupSyncResponse = import(\"../types\").ApiEnvelope<PaymentsSumupSyncResponseData>;\n\nexport type PaymentsSumupOauthDisconnectParams = {\n accountId: number;\n};\nexport type PaymentsSumupOauthDisconnectQuery = undefined;\nexport type PaymentsSumupOauthDisconnectBody = undefined;\nexport type PaymentsSumupOauthDisconnectResponseData = { disconnected: boolean };\nexport type PaymentsSumupOauthDisconnectResponse = import(\"../types\").ApiEnvelope<PaymentsSumupOauthDisconnectResponseData>;\n\nexport type PaymentsPaypalWebhookRegisterParams = {\n accountId: number;\n};\nexport type PaymentsPaypalWebhookRegisterQuery = undefined;\nexport type PaymentsPaypalWebhookRegisterBody = {\n callbackUrl: string;\n};\nexport type PaymentsPaypalWebhookRegisterResponseData = { webhookId: string; callbackUrl: string };\nexport type PaymentsPaypalWebhookRegisterResponse = import(\"../types\").ApiEnvelope<PaymentsPaypalWebhookRegisterResponseData>;\n\nexport type PaymentsPaypalWebhookDeregisterParams = {\n accountId: number;\n};\nexport type PaymentsPaypalWebhookDeregisterQuery = undefined;\nexport type PaymentsPaypalWebhookDeregisterBody = undefined;\nexport type PaymentsPaypalWebhookDeregisterResponseData = { removed: boolean };\nexport type PaymentsPaypalWebhookDeregisterResponse = import(\"../types\").ApiEnvelope<PaymentsPaypalWebhookDeregisterResponseData>;\n\nexport type PaymentsListBalanceSnapshotsParams = undefined;\nexport type PaymentsListBalanceSnapshotsQuery = {\n paymentAccountId: number;\n includeVoided?: boolean;\n page?: number;\n pageSize?: number;\n};\nexport type PaymentsListBalanceSnapshotsBody = undefined;\nexport type PaymentsListBalanceSnapshotsResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type PaymentsListBalanceSnapshotsResponse = import(\"../types\").ApiEnvelope<PaymentsListBalanceSnapshotsResponseData>;\n\nexport type PaymentsCreateBalanceSnapshotParams = undefined;\nexport type PaymentsCreateBalanceSnapshotQuery = undefined;\nexport type PaymentsCreateBalanceSnapshotBody = {\n paymentAccountId: number;\n asOfAt: string;\n balanceType?: \"bank_statement\" | \"manual_count\" | \"api_reported\";\n balance: string;\n currency?: string;\n source?: \"manual\" | \"csv_import\" | \"paypal_api\" | \"sumup_api\";\n externalRef?: string | null;\n note?: string | null;\n raw?: any;\n};\nexport type PaymentsCreateBalanceSnapshotResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type PaymentsCreateBalanceSnapshotResponse = import(\"../types\").ApiEnvelope<PaymentsCreateBalanceSnapshotResponseData>;\n\nexport type PaymentsVoidBalanceSnapshotParams = {\n snapshotId: number;\n};\nexport type PaymentsVoidBalanceSnapshotQuery = undefined;\nexport type PaymentsVoidBalanceSnapshotBody = {\n reason: string;\n};\nexport type PaymentsVoidBalanceSnapshotResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type PaymentsVoidBalanceSnapshotResponse = import(\"../types\").ApiEnvelope<PaymentsVoidBalanceSnapshotResponseData>;\n\nexport type PaymentsUpdateFeeVatTreatmentParams = {\n accountId: number;\n};\nexport type PaymentsUpdateFeeVatTreatmentQuery = undefined;\nexport type PaymentsUpdateFeeVatTreatmentBody = {\n feeVatTreatment: \"UNKNOWN\" | \"EXEMPT\" | \"INCLUSIVE_STANDARD\" | \"REVERSE_CHARGE_13B\";\n feeVatRate?: string;\n};\nexport type PaymentsUpdateFeeVatTreatmentResponseData = PaymentProviderConnection;\nexport type PaymentsUpdateFeeVatTreatmentResponse = import(\"../types\").ApiEnvelope<PaymentsUpdateFeeVatTreatmentResponseData>;\n\nexport type PaymentsListFeeProposalsParams = undefined;\nexport type PaymentsListFeeProposalsQuery = {\n accountId?: number;\n status?: \"PROPOSED\" | \"CONFIRMED\" | \"REJECTED\";\n page?: number;\n pageSize?: number;\n};\nexport type PaymentsListFeeProposalsBody = undefined;\nexport type PaymentsListFeeProposalsResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type PaymentsListFeeProposalsResponse = import(\"../types\").ApiEnvelope<PaymentsListFeeProposalsResponseData>;\n\nexport type PaymentsConfirmFeeProposalsParams = undefined;\nexport type PaymentsConfirmFeeProposalsQuery = undefined;\nexport type PaymentsConfirmFeeProposalsBody = {\n expenseIds: Array<number>;\n};\nexport type PaymentsConfirmFeeProposalsResponseData = {\n confirmed: number;\n};\nexport type PaymentsConfirmFeeProposalsResponse = import(\"../types\").ApiEnvelope<PaymentsConfirmFeeProposalsResponseData>;\n\nexport type PaymentsRejectFeeProposalsParams = undefined;\nexport type PaymentsRejectFeeProposalsQuery = undefined;\nexport type PaymentsRejectFeeProposalsBody = {\n expenseIds: Array<number>;\n};\nexport type PaymentsRejectFeeProposalsResponseData = {\n rejected: number;\n};\nexport type PaymentsRejectFeeProposalsResponse = import(\"../types\").ApiEnvelope<PaymentsRejectFeeProposalsResponseData>;\n\nexport type PaymentsPaypalWebhookReceiveParams = undefined;\nexport type PaymentsPaypalWebhookReceiveQuery = import(\"../types\").ContractNotReady<\"Query not typed yet. Add DTO + validate({ query }) to the route (or explicitly declare none).\">;\nexport type PaymentsPaypalWebhookReceiveBody = import(\"../types\").ContractNotReady<\"Body not typed yet. Add DTO + validate({ body }) or contract({ request: ... }) to the route.\">;\nexport type PaymentsPaypalWebhookReceiveResponseData = { status: string };\nexport type PaymentsPaypalWebhookReceiveResponse = import(\"../types\").ApiEnvelope<PaymentsPaypalWebhookReceiveResponseData>;\n\nexport type PaymentsSumupOauthCallbackParams = undefined;\nexport type PaymentsSumupOauthCallbackQuery = {\n state: string;\n code?: string;\n error?: string;\n error_description?: string;\n};\nexport type PaymentsSumupOauthCallbackBody = undefined;\nexport type PaymentsSumupOauthCallbackResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type PaymentsSumupOauthCallbackResponse = import(\"../types\").ApiEnvelope<PaymentsSumupOauthCallbackResponseData>;\n\nexport type BookkeepingPaymentsListAccountsExternalParams = undefined;\nexport type BookkeepingPaymentsListAccountsExternalQuery = {\n search?: string;\n includeArchived?: boolean;\n};\nexport type BookkeepingPaymentsListAccountsExternalBody = undefined;\nexport type BookkeepingPaymentsListAccountsExternalResponseData = PaymentAccount[];\nexport type BookkeepingPaymentsListAccountsExternalResponse = import(\"../types\").ApiEnvelope<BookkeepingPaymentsListAccountsExternalResponseData>;\n\nexport type BookkeepingPaymentsCreateManualExternalParams = undefined;\nexport type BookkeepingPaymentsCreateManualExternalQuery = undefined;\nexport type BookkeepingPaymentsCreateManualExternalBody = {\n paymentAccountId: number;\n bookedAt: string;\n valueAt?: string;\n amount: string;\n currency?: string;\n counterpartyName?: string;\n counterpartyIban?: string;\n counterpartyBic?: string;\n reference?: string;\n endToEndId?: string;\n bankTransactionId?: string;\n externalRef?: string;\n raw?: any;\n};\nexport type BookkeepingPaymentsCreateManualExternalResponseData = Payment;\nexport type BookkeepingPaymentsCreateManualExternalResponse = import(\"../types\").ApiEnvelope<BookkeepingPaymentsCreateManualExternalResponseData>;\n\nexport type BookkeepingPaymentsSettleInvoiceExternalParams = undefined;\nexport type BookkeepingPaymentsSettleInvoiceExternalQuery = undefined;\nexport type BookkeepingPaymentsSettleInvoiceExternalBody = {\n invoiceId: number;\n paymentAccountId: number;\n bookedAt: string;\n valueAt?: string;\n payoutAmount: string | number;\n currency?: string;\n counterpartyName?: string;\n counterpartyIban?: string;\n counterpartyBic?: string;\n reference?: string;\n endToEndId?: string;\n bankTransactionId?: string;\n externalRef?: string;\n closeGapStrategy?: \"none\" | \"discount\";\n closeGapReason?: string;\n markInvoicePaid?: boolean;\n raw?: any;\n};\nexport type BookkeepingPaymentsSettleInvoiceExternalResponseData = { createdPayment: boolean; idempotent: boolean; payment: Payment; allocations: PaymentAllocation[]; invoice: Invoice; closed: boolean; shortfallAmount: string; gapClosed: boolean };\nexport type BookkeepingPaymentsSettleInvoiceExternalResponse = import(\"../types\").ApiEnvelope<BookkeepingPaymentsSettleInvoiceExternalResponseData>;\n\nexport type BookkeepingAuditLogsParams = undefined;\nexport type BookkeepingAuditLogsQuery = {\n page?: number;\n pageSize?: number;\n action?: string;\n entityType?: string;\n entityId?: number;\n startDate?: string;\n endDate?: string;\n};\nexport type BookkeepingAuditLogsBody = undefined;\nexport type BookkeepingAuditLogsResponseData = PaginatedResult<BookkeepingAuditLog>;\nexport type BookkeepingAuditLogsResponse = import(\"../types\").ApiEnvelope<BookkeepingAuditLogsResponseData>;\n\nexport type BookkeepingLocksGetStateParams = undefined;\nexport type BookkeepingLocksGetStateQuery = undefined;\nexport type BookkeepingLocksGetStateBody = undefined;\nexport type BookkeepingLocksGetStateResponseData = BookkeepingLockState;\nexport type BookkeepingLocksGetStateResponse = import(\"../types\").ApiEnvelope<BookkeepingLocksGetStateResponseData>;\n\nexport type BookkeepingLocksRecommendationParams = undefined;\nexport type BookkeepingLocksRecommendationQuery = {\n asOf?: string;\n};\nexport type BookkeepingLocksRecommendationBody = undefined;\nexport type BookkeepingLocksRecommendationResponseData = {\n asOf: string;\n companyPreference: string;\n vatRegime: string | null;\n ustvaRecommendation: any;\n thresholds: {\n ustvaMonthlyVatDueThreshold: number;\n ustvaAnnualVatDueExemptThreshold: number;\n ustvaNewCompanyMonthlyYears: number;\n};\n suggested: {\n period: \"monthly\" | \"quarterly\" | \"annual\" | \"none\";\n lockedUntil: string | null;\n reason: string;\n periodStart: string | null;\n periodEnd: string | null;\n};\n readiness: {\n period: {\n start: string;\n end: string;\n};\n status: \"ready\" | \"attention\";\n issues: Array<{\n key: \"unallocated_payments\" | \"draft_invoices\" | \"unconfirmed_expenses\" | \"unconfirmed_revenues\";\n severity: \"warning\" | \"info\";\n count: number;\n message: string;\n}>;\n paymentsInPeriodCount: number;\n unallocatedPaymentsCount: number;\n draftInvoicesCount: number;\n unconfirmedExpensesCount: number | null;\n unconfirmedRevenuesCount: number | null;\n unmatchedConfirmedCount: number | null;\n notes: Array<string>;\n} | null;\n};\nexport type BookkeepingLocksRecommendationResponse = import(\"../types\").ApiEnvelope<BookkeepingLocksRecommendationResponseData>;\n\nexport type BookkeepingLocksOverviewParams = undefined;\nexport type BookkeepingLocksOverviewQuery = {\n asOf?: string;\n};\nexport type BookkeepingLocksOverviewBody = undefined;\nexport type BookkeepingLocksOverviewResponseData = {\n asOf: string;\n current: {\n state: \"unlocked\" | \"locked_payments_only\" | \"locked_strict\";\n tone: \"neutral\" | \"warning\" | \"danger\";\n isLocked: boolean;\n configuredLockMode: \"payments_only\" | \"strict\";\n effectiveLockMode: \"payments_only\" | \"strict\" | null;\n lockModeLabel: string;\n lockedUntil: string | null;\n nextOpenDate: string | null;\n reason: string | null;\n lockedAt: string | null;\n lockedBy: number | null;\n updatedAt: string;\n updatedBy: number | null;\n boundaryRule: {\n kind: \"inclusive_date_cutoff\";\n expression: \"date <= lockedUntil\";\n explanation: string;\n};\n};\n states: Array<{\n key: \"unlocked\" | \"locked_payments_only\" | \"locked_strict\";\n label: string;\n tone: \"neutral\" | \"warning\" | \"danger\";\n explanation: string;\n}>;\n modes: Array<{\n key: \"payments_only\" | \"strict\";\n label: string;\n description: string;\n}>;\n areas: Array<{\n key: \"payments\" | \"payment_import\" | \"payment_allocations\" | \"invoices\" | \"expenses\" | \"revenues\" | \"assets\";\n label: string;\n blockedWhen: Array<\"payments_only\" | \"strict\">;\n blockedNow: boolean;\n explanation: string;\n}>;\n constraints: {\n reducingOrClearingRequiresReason: boolean;\n};\n};\nexport type BookkeepingLocksOverviewResponse = import(\"../types\").ApiEnvelope<BookkeepingLocksOverviewResponseData>;\n\nexport type BookkeepingLocksSetParams = undefined;\nexport type BookkeepingLocksSetQuery = undefined;\nexport type BookkeepingLocksSetBody = {\n lockedUntil: string | null;\n reason?: string;\n lockMode?: \"payments_only\" | \"strict\";\n};\nexport type BookkeepingLocksSetResponseData = BookkeepingLockState;\nexport type BookkeepingLocksSetResponse = import(\"../types\").ApiEnvelope<BookkeepingLocksSetResponseData>;\n\nexport type BookkeepingTaxParamsHealthParams = undefined;\nexport type BookkeepingTaxParamsHealthQuery = import(\"../types\").ContractNotReady<\"Query not typed yet. Add DTO + validate({ query }) to the route (or explicitly declare none).\">;\nexport type BookkeepingTaxParamsHealthBody = undefined;\nexport type BookkeepingTaxParamsHealthResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingTaxParamsHealthResponse = import(\"../types\").ApiEnvelope<BookkeepingTaxParamsHealthResponseData>;\n\nexport type BookkeepingTaxParamsSyncParams = undefined;\nexport type BookkeepingTaxParamsSyncQuery = import(\"../types\").ContractNotReady<\"Query not typed yet. Add DTO + validate({ query }) to the route (or explicitly declare none).\">;\nexport type BookkeepingTaxParamsSyncBody = import(\"../types\").ContractNotReady<\"Body not typed yet. Add DTO + validate({ body }) or contract({ request: ... }) to the route.\">;\nexport type BookkeepingTaxParamsSyncResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingTaxParamsSyncResponse = import(\"../types\").ApiEnvelope<BookkeepingTaxParamsSyncResponseData>;\n\nexport type BookkeepingTaxParamsListParams = undefined;\nexport type BookkeepingTaxParamsListQuery = {\n category?: \"afa\" | \"vat\" | \"threshold\" | \"building\";\n paramKey?: string;\n effectiveDate?: string;\n};\nexport type BookkeepingTaxParamsListBody = undefined;\nexport type BookkeepingTaxParamsListResponseData = Array<any>;\nexport type BookkeepingTaxParamsListResponse = import(\"../types\").ApiEnvelope<BookkeepingTaxParamsListResponseData>;\n\nexport type BookkeepingTaxParamsHistoryParams = {\n key: string;\n};\nexport type BookkeepingTaxParamsHistoryQuery = undefined;\nexport type BookkeepingTaxParamsHistoryBody = undefined;\nexport type BookkeepingTaxParamsHistoryResponseData = Array<any>;\nexport type BookkeepingTaxParamsHistoryResponse = import(\"../types\").ApiEnvelope<BookkeepingTaxParamsHistoryResponseData>;\n\nexport type BookkeepingTaxParamsCreateParams = undefined;\nexport type BookkeepingTaxParamsCreateQuery = undefined;\nexport type BookkeepingTaxParamsCreateBody = {\n paramKey: string;\n category: \"afa\" | \"vat\" | \"threshold\" | \"building\";\n value: Record<string, any>;\n validFrom: string;\n validTo?: string | null;\n legalRef?: string;\n description?: string;\n changeReason: string;\n};\nexport type BookkeepingTaxParamsCreateResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingTaxParamsCreateResponse = import(\"../types\").ApiEnvelope<BookkeepingTaxParamsCreateResponseData>;\n\nexport type BookkeepingTaxParamsUpdateParams = {\n id: number;\n};\nexport type BookkeepingTaxParamsUpdateQuery = undefined;\nexport type BookkeepingTaxParamsUpdateBody = {\n value?: Record<string, any>;\n validTo?: string | null;\n legalRef?: string;\n description?: string;\n changeReason: string;\n};\nexport type BookkeepingTaxParamsUpdateResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingTaxParamsUpdateResponse = import(\"../types\").ApiEnvelope<BookkeepingTaxParamsUpdateResponseData>;\n\nexport type BookkeepingIncomeTaxGetSettingsParams = undefined;\nexport type BookkeepingIncomeTaxGetSettingsQuery = import(\"../types\").ContractNotReady<\"Query not typed yet. Add DTO + validate({ query }) to the route (or explicitly declare none).\">;\nexport type BookkeepingIncomeTaxGetSettingsBody = undefined;\nexport type BookkeepingIncomeTaxGetSettingsResponseData = IncomeTaxSettings;\nexport type BookkeepingIncomeTaxGetSettingsResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxGetSettingsResponseData>;\n\nexport type BookkeepingIncomeTaxUpsertSettingsParams = undefined;\nexport type BookkeepingIncomeTaxUpsertSettingsQuery = undefined;\nexport type BookkeepingIncomeTaxUpsertSettingsBody = {\n bundesland?: \"BW\" | \"BY\" | \"BE\" | \"BB\" | \"HB\" | \"HH\" | \"HE\" | \"MV\" | \"NI\" | \"NW\" | \"RP\" | \"SL\" | \"SN\" | \"ST\" | \"SH\" | \"TH\";\n kirchensteuerpflichtig: boolean;\n kirchensteuerRate?: string | number;\n gewerbesteuerHebesatz?: string | number;\n isGewerbetreibend?: boolean;\n anzahlKinder?: number;\n hatSchwerbehinderung?: boolean;\n gradDerBehinderung?: number;\n quartalsVorauszahlungESt?: string | number;\n quartalsVorauszahlungSoli?: string | number;\n quartalsVorauszahlungKiSt?: string | number;\n};\nexport type BookkeepingIncomeTaxUpsertSettingsResponseData = IncomeTaxSettings;\nexport type BookkeepingIncomeTaxUpsertSettingsResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxUpsertSettingsResponseData>;\n\nexport type BookkeepingIncomeTaxListEmploymentParams = undefined;\nexport type BookkeepingIncomeTaxListEmploymentQuery = {\n taxYear: number;\n};\nexport type BookkeepingIncomeTaxListEmploymentBody = undefined;\nexport type BookkeepingIncomeTaxListEmploymentResponseData = EmploymentIncome[];\nexport type BookkeepingIncomeTaxListEmploymentResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxListEmploymentResponseData>;\n\nexport type BookkeepingIncomeTaxGetEmploymentParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxGetEmploymentQuery = undefined;\nexport type BookkeepingIncomeTaxGetEmploymentBody = undefined;\nexport type BookkeepingIncomeTaxGetEmploymentResponseData = EmploymentIncome;\nexport type BookkeepingIncomeTaxGetEmploymentResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxGetEmploymentResponseData>;\n\nexport type BookkeepingIncomeTaxCreateEmploymentParams = undefined;\nexport type BookkeepingIncomeTaxCreateEmploymentQuery = undefined;\nexport type BookkeepingIncomeTaxCreateEmploymentBody = {\n taxYear: number;\n employerName: string;\n employerSteuernummer?: string;\n employmentPeriodFrom?: string;\n employmentPeriodTo?: string;\n bruttoarbeitslohn: string | number;\n lohnsteuer?: string | number;\n solidaritaetszuschlag?: string | number;\n kirchensteuer?: string | number;\n versorgungsbezuege?: string | number;\n lohnersatzleistungen?: string | number;\n steuerfreiFahrtkosten?: string | number;\n pauschalBesteuertFahrtkosten?: string | number;\n agAnteilRV?: string | number;\n anAnteilRV?: string | number;\n agZuschussKV?: string | number;\n anBeitraegeKV?: string | number;\n anBeitraegePV?: string | number;\n anBeitraegeAV?: string | number;\n documentId?: number;\n notes?: string;\n};\nexport type BookkeepingIncomeTaxCreateEmploymentResponseData = EmploymentIncome;\nexport type BookkeepingIncomeTaxCreateEmploymentResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxCreateEmploymentResponseData>;\n\nexport type BookkeepingIncomeTaxUpdateEmploymentParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxUpdateEmploymentQuery = undefined;\nexport type BookkeepingIncomeTaxUpdateEmploymentBody = {\n taxYear?: number;\n employerName?: string;\n employerSteuernummer?: string;\n employmentPeriodFrom?: string;\n employmentPeriodTo?: string;\n bruttoarbeitslohn?: string | number;\n lohnsteuer?: string | number;\n solidaritaetszuschlag?: string | number;\n kirchensteuer?: string | number;\n versorgungsbezuege?: string | number;\n lohnersatzleistungen?: string | number;\n steuerfreiFahrtkosten?: string | number;\n pauschalBesteuertFahrtkosten?: string | number;\n agAnteilRV?: string | number;\n anAnteilRV?: string | number;\n agZuschussKV?: string | number;\n anBeitraegeKV?: string | number;\n anBeitraegePV?: string | number;\n anBeitraegeAV?: string | number;\n documentId?: number;\n notes?: string;\n};\nexport type BookkeepingIncomeTaxUpdateEmploymentResponseData = EmploymentIncome;\nexport type BookkeepingIncomeTaxUpdateEmploymentResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxUpdateEmploymentResponseData>;\n\nexport type BookkeepingIncomeTaxDeleteEmploymentParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxDeleteEmploymentQuery = undefined;\nexport type BookkeepingIncomeTaxDeleteEmploymentBody = undefined;\nexport type BookkeepingIncomeTaxDeleteEmploymentResponseData = null;\nexport type BookkeepingIncomeTaxDeleteEmploymentResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxDeleteEmploymentResponseData>;\n\nexport type BookkeepingIncomeTaxListWerbungskostenParams = undefined;\nexport type BookkeepingIncomeTaxListWerbungskostenQuery = {\n taxYear: number;\n};\nexport type BookkeepingIncomeTaxListWerbungskostenBody = undefined;\nexport type BookkeepingIncomeTaxListWerbungskostenResponseData = Werbungskosten[];\nexport type BookkeepingIncomeTaxListWerbungskostenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxListWerbungskostenResponseData>;\n\nexport type BookkeepingIncomeTaxCreateWerbungskostenParams = undefined;\nexport type BookkeepingIncomeTaxCreateWerbungskostenQuery = undefined;\nexport type BookkeepingIncomeTaxCreateWerbungskostenBody = {\n taxYear: number;\n type: \"entfernungspauschale\" | \"homeoffice\" | \"arbeitsmittel\" | \"fortbildung\" | \"bewerbungskosten\" | \"doppelte_haushaltsfuehrung\" | \"reisekosten\" | \"kontogebuehren\" | \"fachliteratur\" | \"berufskleidung\" | \"gewerkschaft\" | \"other\";\n description: string;\n amount: string | number;\n details?: {\n distanceKm?: number;\n workDaysPerYear?: number;\n daysWorkedFromHome?: number;\n};\n documentId?: number;\n};\nexport type BookkeepingIncomeTaxCreateWerbungskostenResponseData = Werbungskosten;\nexport type BookkeepingIncomeTaxCreateWerbungskostenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxCreateWerbungskostenResponseData>;\n\nexport type BookkeepingIncomeTaxUpdateWerbungskostenParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxUpdateWerbungskostenQuery = undefined;\nexport type BookkeepingIncomeTaxUpdateWerbungskostenBody = {\n taxYear?: number;\n type?: \"entfernungspauschale\" | \"homeoffice\" | \"arbeitsmittel\" | \"fortbildung\" | \"bewerbungskosten\" | \"doppelte_haushaltsfuehrung\" | \"reisekosten\" | \"kontogebuehren\" | \"fachliteratur\" | \"berufskleidung\" | \"gewerkschaft\" | \"other\";\n description?: string;\n amount?: string | number;\n details?: {\n distanceKm?: number;\n workDaysPerYear?: number;\n daysWorkedFromHome?: number;\n};\n documentId?: number;\n};\nexport type BookkeepingIncomeTaxUpdateWerbungskostenResponseData = Werbungskosten;\nexport type BookkeepingIncomeTaxUpdateWerbungskostenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxUpdateWerbungskostenResponseData>;\n\nexport type BookkeepingIncomeTaxDeleteWerbungskostenParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxDeleteWerbungskostenQuery = undefined;\nexport type BookkeepingIncomeTaxDeleteWerbungskostenBody = undefined;\nexport type BookkeepingIncomeTaxDeleteWerbungskostenResponseData = null;\nexport type BookkeepingIncomeTaxDeleteWerbungskostenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxDeleteWerbungskostenResponseData>;\n\nexport type BookkeepingIncomeTaxListSonderausgabenParams = undefined;\nexport type BookkeepingIncomeTaxListSonderausgabenQuery = {\n taxYear: number;\n};\nexport type BookkeepingIncomeTaxListSonderausgabenBody = undefined;\nexport type BookkeepingIncomeTaxListSonderausgabenResponseData = Sonderausgaben[];\nexport type BookkeepingIncomeTaxListSonderausgabenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxListSonderausgabenResponseData>;\n\nexport type BookkeepingIncomeTaxCreateSonderausgabenParams = undefined;\nexport type BookkeepingIncomeTaxCreateSonderausgabenQuery = undefined;\nexport type BookkeepingIncomeTaxCreateSonderausgabenBody = {\n taxYear: number;\n type: \"kirchensteuer\" | \"spenden\" | \"parteibeitraege\" | \"berufsausbildung\" | \"other\";\n description: string;\n amount: string | number;\n documentId?: number;\n};\nexport type BookkeepingIncomeTaxCreateSonderausgabenResponseData = Sonderausgaben;\nexport type BookkeepingIncomeTaxCreateSonderausgabenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxCreateSonderausgabenResponseData>;\n\nexport type BookkeepingIncomeTaxUpdateSonderausgabenParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxUpdateSonderausgabenQuery = undefined;\nexport type BookkeepingIncomeTaxUpdateSonderausgabenBody = {\n taxYear?: number;\n type?: \"kirchensteuer\" | \"spenden\" | \"parteibeitraege\" | \"berufsausbildung\" | \"other\";\n description?: string;\n amount?: string | number;\n documentId?: number;\n};\nexport type BookkeepingIncomeTaxUpdateSonderausgabenResponseData = Sonderausgaben;\nexport type BookkeepingIncomeTaxUpdateSonderausgabenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxUpdateSonderausgabenResponseData>;\n\nexport type BookkeepingIncomeTaxDeleteSonderausgabenParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxDeleteSonderausgabenQuery = undefined;\nexport type BookkeepingIncomeTaxDeleteSonderausgabenBody = undefined;\nexport type BookkeepingIncomeTaxDeleteSonderausgabenResponseData = null;\nexport type BookkeepingIncomeTaxDeleteSonderausgabenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxDeleteSonderausgabenResponseData>;\n\nexport type BookkeepingIncomeTaxListVorsorgeParams = undefined;\nexport type BookkeepingIncomeTaxListVorsorgeQuery = {\n taxYear: number;\n};\nexport type BookkeepingIncomeTaxListVorsorgeBody = undefined;\nexport type BookkeepingIncomeTaxListVorsorgeResponseData = Vorsorgeaufwendungen[];\nexport type BookkeepingIncomeTaxListVorsorgeResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxListVorsorgeResponseData>;\n\nexport type BookkeepingIncomeTaxCreateVorsorgeParams = undefined;\nexport type BookkeepingIncomeTaxCreateVorsorgeQuery = undefined;\nexport type BookkeepingIncomeTaxCreateVorsorgeBody = {\n taxYear: number;\n type: \"altersvorsorge\" | \"basis_kv\" | \"pflegeversicherung\" | \"sonstige_vorsorge\";\n description: string;\n amount: string | number;\n isFromEmployment: boolean;\n documentId?: number;\n};\nexport type BookkeepingIncomeTaxCreateVorsorgeResponseData = Vorsorgeaufwendungen;\nexport type BookkeepingIncomeTaxCreateVorsorgeResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxCreateVorsorgeResponseData>;\n\nexport type BookkeepingIncomeTaxUpdateVorsorgeParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxUpdateVorsorgeQuery = undefined;\nexport type BookkeepingIncomeTaxUpdateVorsorgeBody = {\n taxYear?: number;\n type?: \"altersvorsorge\" | \"basis_kv\" | \"pflegeversicherung\" | \"sonstige_vorsorge\";\n description?: string;\n amount?: string | number;\n isFromEmployment?: boolean;\n documentId?: number;\n};\nexport type BookkeepingIncomeTaxUpdateVorsorgeResponseData = Vorsorgeaufwendungen;\nexport type BookkeepingIncomeTaxUpdateVorsorgeResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxUpdateVorsorgeResponseData>;\n\nexport type BookkeepingIncomeTaxDeleteVorsorgeParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxDeleteVorsorgeQuery = undefined;\nexport type BookkeepingIncomeTaxDeleteVorsorgeBody = undefined;\nexport type BookkeepingIncomeTaxDeleteVorsorgeResponseData = null;\nexport type BookkeepingIncomeTaxDeleteVorsorgeResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxDeleteVorsorgeResponseData>;\n\nexport type BookkeepingIncomeTaxListSteuerminderungenParams = undefined;\nexport type BookkeepingIncomeTaxListSteuerminderungenQuery = {\n taxYear: number;\n};\nexport type BookkeepingIncomeTaxListSteuerminderungenBody = undefined;\nexport type BookkeepingIncomeTaxListSteuerminderungenResponseData = Steuerminderungen[];\nexport type BookkeepingIncomeTaxListSteuerminderungenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxListSteuerminderungenResponseData>;\n\nexport type BookkeepingIncomeTaxCreateSteuerminderungenParams = undefined;\nexport type BookkeepingIncomeTaxCreateSteuerminderungenQuery = undefined;\nexport type BookkeepingIncomeTaxCreateSteuerminderungenBody = {\n taxYear: number;\n type: \"haushaltsnahe_beschaeftigung\" | \"haushaltsnahe_dienstleistung\" | \"handwerkerleistung\" | \"behindertenpauschbetrag\" | \"other\";\n description: string;\n amount: string | number;\n documentId?: number;\n};\nexport type BookkeepingIncomeTaxCreateSteuerminderungenResponseData = Steuerminderungen;\nexport type BookkeepingIncomeTaxCreateSteuerminderungenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxCreateSteuerminderungenResponseData>;\n\nexport type BookkeepingIncomeTaxUpdateSteuerminderungenParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxUpdateSteuerminderungenQuery = undefined;\nexport type BookkeepingIncomeTaxUpdateSteuerminderungenBody = {\n taxYear?: number;\n type?: \"haushaltsnahe_beschaeftigung\" | \"haushaltsnahe_dienstleistung\" | \"handwerkerleistung\" | \"behindertenpauschbetrag\" | \"other\";\n description?: string;\n amount?: string | number;\n documentId?: number;\n};\nexport type BookkeepingIncomeTaxUpdateSteuerminderungenResponseData = Steuerminderungen;\nexport type BookkeepingIncomeTaxUpdateSteuerminderungenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxUpdateSteuerminderungenResponseData>;\n\nexport type BookkeepingIncomeTaxDeleteSteuerminderungenParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxDeleteSteuerminderungenQuery = undefined;\nexport type BookkeepingIncomeTaxDeleteSteuerminderungenBody = undefined;\nexport type BookkeepingIncomeTaxDeleteSteuerminderungenResponseData = null;\nexport type BookkeepingIncomeTaxDeleteSteuerminderungenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxDeleteSteuerminderungenResponseData>;\n\nexport type BookkeepingIncomeTaxGetEstimateParams = undefined;\nexport type BookkeepingIncomeTaxGetEstimateQuery = {\n taxYear: number;\n};\nexport type BookkeepingIncomeTaxGetEstimateBody = undefined;\nexport type BookkeepingIncomeTaxGetEstimateResponseData = EStCalculationResult;\nexport type BookkeepingIncomeTaxGetEstimateResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxGetEstimateResponseData>;\n\nexport type BookkeepingIncomeTaxGetVorauszahlungenParams = undefined;\nexport type BookkeepingIncomeTaxGetVorauszahlungenQuery = {\n taxYear: number;\n};\nexport type BookkeepingIncomeTaxGetVorauszahlungenBody = undefined;\nexport type BookkeepingIncomeTaxGetVorauszahlungenResponseData = VorauszahlungResult;\nexport type BookkeepingIncomeTaxGetVorauszahlungenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxGetVorauszahlungenResponseData>;\n\nexport type BookkeepingIncomeTaxGetSummaryParams = undefined;\nexport type BookkeepingIncomeTaxGetSummaryQuery = {\n taxYear: number;\n};\nexport type BookkeepingIncomeTaxGetSummaryBody = undefined;\nexport type BookkeepingIncomeTaxGetSummaryResponseData = IncomeTaxSummary;\nexport type BookkeepingIncomeTaxGetSummaryResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxGetSummaryResponseData>;\n\nexport type ReconciliationDashboardParams = undefined;\nexport type ReconciliationDashboardQuery = {\n startDate?: string;\n endDate?: string;\n paymentAccountId?: number;\n costCenterId?: number;\n estimateActionCounts?: boolean;\n};\nexport type ReconciliationDashboardBody = undefined;\nexport type ReconciliationDashboardResponseData = {\n payments: {\n unmatched: {\n count: number;\n totalAmount: string;\n currency: string;\n};\n partial: {\n count: number;\n totalAmount: string;\n currency: string;\n};\n};\n invoices: {\n unmatched: {\n count: number;\n totalAmount: string;\n currency: string;\n};\n partial: {\n count: number;\n totalAmount: string;\n currency: string;\n};\n};\n expenses: {\n unmatched: {\n count: number;\n totalAmount: string;\n currency: string;\n};\n partial: {\n count: number;\n totalAmount: string;\n currency: string;\n};\n};\n revenues: {\n unmatched: {\n count: number;\n totalAmount: string;\n currency: string;\n};\n partial: {\n count: number;\n totalAmount: string;\n currency: string;\n};\n};\n aging: {\n days0to7: {\n count: number;\n totalAmount: string;\n};\n days7to30: {\n count: number;\n totalAmount: string;\n};\n days30to90: {\n count: number;\n totalAmount: string;\n};\n days90plus: {\n count: number;\n totalAmount: string;\n};\n};\n actionSummary: {\n providerPayoutCount: number;\n autoMatchableCount: number | null;\n} | null;\n};\nexport type ReconciliationDashboardResponse = import(\"../types\").ApiEnvelope<ReconciliationDashboardResponseData>;\n\nexport type ReconciliationQueueParams = undefined;\nexport type ReconciliationQueueQuery = {\n direction?: \"in\" | \"out\";\n paymentAccountId?: number;\n costCenterId?: number;\n startDate?: string;\n endDate?: string;\n page?: number;\n pageSize?: number;\n};\nexport type ReconciliationQueueBody = undefined;\nexport type ReconciliationQueueResponseData = {\n items: Array<{\n payment: {\n id: number;\n amount: string;\n currency: string;\n direction: string;\n bookedAt: string;\n counterpartyName: string | null;\n counterpartyIban: string | null;\n reference: string | null;\n paymentAccountId: number;\n paymentAccountName: string | null;\n paymentAccountType: string | null;\n paymentAccountIban: string | null;\n remainingAmount: string;\n source: string;\n feeAmount: string | null;\n netAmount: string | null;\n originalAmount: string | null;\n originalCurrency: string | null;\n};\n existingAllocations: Array<{\n id: number;\n targetType: \"invoice\" | \"expense\" | \"revenue\";\n targetId: number;\n kind: string;\n allocatedAmount: string;\n targetLabel: string;\n createdAt: string;\n}>;\n suggestions: Array<{\n targetType: \"invoice\" | \"expense\" | \"revenue\";\n targetId: number;\n score: number;\n confidence: \"high\" | \"medium\" | \"low\";\n isAllocatable: boolean;\n blockedReason?: string;\n reasons: Array<string>;\n suggestedAllocateAmount: string;\n targetCurrency: string;\n totalAmount: string;\n openAmount: string;\n label: string;\n invoiceNumber?: string;\n customerName?: string | null;\n invoiceDate?: string;\n dueDate?: string;\n status?: string;\n vendor?: string | null;\n vendorInvoiceNumber?: string | null;\n description?: string | null;\n expenseDate?: string;\n revenueDate?: string;\n isConfirmed?: boolean;\n}>;\n bestMatch: {\n targetType: \"invoice\" | \"expense\" | \"revenue\";\n targetId: number;\n score: number;\n confidence: \"high\" | \"medium\" | \"low\";\n isAllocatable: boolean;\n blockedReason?: string;\n reasons: Array<string>;\n suggestedAllocateAmount: string;\n targetCurrency: string;\n totalAmount: string;\n openAmount: string;\n label: string;\n invoiceNumber?: string;\n customerName?: string | null;\n invoiceDate?: string;\n dueDate?: string;\n status?: string;\n vendor?: string | null;\n vendorInvoiceNumber?: string | null;\n description?: string | null;\n expenseDate?: string;\n revenueDate?: string;\n isConfirmed?: boolean;\n} | null;\n transferSuggestion: {\n counterpartPaymentId: number;\n counterpartAmount: string;\n counterpartAccountId: number;\n counterpartAccountName: string | null;\n counterpartAccountType: string | null;\n counterpartDate: string;\n counterpartName: string | null;\n confidence: \"high\" | \"medium\" | \"low\";\n} | null;\n providerPayoutSuggestion: {\n payoutId: string;\n providerAccountId: number;\n providerAccountName: string;\n existingPayoutPaymentId: number | null;\n transactionCount: number;\n totalGross: string;\n totalNet: string;\n totalFees: string;\n bankDepositAmount: string;\n difference: string;\n confidence: \"high\" | \"medium\" | \"low\";\n} | null;\n counterpartyContext: {\n knownCustomerNames: Array<string> | null;\n knownVendorNames: Array<string> | null;\n recurringPattern: {\n frequency: \"weekly\" | \"monthly\" | \"quarterly\";\n} | null;\n lastMatchedCategory: string | null;\n} | null;\n matchCount: number;\n priority: \"high\" | \"medium\" | \"low\";\n}>;\n summary: {\n totalWithSuggestions: number;\n totalWithTransfers: number;\n totalWithProviderPayouts: number;\n totalHighConfidence: number;\n};\n page: number;\n pageSize: number;\n total: number;\n totalPages: number;\n};\nexport type ReconciliationQueueResponse = import(\"../types\").ApiEnvelope<ReconciliationQueueResponseData>;\n\nexport type ReconciliationBatchSuggestionsParams = undefined;\nexport type ReconciliationBatchSuggestionsQuery = undefined;\nexport type ReconciliationBatchSuggestionsBody = {\n items: Array<{\n paymentId: number;\n}>;\n limit?: number;\n};\nexport type ReconciliationBatchSuggestionsResponseData = {\n results: Array<{\n paymentId: number;\n remainingAmount: string;\n suggestions: Array<any>;\n}>;\n};\nexport type ReconciliationBatchSuggestionsResponse = import(\"../types\").ApiEnvelope<ReconciliationBatchSuggestionsResponseData>;\n\nexport type ReconciliationAutoMatchPreviewParams = undefined;\nexport type ReconciliationAutoMatchPreviewQuery = {\n direction?: \"in\" | \"out\";\n paymentAccountId?: number;\n minScore?: number;\n};\nexport type ReconciliationAutoMatchPreviewBody = undefined;\nexport type ReconciliationAutoMatchPreviewResponseData = {\n candidates: Array<{\n paymentId: number;\n targetType: \"invoice\" | \"expense\" | \"revenue\";\n targetId: number;\n score: number;\n confidence: \"high\" | \"medium\" | \"low\";\n reasons: Array<string>;\n isAllocatable: boolean;\n allocateAmount: string;\n paymentLabel: string;\n targetLabel: string;\n}>;\n totalCount: number;\n};\nexport type ReconciliationAutoMatchPreviewResponse = import(\"../types\").ApiEnvelope<ReconciliationAutoMatchPreviewResponseData>;\n\nexport type ReconciliationAutoMatchConfirmParams = undefined;\nexport type ReconciliationAutoMatchConfirmQuery = undefined;\nexport type ReconciliationAutoMatchConfirmBody = {\n candidates: Array<{\n paymentId: number;\n targetType: \"invoice\" | \"expense\" | \"revenue\";\n targetId: number;\n amount: string;\n}>;\n};\nexport type ReconciliationAutoMatchConfirmResponseData = {\n results: Array<{\n paymentId: number;\n success: boolean;\n error?: string;\n}>;\n totalSuccess: number;\n totalFailed: number;\n};\nexport type ReconciliationAutoMatchConfirmResponse = import(\"../types\").ApiEnvelope<ReconciliationAutoMatchConfirmResponseData>;\n\nexport type ReconciliationConfirmProviderPayoutParams = undefined;\nexport type ReconciliationConfirmProviderPayoutQuery = undefined;\nexport type ReconciliationConfirmProviderPayoutBody = {\n bankPaymentId: number;\n providerAccountId: number;\n payoutId: string;\n};\nexport type ReconciliationConfirmProviderPayoutResponseData = {\n payoutPaymentId: number;\n bankPaymentId: number;\n linked: boolean;\n aggregateCreated: boolean;\n revenueId: number | null;\n};\nexport type ReconciliationConfirmProviderPayoutResponse = import(\"../types\").ApiEnvelope<ReconciliationConfirmProviderPayoutResponseData>;\n\nexport type ReconciliationGroupsParams = undefined;\nexport type ReconciliationGroupsQuery = {\n direction?: \"in\" | \"out\";\n paymentAccountId?: number;\n startDate?: string;\n endDate?: string;\n page?: number;\n pageSize?: number;\n};\nexport type ReconciliationGroupsBody = undefined;\nexport type ReconciliationGroupsResponseData = {\n groups: Array<{\n groupType: \"split_payment\" | \"overpayment\";\n confidence: \"high\" | \"medium\" | \"low\";\n target: {\n type: string;\n id: number;\n label: string;\n totalAmount: string;\n openAmount: string;\n currency: string;\n};\n payments: Array<{\n id: number;\n amount: string;\n remainingAmount: string;\n currency: string;\n bookedAt: string;\n counterpartyName: string | null;\n reference: string | null;\n}>;\n sumOfPayments: string;\n difference: string;\n}>;\n page: number;\n total: number;\n};\nexport type ReconciliationGroupsResponse = import(\"../types\").ApiEnvelope<ReconciliationGroupsResponseData>;\n\nexport type BookkeepingCapitalMovementsSearchParams = undefined;\nexport type BookkeepingCapitalMovementsSearchQuery = {\n q?: string;\n type?: \"withdrawal\" | \"deposit\";\n subType?: \"cash_withdrawal\" | \"private_purchase\" | \"private_asset_use\" | \"est_payment\" | \"soli_payment\" | \"kist_payment\" | \"gewst_payment\" | \"other_withdrawal\" | \"cash_deposit\" | \"private_expense_paid\" | \"private_asset_transfer\" | \"est_refund\" | \"soli_refund\" | \"kist_refund\" | \"gewst_refund\" | \"other_deposit\";\n taxYear?: number;\n startDate?: string;\n endDate?: string;\n isConfirmed?: boolean;\n paymentStatus?: \"unmatched\" | \"cash_confirmed\" | \"partially_matched\" | \"fully_matched\";\n page?: number;\n pageSize?: number;\n sortBy?: \"createdAt\" | \"movementDate\" | \"amount\";\n sortDir?: \"asc\" | \"desc\";\n};\nexport type BookkeepingCapitalMovementsSearchBody = undefined;\nexport type BookkeepingCapitalMovementsSearchResponseData = PaginatedResult<CapitalMovement>;\nexport type BookkeepingCapitalMovementsSearchResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsSearchResponseData>;\n\nexport type BookkeepingCapitalMovementsKapitalkontoParams = undefined;\nexport type BookkeepingCapitalMovementsKapitalkontoQuery = {\n taxYear: number;\n};\nexport type BookkeepingCapitalMovementsKapitalkontoBody = undefined;\nexport type BookkeepingCapitalMovementsKapitalkontoResponseData = {\n entnahmenGesamt: number;\n entnahmenGeld: number;\n einlagenGesamt: number;\n einlagenGeld: number;\n};\nexport type BookkeepingCapitalMovementsKapitalkontoResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsKapitalkontoResponseData>;\n\nexport type BookkeepingCapitalMovementsGetByIdParams = {\n id: number;\n};\nexport type BookkeepingCapitalMovementsGetByIdQuery = undefined;\nexport type BookkeepingCapitalMovementsGetByIdBody = undefined;\nexport type BookkeepingCapitalMovementsGetByIdResponseData = CapitalMovement;\nexport type BookkeepingCapitalMovementsGetByIdResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsGetByIdResponseData>;\n\nexport type BookkeepingCapitalMovementsCreateParams = undefined;\nexport type BookkeepingCapitalMovementsCreateQuery = undefined;\nexport type BookkeepingCapitalMovementsCreateBody = {\n type: \"withdrawal\" | \"deposit\";\n subType: \"cash_withdrawal\" | \"private_purchase\" | \"private_asset_use\" | \"est_payment\" | \"soli_payment\" | \"kist_payment\" | \"gewst_payment\" | \"other_withdrawal\" | \"cash_deposit\" | \"private_expense_paid\" | \"private_asset_transfer\" | \"est_refund\" | \"soli_refund\" | \"kist_refund\" | \"gewst_refund\" | \"other_deposit\";\n amount: string | number;\n currency?: string;\n description: string;\n movementDate: string;\n notes?: string | null;\n taxPaymentMetadata?: {\n finanzamtName?: string;\n steuernummer?: string;\n vorauszahlungQuarter?: \"Q1\" | \"Q2\" | \"Q3\" | \"Q4\";\n vorauszahlungYear?: number;\n bescheidDate?: string;\n bescheidYear?: number;\n} | null;\n isConfirmed?: boolean;\n};\nexport type BookkeepingCapitalMovementsCreateResponseData = CapitalMovement;\nexport type BookkeepingCapitalMovementsCreateResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsCreateResponseData>;\n\nexport type BookkeepingCapitalMovementsUpdateParams = {\n id: number;\n};\nexport type BookkeepingCapitalMovementsUpdateQuery = undefined;\nexport type BookkeepingCapitalMovementsUpdateBody = {\n type?: \"withdrawal\" | \"deposit\";\n subType?: \"cash_withdrawal\" | \"private_purchase\" | \"private_asset_use\" | \"est_payment\" | \"soli_payment\" | \"kist_payment\" | \"gewst_payment\" | \"other_withdrawal\" | \"cash_deposit\" | \"private_expense_paid\" | \"private_asset_transfer\" | \"est_refund\" | \"soli_refund\" | \"kist_refund\" | \"gewst_refund\" | \"other_deposit\";\n amount?: string | number;\n currency?: string;\n description?: string;\n movementDate?: string;\n notes?: string | null;\n taxPaymentMetadata?: {\n finanzamtName?: string;\n steuernummer?: string;\n vorauszahlungQuarter?: \"Q1\" | \"Q2\" | \"Q3\" | \"Q4\";\n vorauszahlungYear?: number;\n bescheidDate?: string;\n bescheidYear?: number;\n} | null;\n isConfirmed?: boolean;\n};\nexport type BookkeepingCapitalMovementsUpdateResponseData = CapitalMovement;\nexport type BookkeepingCapitalMovementsUpdateResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsUpdateResponseData>;\n\nexport type BookkeepingCapitalMovementsConfirmParams = {\n id: number;\n};\nexport type BookkeepingCapitalMovementsConfirmQuery = undefined;\nexport type BookkeepingCapitalMovementsConfirmBody = undefined;\nexport type BookkeepingCapitalMovementsConfirmResponseData = CapitalMovement;\nexport type BookkeepingCapitalMovementsConfirmResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsConfirmResponseData>;\n\nexport type BookkeepingCapitalMovementsCashConfirmParams = {\n id: number;\n};\nexport type BookkeepingCapitalMovementsCashConfirmQuery = undefined;\nexport type BookkeepingCapitalMovementsCashConfirmBody = {\n confirmedAt?: string;\n};\nexport type BookkeepingCapitalMovementsCashConfirmResponseData = CapitalMovement;\nexport type BookkeepingCapitalMovementsCashConfirmResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsCashConfirmResponseData>;\n\nexport type BookkeepingCapitalMovementsRevokeCashConfirmParams = {\n id: number;\n};\nexport type BookkeepingCapitalMovementsRevokeCashConfirmQuery = undefined;\nexport type BookkeepingCapitalMovementsRevokeCashConfirmBody = {\n reason: string;\n};\nexport type BookkeepingCapitalMovementsRevokeCashConfirmResponseData = CapitalMovement;\nexport type BookkeepingCapitalMovementsRevokeCashConfirmResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsRevokeCashConfirmResponseData>;\n\nexport type BookkeepingCapitalMovementsReverseParams = {\n id: number;\n};\nexport type BookkeepingCapitalMovementsReverseQuery = undefined;\nexport type BookkeepingCapitalMovementsReverseBody = {\n reason: string;\n};\nexport type BookkeepingCapitalMovementsReverseResponseData = CapitalMovement;\nexport type BookkeepingCapitalMovementsReverseResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsReverseResponseData>;\n\nexport type BookkeepingCapitalMovementsDeleteParams = {\n id: number;\n};\nexport type BookkeepingCapitalMovementsDeleteQuery = undefined;\nexport type BookkeepingCapitalMovementsDeleteBody = undefined;\nexport type BookkeepingCapitalMovementsDeleteResponseData = null;\nexport type BookkeepingCapitalMovementsDeleteResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsDeleteResponseData>;\n\nexport type BookkeepingIapPayoutsImportParams = undefined;\nexport type BookkeepingIapPayoutsImportQuery = undefined;\nexport type BookkeepingIapPayoutsImportBody = {\n platform: \"apple\" | \"google\";\n periodStart: string;\n periodEnd: string;\n source?: \"revenuecat_api\" | \"revenuecat_csv\" | \"apple_financial_report\" | \"google_earnings_report\";\n period?: {\n currency: string;\n netRevenue: string | number;\n grossSales?: string | number | null;\n providerFees?: string | number | null;\n refunds?: string | number | null;\n taxesWithheld?: string | number | null;\n raw?: any;\n};\n reportFileId?: number | null;\n};\nexport type BookkeepingIapPayoutsImportResponseData = { created: boolean; import: IapPayoutImport; revenueId: number | null; skipped?: { reason: string; detail: string } };\nexport type BookkeepingIapPayoutsImportResponse = import(\"../types\").ApiEnvelope<BookkeepingIapPayoutsImportResponseData>;\n\nexport type BookkeepingIapPayoutsListParams = undefined;\nexport type BookkeepingIapPayoutsListQuery = {\n year?: number;\n platform?: \"apple\" | \"google\";\n};\nexport type BookkeepingIapPayoutsListBody = undefined;\nexport type BookkeepingIapPayoutsListResponseData = { items: IapPayoutImport[] };\nexport type BookkeepingIapPayoutsListResponse = import(\"../types\").ApiEnvelope<BookkeepingIapPayoutsListResponseData>;\n\nexport const apiRoutes_bookkeeping = {\n // Contract source: explicit\n \"bookkeeping_revenues_search\": {\n method: \"GET\",\n path: \"/bookkeeping/revenues\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Einnahmen suchen\",\n description: \"Paginierte Suche über alle Einnahmen mit Filteroptionen (Zeitraum, Status, Suchbegriff). Optional kann nach `invoiceId` oder `assetId` gefiltert werden, um z.B. Veräußerungserlöse einer Anlage direkt zu finden.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesSearchParams;\n query: BookkeepingRevenuesSearchQuery;\n body: BookkeepingRevenuesSearchBody;\n response: BookkeepingRevenuesSearchResponse;\n responseData: BookkeepingRevenuesSearchResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_get_by_id\": {\n method: \"GET\",\n path: \"/bookkeeping/revenues/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Einnahme nach ID laden\",\n description: \"Lädt eine einzelne Einnahme anhand ihrer ID mit allen Details (Betrag, Datum, Status, zugehörige Rechnung oder verknüpfte Anlage) plus aufgelöste Zahlungszuordnungen (`paymentAllocations`) mit Zahlungs- und Kontodetails.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesGetByIdParams;\n query: BookkeepingRevenuesGetByIdQuery;\n body: BookkeepingRevenuesGetByIdBody;\n response: BookkeepingRevenuesGetByIdResponse;\n responseData: BookkeepingRevenuesGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_analyze_receipt\": {\n method: \"POST\",\n path: \"/bookkeeping/revenues/analyze-receipt\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Beleg per OCR analysieren (Einnahme)\",\n description: \"Sendet ein Belegbild (Foto/Scan) an die OCR-Erkennung und gibt die extrahierten Daten zurück (Betrag, Datum, MwSt.). Nutze die Ergebnisse um eine Einnahme vorzubefüllen.\",\n bodyContentType: \"multipart/form-data\",\n },\n types: null as unknown as {\n params: BookkeepingRevenuesAnalyzeReceiptParams;\n query: BookkeepingRevenuesAnalyzeReceiptQuery;\n body: BookkeepingRevenuesAnalyzeReceiptBody;\n response: BookkeepingRevenuesAnalyzeReceiptResponse;\n responseData: BookkeepingRevenuesAnalyzeReceiptResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_create\": {\n method: \"POST\",\n path: \"/bookkeeping/revenues\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Neue Einnahme anlegen\",\n description: \"Erstellt einen neuen Einnahme-Entwurf, optional mit Beleganhang (multipart). Optional kann über `assetId` ein Anlagen-Abgangserlös explizit mit einer Anlage verknüpft werden. Der Entwurf muss separat über /confirm bestätigt werden, um buchhaltungstechnisch wirksam zu werden.\",\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesCreateParams;\n query: BookkeepingRevenuesCreateQuery;\n body: BookkeepingRevenuesCreateBody;\n response: BookkeepingRevenuesCreateResponse;\n responseData: BookkeepingRevenuesCreateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_update\": {\n method: \"PUT\",\n path: \"/bookkeeping/revenues/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Einnahme aktualisieren\",\n description: \"Aktualisiert eine bestehende Einnahme. Bestätigte Einnahmen können nicht mehr geändert werden, wenn die Periode gesperrt ist.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesUpdateParams;\n query: BookkeepingRevenuesUpdateQuery;\n body: BookkeepingRevenuesUpdateBody;\n response: BookkeepingRevenuesUpdateResponse;\n responseData: BookkeepingRevenuesUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_upload_receipt\": {\n method: \"POST\",\n path: \"/bookkeeping/revenues/:id/upload-receipt\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Beleg zu Einnahme hochladen\",\n description: \"Lädt einen Beleg zu einer bestehenden Einnahme hoch. Ersetzt einen eventuell vorhandenen Beleg. Nur für unbestätigte Einnahmen (Entwürfe).\",\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesUploadReceiptParams;\n query: BookkeepingRevenuesUploadReceiptQuery;\n body: BookkeepingRevenuesUploadReceiptBody;\n response: BookkeepingRevenuesUploadReceiptResponse;\n responseData: BookkeepingRevenuesUploadReceiptResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_bulk_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/revenues/bulk-confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Mehrere Einnahmen bestätigen\",\n description: \"Bestätigt mehrere Einnahme-Entwürfe auf einmal (Datenpflege-Bestätigung). Gibt für jede ID das Ergebnis zurück — Fehler bei einzelnen Einträgen stoppen nicht den Rest.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesBulkConfirmParams;\n query: BookkeepingRevenuesBulkConfirmQuery;\n body: BookkeepingRevenuesBulkConfirmBody;\n response: BookkeepingRevenuesBulkConfirmResponse;\n responseData: BookkeepingRevenuesBulkConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/revenues/:id/confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Einnahme bestätigen\",\n description: \"Bestätigt einen Einnahme-Entwurf (Datenpflege-Bestätigung). Um die Einnahme in der EÜR zu erfassen, muss zusätzlich ein Zahlungsnachweis vorliegen (via Payment-Zuordnung oder /confirm-cash).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesConfirmParams;\n query: BookkeepingRevenuesConfirmQuery;\n body: BookkeepingRevenuesConfirmBody;\n response: BookkeepingRevenuesConfirmResponse;\n responseData: BookkeepingRevenuesConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_confirm_cash\": {\n method: \"POST\",\n path: \"/bookkeeping/revenues/:id/confirm-cash\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Einnahme als Barzahlung bestätigen\",\n description: \"Markiert eine Einnahme als Bareinnahme. receivedAt (JJJJ-MM-TT, nicht in der Zukunft) ist der Zuflusstag, an dem die Einnahme in der EÜR steht (§ 11 EStG); bei einer bezahlten Rechnung ohne zugeordnete Zahlungen folgt deren paidAt. Ohne receivedAt gilt das Einnahmedatum, bei Rechnungseinnahmen also das Rechnungsdatum. Kann nicht auf bereits durch Payment zugeordnete Einnahmen angewendet werden.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesConfirmCashParams;\n query: BookkeepingRevenuesConfirmCashQuery;\n body: BookkeepingRevenuesConfirmCashBody;\n response: BookkeepingRevenuesConfirmCashResponse;\n responseData: BookkeepingRevenuesConfirmCashResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_revoke_cash_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/revenues/:id/revoke-cash-confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Barzahlungs-Bestätigung widerrufen\",\n description: \"Widerruft die Barzahlungs-Bestätigung einer Einnahme. Setzt den paymentStatus zurück auf 'unmatched' und entfernt das EÜR-Wirksamkeitsdatum. Nur möglich wenn paymentStatus = 'cash_confirmed'. Grund ist GoBD-Pflicht.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesRevokeCashConfirmParams;\n query: BookkeepingRevenuesRevokeCashConfirmQuery;\n body: BookkeepingRevenuesRevokeCashConfirmBody;\n response: BookkeepingRevenuesRevokeCashConfirmResponse;\n responseData: BookkeepingRevenuesRevokeCashConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_delete\": {\n method: \"DELETE\",\n path: \"/bookkeeping/revenues/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Einnahme löschen\",\n description: \"Löscht eine Einnahme. Bestätigte Einnahmen in gesperrten Perioden können nicht gelöscht werden.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesDeleteParams;\n query: BookkeepingRevenuesDeleteQuery;\n body: BookkeepingRevenuesDeleteBody;\n response: BookkeepingRevenuesDeleteResponse;\n responseData: BookkeepingRevenuesDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_create_external\": {\n method: \"POST\",\n path: \"/bookkeeping/revenues/external\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"revenues:write\"]},\n meta: {\n tags: [\"bookkeeping\",\"revenues-external\"],\n summary: \"Create revenue via external API\",\n description: \"Creates a revenue entry through OAuth2/API key for automation scenarios. Tenant and permission scope are derived from the token. Keep usage intentional (no full external CRUD exposed).\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesCreateExternalParams;\n query: BookkeepingRevenuesCreateExternalQuery;\n body: BookkeepingRevenuesCreateExternalBody;\n response: BookkeepingRevenuesCreateExternalResponse;\n responseData: BookkeepingRevenuesCreateExternalResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_invoice_adjustment_external\": {\n method: \"POST\",\n path: \"/bookkeeping/revenues/external/invoice-adjustment\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"revenues:write\"]},\n meta: {\n tags: [\"bookkeeping\",\"revenues-external\"],\n summary: \"Create invoice payout adjustment via external API\",\n description: \"Creates an invoice-linked revenue adjustment for payout gaps (e.g., payment provider deductions). Idempotent by externalRef to handle webhook retries safely.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesInvoiceAdjustmentExternalParams;\n query: BookkeepingRevenuesInvoiceAdjustmentExternalQuery;\n body: BookkeepingRevenuesInvoiceAdjustmentExternalBody;\n response: BookkeepingRevenuesInvoiceAdjustmentExternalResponse;\n responseData: BookkeepingRevenuesInvoiceAdjustmentExternalResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_search\": {\n method: \"GET\",\n path: \"/bookkeeping/expenses\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Ausgaben suchen\",\n description: \"Paginierte Suche über alle Ausgaben mit Filteroptionen (Zeitraum, Status, Kategorie, Suchbegriff). Gibt eine paginierte Liste von BookkeepingExpense-Objekten zurück.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingExpensesSearchParams;\n query: BookkeepingExpensesSearchQuery;\n body: BookkeepingExpensesSearchBody;\n response: BookkeepingExpensesSearchResponse;\n responseData: BookkeepingExpensesSearchResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_get_by_id\": {\n method: \"GET\",\n path: \"/bookkeeping/expenses/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Ausgabe nach ID laden\",\n description: \"Lädt eine einzelne Ausgabe anhand ihrer ID mit allen Details (Betrag, Datum, Kategorie, Status, Beleg-Anhang) plus `assetInfo`, damit das Frontend sofort erkennen kann, ob die Ausgabe bereits als Anlage erfasst wurde und ob sie fachlich als Sofortaufwand oder über AfA läuft.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingExpensesGetByIdParams;\n query: BookkeepingExpensesGetByIdQuery;\n body: BookkeepingExpensesGetByIdBody;\n response: BookkeepingExpensesGetByIdResponse;\n responseData: BookkeepingExpensesGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_analyze_receipt\": {\n method: \"POST\",\n path: \"/bookkeeping/expenses/analyze-receipt\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Beleg per OCR analysieren\",\n description: \"Sendet ein Belegbild (Foto/Scan) an die OCR-Erkennung und gibt die extrahierten Daten zurück (Betrag, Datum, Lieferant, MwSt.). Nutze die Ergebnisse um eine Ausgabe vorzubefüllen.\",\n bodyContentType: \"multipart/form-data\",\n },\n types: null as unknown as {\n params: BookkeepingExpensesAnalyzeReceiptParams;\n query: BookkeepingExpensesAnalyzeReceiptQuery;\n body: BookkeepingExpensesAnalyzeReceiptBody;\n response: BookkeepingExpensesAnalyzeReceiptResponse;\n responseData: BookkeepingExpensesAnalyzeReceiptResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_create\": {\n method: \"POST\",\n path: \"/bookkeeping/expenses\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Neue Ausgabe anlegen\",\n description: \"Erstellt einen neuen Ausgabe-Entwurf, optional mit Beleganhang (multipart). Mit `createAsAsset=true` kann die Ausgabe in derselben Operation direkt zusätzlich als Anlage angelegt werden. In diesem Fall liefert die Response weiterhin die Ausgabe zurück, aber `assetInfo` ist sofort gesetzt und enthält die verknüpfte `linkedAssetId`.\",\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingExpensesCreateParams;\n query: BookkeepingExpensesCreateQuery;\n body: BookkeepingExpensesCreateBody;\n response: BookkeepingExpensesCreateResponse;\n responseData: BookkeepingExpensesCreateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_update\": {\n method: \"PUT\",\n path: \"/bookkeeping/expenses/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Ausgabe aktualisieren\",\n description: \"Aktualisiert eine bestehende Ausgabe, optional mit neuem Beleganhang. Bestätigte Ausgaben in gesperrten Perioden können nicht mehr geändert werden.\",\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingExpensesUpdateParams;\n query: BookkeepingExpensesUpdateQuery;\n body: BookkeepingExpensesUpdateBody;\n response: BookkeepingExpensesUpdateResponse;\n responseData: BookkeepingExpensesUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_upload_receipt\": {\n method: \"POST\",\n path: \"/bookkeeping/expenses/:id/upload-receipt\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Beleg zu Ausgabe hochladen\",\n description: \"Lädt einen Beleg zu einer bestehenden Ausgabe hoch. Ersetzt einen eventuell vorhandenen Beleg. Nur für unbestätigte Ausgaben (Entwürfe).\",\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingExpensesUploadReceiptParams;\n query: BookkeepingExpensesUploadReceiptQuery;\n body: BookkeepingExpensesUploadReceiptBody;\n response: BookkeepingExpensesUploadReceiptResponse;\n responseData: BookkeepingExpensesUploadReceiptResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_bulk_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/expenses/bulk-confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Mehrere Ausgaben bestätigen\",\n description: \"Bestätigt mehrere Ausgabe-Entwürfe auf einmal (Datenpflege-Bestätigung). Gibt für jede ID das Ergebnis zurück — Fehler bei einzelnen Einträgen stoppen nicht den Rest.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingExpensesBulkConfirmParams;\n query: BookkeepingExpensesBulkConfirmQuery;\n body: BookkeepingExpensesBulkConfirmBody;\n response: BookkeepingExpensesBulkConfirmResponse;\n responseData: BookkeepingExpensesBulkConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/expenses/:id/confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Ausgabe bestätigen\",\n description: \"Bestätigt einen Ausgabe-Entwurf (Datenpflege-Bestätigung). Um die Ausgabe in der EÜR zu erfassen, muss zusätzlich ein Zahlungsnachweis vorliegen (via Payment-Zuordnung oder /confirm-cash).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingExpensesConfirmParams;\n query: BookkeepingExpensesConfirmQuery;\n body: BookkeepingExpensesConfirmBody;\n response: BookkeepingExpensesConfirmResponse;\n responseData: BookkeepingExpensesConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_confirm_cash\": {\n method: \"POST\",\n path: \"/bookkeeping/expenses/:id/confirm-cash\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Ausgabe als Barzahlung bestätigen\",\n description: \"Markiert eine Ausgabe als Barausgabe mit einem expliziten Zahlungsdatum (confirmedAt). Die Ausgabe wird mit diesem Datum in die EÜR aufgenommen (Abfluss-Prinzip § 4 Abs. 3 EStG). Kann nicht auf bereits durch Payment zugeordnete Ausgaben angewendet werden.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingExpensesConfirmCashParams;\n query: BookkeepingExpensesConfirmCashQuery;\n body: BookkeepingExpensesConfirmCashBody;\n response: BookkeepingExpensesConfirmCashResponse;\n responseData: BookkeepingExpensesConfirmCashResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_revoke_cash_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/expenses/:id/revoke-cash-confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Barzahlungs-Bestätigung widerrufen\",\n description: \"Widerruft die Barzahlungs-Bestätigung einer Ausgabe. Setzt den paymentStatus zurück auf 'unmatched' und entfernt das EÜR-Wirksamkeitsdatum. Nur möglich wenn paymentStatus = 'cash_confirmed'. Grund ist GoBD-Pflicht.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingExpensesRevokeCashConfirmParams;\n query: BookkeepingExpensesRevokeCashConfirmQuery;\n body: BookkeepingExpensesRevokeCashConfirmBody;\n response: BookkeepingExpensesRevokeCashConfirmResponse;\n responseData: BookkeepingExpensesRevokeCashConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_mark_as_asset\": {\n method: \"POST\",\n path: \"/bookkeeping/expenses/:id/mark-as-asset\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Ausgabe als Anlage erfassen\",\n description: \"Erstellt aus einer bestehenden Ausgabe einen verknüpften Anlagen-Datensatz. Standardwerte werden aus der Ausgabe übernommen (Datum, Netto-Betrag, Lieferant, Beleg), können aber überschrieben werden. Der Endpoint ist für den produktiven Buchhaltungs-Workflow gedacht: strikte Periodensperren werden respektiert, doppelte Asset-Erzeugung für dieselbe Ausgabe wird verhindert und das Frontend erhält sowohl die erzeugte Anlage als auch den aktualisierten `assetInfo`-Status der Ausgabe.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingExpensesMarkAsAssetParams;\n query: BookkeepingExpensesMarkAsAssetQuery;\n body: BookkeepingExpensesMarkAsAssetBody;\n response: BookkeepingExpensesMarkAsAssetResponse;\n responseData: BookkeepingExpensesMarkAsAssetResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_delete\": {\n method: \"DELETE\",\n path: \"/bookkeeping/expenses/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Ausgabe löschen\",\n description: \"Löscht eine Ausgabe. Bestätigte Ausgaben in gesperrten Perioden können nicht gelöscht werden.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingExpensesDeleteParams;\n query: BookkeepingExpensesDeleteQuery;\n body: BookkeepingExpensesDeleteBody;\n response: BookkeepingExpensesDeleteResponse;\n responseData: BookkeepingExpensesDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_create_external\": {\n method: \"POST\",\n path: \"/bookkeeping/expenses/external\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"expenses:write\"]},\n meta: {\n tags: [\"bookkeeping\",\"expenses-external\"],\n summary: \"Ausgabe von externer App anlegen\",\n description: \"Erstellt eine Ausgabe über eine externe Anwendung mittels OAuth2 oder API-Key (kein User-Session). Gedacht für automatisierte Integrationen (z.B. Rechnungseingänge aus drittseitiger Software). Scope: expenses:write. Ein Beleg kann als multipart-Datei oder als base64 im JSON-Body mitgeschickt werden. Der `Idempotency-Key`-Header ist Pflicht und verhindert Doppelbuchungen bei Wiederholungen.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingExpensesCreateExternalParams;\n query: BookkeepingExpensesCreateExternalQuery;\n body: BookkeepingExpensesCreateExternalBody;\n response: BookkeepingExpensesCreateExternalResponse;\n responseData: BookkeepingExpensesCreateExternalResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_list_sammelposten_pools\": {\n method: \"GET\",\n path: \"/bookkeeping/assets/sammelposten-pools\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Sammelposten-Pools auflisten\",\n description: \"Listet alle Sammelposten-Pools (§6 Abs. 2a EStG) eines Unternehmens auf, sortiert nach Wirtschaftsjahr.\",\n },\n types: null as unknown as {\n params: BookkeepingAssetsListSammelpostenPoolsParams;\n query: BookkeepingAssetsListSammelpostenPoolsQuery;\n body: BookkeepingAssetsListSammelpostenPoolsBody;\n response: BookkeepingAssetsListSammelpostenPoolsResponse;\n responseData: BookkeepingAssetsListSammelpostenPoolsResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_get_sammelposten_pool\": {\n method: \"GET\",\n path: \"/bookkeeping/assets/sammelposten-pools/:poolId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Sammelposten-Pool mit Assets laden\",\n description: \"Lädt einen Sammelposten-Pool mit allen zugehörigen Wirtschaftsgütern.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAssetsGetSammelpostenPoolParams;\n query: BookkeepingAssetsGetSammelpostenPoolQuery;\n body: BookkeepingAssetsGetSammelpostenPoolBody;\n response: BookkeepingAssetsGetSammelpostenPoolResponse;\n responseData: BookkeepingAssetsGetSammelpostenPoolResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_generate_depreciation\": {\n method: \"POST\",\n path: \"/bookkeeping/assets/depreciation/generate\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Jahresende-AfA generieren\",\n description: \"Generiert AfA-Buchungen für alle aktiven Assets eines Wirtschaftsjahres. Erstellt persistierte depreciation_records für GoBD-Audit-Trail. Sammelposten werden auf Pool-Ebene gebucht.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsGenerateDepreciationParams;\n query: BookkeepingAssetsGenerateDepreciationQuery;\n body: BookkeepingAssetsGenerateDepreciationBody;\n response: BookkeepingAssetsGenerateDepreciationResponse;\n responseData: BookkeepingAssetsGenerateDepreciationResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_get_depreciation_records\": {\n method: \"GET\",\n path: \"/bookkeeping/assets/depreciation/records\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"AfA-Buchungen abfragen\",\n description: \"Gibt alle persistierten AfA-Buchungen für ein Wirtschaftsjahr zurück.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAssetsGetDepreciationRecordsParams;\n query: BookkeepingAssetsGetDepreciationRecordsQuery;\n body: BookkeepingAssetsGetDepreciationRecordsBody;\n response: BookkeepingAssetsGetDepreciationRecordsResponse;\n responseData: BookkeepingAssetsGetDepreciationRecordsResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_finalize_depreciation\": {\n method: \"POST\",\n path: \"/bookkeeping/assets/depreciation/finalize\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"AfA-Jahresabschluss finalisieren (GoBD-Sperrung)\",\n description: \"Sperrt alle offenen AfA-Buchungen eines Wirtschaftsjahres. Gesperrte Buchungen können nicht mehr geändert werden (GoBD-konform). Erfordert Admin-Berechtigung.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsFinalizeDepreciationParams;\n query: BookkeepingAssetsFinalizeDepreciationQuery;\n body: BookkeepingAssetsFinalizeDepreciationBody;\n response: BookkeepingAssetsFinalizeDepreciationResponse;\n responseData: BookkeepingAssetsFinalizeDepreciationResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_iab_list\": {\n method: \"GET\",\n path: \"/bookkeeping/assets/iab\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"IAB-Einträge auflisten\",\n description: \"Alle Investitionsabzugsbeträge (§7g Abs. 1) eines Unternehmens. Zeigt aktive, aufgelöste und rückabgewickelte IABs.\",\n },\n types: null as unknown as {\n params: BookkeepingAssetsIabListParams;\n query: BookkeepingAssetsIabListQuery;\n body: BookkeepingAssetsIabListBody;\n response: BookkeepingAssetsIabListResponse;\n responseData: BookkeepingAssetsIabListResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_iab_create\": {\n method: \"POST\",\n path: \"/bookkeeping/assets/iab\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"IAB anlegen (geplante Investition)\",\n description: \"Erstellt einen Investitionsabzugsbetrag: Bis zu 50% der geplanten AK werden vom Gewinn des Abzugsjahres abgezogen. Prüft §7g-Gewinngrenze automatisch. 3-Jahres-Frist wird gesetzt.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsIabCreateParams;\n query: BookkeepingAssetsIabCreateQuery;\n body: BookkeepingAssetsIabCreateBody;\n response: BookkeepingAssetsIabCreateResponse;\n responseData: BookkeepingAssetsIabCreateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_iab_get\": {\n method: \"GET\",\n path: \"/bookkeeping/assets/iab/:iabId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"IAB-Eintrag laden\",\n description: \"Einzelnen Investitionsabzugsbetrag mit allen Details laden.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAssetsIabGetParams;\n query: BookkeepingAssetsIabGetQuery;\n body: BookkeepingAssetsIabGetBody;\n response: BookkeepingAssetsIabGetResponse;\n responseData: BookkeepingAssetsIabGetResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_iab_dissolve\": {\n method: \"POST\",\n path: \"/bookkeeping/assets/iab/:iabId/dissolve\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"IAB auflösen (bei Kauf)\",\n description: \"Löst den IAB auf und verknüpft ihn mit dem gekauften Asset. Die AK-Basis des Assets wird um den Abzugsbetrag reduziert.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsIabDissolveParams;\n query: BookkeepingAssetsIabDissolveQuery;\n body: BookkeepingAssetsIabDissolveBody;\n response: BookkeepingAssetsIabDissolveResponse;\n responseData: BookkeepingAssetsIabDissolveResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_iab_reverse\": {\n method: \"POST\",\n path: \"/bookkeeping/assets/iab/:iabId/reverse\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"IAB rückabwickeln (Frist abgelaufen)\",\n description: \"Rückabwicklung: Abzugsbetrag wird zum Gewinn hinzugerechnet + 6% Zinsen pro Jahr (§7g Abs. 3).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsIabReverseParams;\n query: BookkeepingAssetsIabReverseQuery;\n body: BookkeepingAssetsIabReverseBody;\n response: BookkeepingAssetsIabReverseResponse;\n responseData: BookkeepingAssetsIabReverseResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_iab_delete\": {\n method: \"DELETE\",\n path: \"/bookkeeping/assets/iab/:iabId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"IAB löschen (nur aktive)\",\n description: \"Soft-Delete eines aktiven IAB-Eintrags. Aufgelöste/rückabgewickelte IABs können nicht gelöscht werden.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAssetsIabDeleteParams;\n query: BookkeepingAssetsIabDeleteQuery;\n body: BookkeepingAssetsIabDeleteBody;\n response: BookkeepingAssetsIabDeleteResponse;\n responseData: BookkeepingAssetsIabDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_search\": {\n method: \"GET\",\n path: \"/bookkeeping/assets\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Anlagevermögen suchen\",\n description: \"Paginierte Suche über alle Anlagegüter mit erweiterten Filteroptionen (Typ, AfA-Methode, Gebäudetyp, Digital-Asset, Status). Unterstützt Sortierung nach Inventarnummer, Inbetriebnahmedatum etc.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAssetsSearchParams;\n query: BookkeepingAssetsSearchQuery;\n body: BookkeepingAssetsSearchBody;\n response: BookkeepingAssetsSearchResponse;\n responseData: BookkeepingAssetsSearchResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_create\": {\n method: \"POST\",\n path: \"/bookkeeping/assets\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Neue Anlage anlegen\",\n description: \"Erstellt ein Anlagegut mit vollständiger Validierung nach deutschem Steuerrecht. Unterstützt: lineare AfA, degressive AfA (§7 Abs. 2), GWG-Sofortabschreibung (≤800€), Sammelposten (250,01–1.000€), Digital-AfA (BMF 2021), Gebäude-AfA (§7 Abs. 4/5, §7i, §7b). Auto-Generierung von Inventarnummer. Sammelposten-Konsistenz wird pro Wirtschaftsjahr geprüft.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsCreateParams;\n query: BookkeepingAssetsCreateQuery;\n body: BookkeepingAssetsCreateBody;\n response: BookkeepingAssetsCreateResponse;\n responseData: BookkeepingAssetsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_get_by_id\": {\n method: \"GET\",\n path: \"/bookkeeping/assets/:assetId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Anlage mit AfA-Plan laden\",\n description: \"Lädt ein Anlagegut mit vollständigem AfA-Plan (alle Methoden: linear, degressive, GWG, Sammelposten, Digital-AfA, Gebäude-AfA). Enthält Sonderabschreibung, Buchgewinn/-verlust bei Abgang, und verknüpfte Erlöse.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAssetsGetByIdParams;\n query: BookkeepingAssetsGetByIdQuery;\n body: BookkeepingAssetsGetByIdBody;\n response: BookkeepingAssetsGetByIdResponse;\n responseData: BookkeepingAssetsGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_update\": {\n method: \"PUT\",\n path: \"/bookkeeping/assets/:assetId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Anlage aktualisieren\",\n description: \"Aktualisiert ein Anlagegut. Anschaffungsdaten sollten nach GoBD nur vor Finalisierung korrigiert werden. Veräußerte Anlagen können nicht bearbeitet werden.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsUpdateParams;\n query: BookkeepingAssetsUpdateQuery;\n body: BookkeepingAssetsUpdateBody;\n response: BookkeepingAssetsUpdateResponse;\n responseData: BookkeepingAssetsUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_dispose\": {\n method: \"POST\",\n path: \"/bookkeeping/assets/:assetId/dispose\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Anlage veräußern / aussondern\",\n description: \"Markiert Anlage als abgegangen. Berechnet automatisch Restbuchwert und Buchgewinn/-verlust. Bei Verkauf wird Revenue-Eintrag mit Kategorie 'asset_disposal' erstellt. Bei Sammelposten: Asset wird inaktiv, Pool-AfA läuft weiter.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsDisposeParams;\n query: BookkeepingAssetsDisposeQuery;\n body: BookkeepingAssetsDisposeBody;\n response: BookkeepingAssetsDisposeResponse;\n responseData: BookkeepingAssetsDisposeResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_delete\": {\n method: \"DELETE\",\n path: \"/bookkeeping/assets/:assetId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Anlage löschen (soft-delete, GoBD-konform)\",\n description: \"Soft-Delete: isDeleted=true, Daten bleiben für Revision erhalten.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAssetsDeleteParams;\n query: BookkeepingAssetsDeleteQuery;\n body: BookkeepingAssetsDeleteBody;\n response: BookkeepingAssetsDeleteResponse;\n responseData: BookkeepingAssetsDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_apply_sonderafa\": {\n method: \"POST\",\n path: \"/bookkeeping/assets/:assetId/sonderafa\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Sonderabschreibung §7g Abs. 5 anwenden\",\n description: \"Wendet Sonderabschreibung (max 20% der AK) an. Nur im Anschaffungsjahr, nur für bewegliche WG, ≥90% betriebliche Nutzung.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsApplySonderafaParams;\n query: BookkeepingAssetsApplySonderafaQuery;\n body: BookkeepingAssetsApplySonderafaBody;\n response: BookkeepingAssetsApplySonderafaResponse;\n responseData: BookkeepingAssetsApplySonderafaResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_switch_to_linear\": {\n method: \"POST\",\n path: \"/bookkeeping/assets/:assetId/switch-to-linear\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Wechsel degressive → lineare AfA (§7 Abs. 3)\",\n description: \"Wechselt von degressiver zu linearer AfA. Restbuchwert wird über verbleibende Nutzungsdauer linear abgeschrieben.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsSwitchToLinearParams;\n query: BookkeepingAssetsSwitchToLinearQuery;\n body: BookkeepingAssetsSwitchToLinearBody;\n response: BookkeepingAssetsSwitchToLinearResponse;\n responseData: BookkeepingAssetsSwitchToLinearResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_add_cost_component\": {\n method: \"POST\",\n path: \"/bookkeeping/assets/:assetId/cost-components\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"AK-Bestandteil hinzufügen\",\n description: \"Fügt einen Anschaffungskostenbestandteil hinzu (Lieferung, Montage, Zoll, nachträgliche AK, Rabatte). Aktualisiert automatisch die AK-Summenfelder am Asset.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsAddCostComponentParams;\n query: BookkeepingAssetsAddCostComponentQuery;\n body: BookkeepingAssetsAddCostComponentBody;\n response: BookkeepingAssetsAddCostComponentResponse;\n responseData: BookkeepingAssetsAddCostComponentResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_list_cost_components\": {\n method: \"GET\",\n path: \"/bookkeeping/assets/:assetId/cost-components\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"AK-Bestandteile auflisten\",\n description: \"Listet alle Anschaffungskostenbestandteile eines Assets auf.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAssetsListCostComponentsParams;\n query: BookkeepingAssetsListCostComponentsQuery;\n body: BookkeepingAssetsListCostComponentsBody;\n response: BookkeepingAssetsListCostComponentsResponse;\n responseData: BookkeepingAssetsListCostComponentsResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_delete_cost_component\": {\n method: \"DELETE\",\n path: \"/bookkeeping/assets/:assetId/cost-components/:componentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"AK-Bestandteil löschen\",\n description: \"Soft-Delete eines AK-Bestandteils. Aktualisiert AK-Summenfelder.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAssetsDeleteCostComponentParams;\n query: BookkeepingAssetsDeleteCostComponentQuery;\n body: BookkeepingAssetsDeleteCostComponentBody;\n response: BookkeepingAssetsDeleteCostComponentResponse;\n responseData: BookkeepingAssetsDeleteCostComponentResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_reports_euer\": {\n method: \"GET\",\n path: \"/bookkeeping/reports/euer\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reports\"],\n summary: \"EÜR-Bericht\",\n description: \"Erzeugt den Einnahmen-Überschuss-Rechnung (EÜR) Bericht für ein bestimmtes Jahr. Enthält alle relevanten Einnahmen- und Ausgabenposten nach Kategorie aggregiert. Ausgaben, die als Anlage erfasst wurden, werden dabei nicht mehr doppelt als Sofortaufwand gezählt; stattdessen erscheint deren AfA als Kategorie `depreciation`.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingReportsEuerParams;\n query: BookkeepingReportsEuerQuery;\n body: BookkeepingReportsEuerBody;\n response: BookkeepingReportsEuerResponse;\n responseData: BookkeepingReportsEuerResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_reports_summary\": {\n method: \"GET\",\n path: \"/bookkeeping/reports/summary\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reports\"],\n summary: \"Monatliche/Jährliche Zusammenfassung\",\n description: \"Gibt eine Zusammenfassung über Einnahmen, Ausgaben und Gewinn für einen bestimmten Zeitraum (Monat oder Jahr). Anlage-verknüpfte Ausgaben werden für diese Auswertung nicht als Sofortaufwand doppelt gezählt; stattdessen wird AfA als Ausgabenkategorie berücksichtigt.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingReportsSummaryParams;\n query: BookkeepingReportsSummaryQuery;\n body: BookkeepingReportsSummaryBody;\n response: BookkeepingReportsSummaryResponse;\n responseData: BookkeepingReportsSummaryResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_reports_monthly_trend\": {\n method: \"GET\",\n path: \"/bookkeeping/reports/monthly-trend\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reports\"],\n summary: \"Monatlicher Umsatztrend\",\n description: \"Gibt monatliche Umsatz- und Ausgabendaten für ein gesamtes Jahr zurück. Geeignet für Trendgrafiken und Zeitreihenanalysen.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingReportsMonthlyTrendParams;\n query: BookkeepingReportsMonthlyTrendQuery;\n body: BookkeepingReportsMonthlyTrendBody;\n response: BookkeepingReportsMonthlyTrendResponse;\n responseData: BookkeepingReportsMonthlyTrendResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_reports_asset_register\": {\n method: \"GET\",\n path: \"/bookkeeping/reports/assets\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reports\"],\n summary: \"Anlagen-Spiegel / AfA-Bericht\",\n description: \"Gibt für ein Jahr ein Anlagenverzeichnis mit allen relevanten Anlagegütern zurück, inklusive Buchwert zu Jahresanfang/-ende, AfA des Jahres, Zugängen, Abgängen, `linkedDisposalRevenueId` für verknüpfte Verkaufserlöse und dem Verknüpfungsstatus zur Ursprungs-Ausgabe. Für veräußerte Anlagen endet die AfA im Bericht mit dem Abgang.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingReportsAssetRegisterParams;\n query: BookkeepingReportsAssetRegisterQuery;\n body: BookkeepingReportsAssetRegisterBody;\n response: BookkeepingReportsAssetRegisterResponse;\n responseData: BookkeepingReportsAssetRegisterResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_reports_category_breakdown\": {\n method: \"GET\",\n path: \"/bookkeeping/reports/category-breakdown\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reports\"],\n summary: \"Aufschlüsselung nach Kategorie\",\n description: \"Gibt eine Aufschlüsselung der Ausgaben nach Kategorie für einen bestimmten Zeitraum zurück. Enthält bei Anlagevermögen zusätzlich die Kategorie `depreciation`, während verknüpfte Anschaffungsausgaben nicht doppelt als Sofortaufwand erscheinen.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingReportsCategoryBreakdownParams;\n query: BookkeepingReportsCategoryBreakdownQuery;\n body: BookkeepingReportsCategoryBreakdownBody;\n response: BookkeepingReportsCategoryBreakdownResponse;\n responseData: BookkeepingReportsCategoryBreakdownResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_reports_vendor_breakdown\": {\n method: \"GET\",\n path: \"/bookkeeping/reports/vendor-breakdown\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reports\"],\n summary: \"Aufschlüsselung nach Lieferant\",\n description: \"Gibt eine Aufschlüsselung der Ausgaben nach Lieferant für ein bestimmtes Jahr zurück. Zeigt die größten Lieferanten und zugehörige Beträge.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingReportsVendorBreakdownParams;\n query: BookkeepingReportsVendorBreakdownQuery;\n body: BookkeepingReportsVendorBreakdownBody;\n response: BookkeepingReportsVendorBreakdownResponse;\n responseData: BookkeepingReportsVendorBreakdownResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_reports_vat_status\": {\n method: \"GET\",\n path: \"/bookkeeping/reports/vat/status\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reports\"],\n summary: \"Aktueller USt-Status\",\n description: \"Gibt den aktuellen USt-Status zurück: aktuelles Besteuerungsverfahren (SOLL/IST), Kleinunternehmer-Status, UStVA-Anmeldepräferenz und aktuelle Schwellenwert-Warnungen (z.B. Nähe zur 25k-Grenze). Zentraler Baustein für die Tax-Übersicht.\",\n },\n types: null as unknown as {\n params: BookkeepingReportsVatStatusParams;\n query: BookkeepingReportsVatStatusQuery;\n body: BookkeepingReportsVatStatusBody;\n response: BookkeepingReportsVatStatusResponse;\n responseData: BookkeepingReportsVatStatusResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_reports_vat_periods\": {\n method: \"GET\",\n path: \"/bookkeeping/reports/vat/periods\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reports\"],\n summary: \"USt-Regimeperioden-Verlauf\",\n description: \"Gibt die historische Liste aller USt-Regimeperioden zurück (Kleinunternehmer ↔ Regelbesteuert Übergänge). Zeigt, seit wann das Unternehmen in welchem USt-Regime ist.\",\n },\n types: null as unknown as {\n params: BookkeepingReportsVatPeriodsParams;\n query: BookkeepingReportsVatPeriodsQuery;\n body: BookkeepingReportsVatPeriodsBody;\n response: BookkeepingReportsVatPeriodsResponse;\n responseData: BookkeepingReportsVatPeriodsResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_reports_vat_ustva\": {\n method: \"GET\",\n path: \"/bookkeeping/reports/vat/ustva\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reports\"],\n summary: \"UStVA-Voranmeldung\",\n description: \"Erzeugt die Umsatzsteuer-Voranmeldung (UStVA) für eine bestimmte Periode (Monat/Quartal/Jahr). Enthält Umsatzsteuer-Eingangsteuer, Ausgangsteuer und den zu zahlenden/erstattbaren Betrag.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingReportsVatUstvaParams;\n query: BookkeepingReportsVatUstvaQuery;\n body: BookkeepingReportsVatUstvaBody;\n response: BookkeepingReportsVatUstvaResponse;\n responseData: BookkeepingReportsVatUstvaResponseData;\n },\n },\n // Contract source: explicit\n \"payments_import_csv\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/import/csv\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlungen aus CSV importieren\",\n description: \"Importiert Zahlungen aus einer CSV-Datei mittels eines Importprofils. Gibt Anzahl eingefügter und übersprungener Zeilen zurück. Nutze vorher /import/csv/preview um die Daten zu überprüfen.\",\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsImportCsvParams;\n query: PaymentsImportCsvQuery;\n body: PaymentsImportCsvBody;\n response: PaymentsImportCsvResponse;\n responseData: PaymentsImportCsvResponseData;\n },\n },\n // Contract source: explicit\n \"payments_import_csv_preview\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/import/csv/preview\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"CSV-Import vorschau\",\n description: \"Vorschau eines CSV-Imports: erkennt automatisch das Profil und Trennzeichen, mappt die Spalten und gibt eine Vorschau der validierten Zeilen mit Fehlern zurück.\",\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsImportCsvPreviewParams;\n query: PaymentsImportCsvPreviewQuery;\n body: PaymentsImportCsvPreviewBody;\n response: PaymentsImportCsvPreviewResponse;\n responseData: PaymentsImportCsvPreviewResponseData;\n },\n },\n // Contract source: explicit\n \"payments_list_csv_profiles\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/import/csv/profiles\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Verfügbare CSV-Importprofile\",\n description: \"Gibt eine Liste aller verfügbaren CSV-Importprofile zurück (vordefinierte Bankformat-Profile wie VKB, ING, etc.) mit Name und Trennzeichen-Hinweis.\",\n },\n types: null as unknown as {\n params: PaymentsListCsvProfilesParams;\n query: PaymentsListCsvProfilesQuery;\n body: PaymentsListCsvProfilesBody;\n response: PaymentsListCsvProfilesResponse;\n responseData: PaymentsListCsvProfilesResponseData;\n },\n },\n // Contract source: explicit\n \"payments_download_csv_template\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/import/csv/template/:profileKey\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"CSV-Vorlage herunterladen\",\n description: \"Gibt eine Musterdatei (CSV-Template) für ein bestimmtes Importprofil zum Download zurück. Hilfreich um das erwartete Format zu verstehen.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsDownloadCsvTemplateParams;\n query: PaymentsDownloadCsvTemplateQuery;\n body: PaymentsDownloadCsvTemplateBody;\n response: PaymentsDownloadCsvTemplateResponse;\n responseData: PaymentsDownloadCsvTemplateResponseData;\n },\n },\n // Contract source: explicit\n \"payments_list_import_profiles\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/import/profiles\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Benutzerdefinierte Importprofile auflisten\",\n description: \"Gibt alle benutzerdefinierten Importprofile zurück. Optional einschließlich archivierter Profile. Diese Profile werden vom Benutzer erstellt und pflegen die Spalten-Mappings für CSV-Imports.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsListImportProfilesParams;\n query: PaymentsListImportProfilesQuery;\n body: PaymentsListImportProfilesBody;\n response: PaymentsListImportProfilesResponse;\n responseData: PaymentsListImportProfilesResponseData;\n },\n },\n // Contract source: explicit\n \"payments_create_import_profile\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/import/profiles\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Neues Importprofil anlegen\",\n description: \"Erstellt ein neues benutzerdefiniertes Importprofil mit Spalten-Mapping für CSV-Imports.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsCreateImportProfileParams;\n query: PaymentsCreateImportProfileQuery;\n body: PaymentsCreateImportProfileBody;\n response: PaymentsCreateImportProfileResponse;\n responseData: PaymentsCreateImportProfileResponseData;\n },\n },\n // Contract source: explicit\n \"payments_update_import_profile\": {\n method: \"PUT\",\n path: \"/bookkeeping/payments/import/profiles/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Importprofil aktualisieren\",\n description: \"Aktualisiert ein benutzerdefiniertes Importprofil (Name, Spalten-Mapping, Archivierung).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsUpdateImportProfileParams;\n query: PaymentsUpdateImportProfileQuery;\n body: PaymentsUpdateImportProfileBody;\n response: PaymentsUpdateImportProfileResponse;\n responseData: PaymentsUpdateImportProfileResponseData;\n },\n },\n // Contract source: explicit\n \"payments_search\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/search\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlungen suchen\",\n description: \"Paginierte Suche über alle Zahlungen mit Filteroptionen (Zeitraum, Konto, Zuweisungsstatus, Suchbegriff). Hauptliste für die Zahlungsübersicht.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsSearchParams;\n query: PaymentsSearchQuery;\n body: PaymentsSearchBody;\n response: PaymentsSearchResponse;\n responseData: PaymentsSearchResponseData;\n },\n },\n // Contract source: explicit\n \"payments_create_manual\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/manual\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Manuell Zahlung anlegen\",\n description: \"Erstellt eine manuell eingetragene Zahlung (z.B. Bargeld, überwiesenes Nicht-CSV). Alternative zum CSV-Import für einzelne Einträge.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsCreateManualParams;\n query: PaymentsCreateManualQuery;\n body: PaymentsCreateManualBody;\n response: PaymentsCreateManualResponse;\n responseData: PaymentsCreateManualResponseData;\n },\n },\n // Contract source: explicit\n \"payments_transfer_link\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/transfer/link\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zwei bestehende Zahlungen als Umbuchung verknüpfen\",\n description: \"Verknüpft zwei bestehende Zahlungen (z.B. aus Bankimporten) als Umbuchungspaar. Beide Zahlungen müssen auf unterschiedlichen Konten sein, eine eingehend und eine ausgehend. Die Zahlungen werden bidirektional via linkedPaymentId verknüpft. Es werden KEINE neuen Zahlungen erstellt.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsTransferLinkParams;\n query: PaymentsTransferLinkQuery;\n body: PaymentsTransferLinkBody;\n response: PaymentsTransferLinkResponse;\n responseData: PaymentsTransferLinkResponseData;\n },\n },\n // Contract source: explicit\n \"payments_cashbook\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/cashbook\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Kassenbestand / Kontobuch\",\n description: \"Gibt das Kontobuch für ein bestimmtes Zahlungskonto zurück: Eröffnungsbetrag, Schlussbetrag und paginierte Liste der Bewegungen im Zeitraum.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsCashbookParams;\n query: PaymentsCashbookQuery;\n body: PaymentsCashbookBody;\n response: PaymentsCashbookResponse;\n responseData: PaymentsCashbookResponseData;\n },\n },\n // Contract source: explicit\n \"payments_match_suggestions\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/match/:paymentId/suggestions\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zuweisungsvorschläge für Zahlung\",\n description: \"Gibt Vorschläge für die Zuordnung einer Zahlung zu Rechnungen/Ausgaben zurück (automatische Matching-Logik basierend auf Betrag und Zeitraum). Zeigt auch den verbleibenden Betrag an.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsMatchSuggestionsParams;\n query: PaymentsMatchSuggestionsQuery;\n body: PaymentsMatchSuggestionsBody;\n response: PaymentsMatchSuggestionsResponse;\n responseData: PaymentsMatchSuggestionsResponseData;\n },\n },\n // Contract source: explicit\n \"payments_booking_payment_suggestions\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/booking-match/:targetType/:targetId/payment-suggestions\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlungsvorschläge für Buchung\",\n description: \"Gibt Zahlungsvorschläge für eine Ausgabe oder Einnahme zurück (spiegelbildlich zu match-suggestions). Ermöglicht die Zuordnung von der Buchungsseite aus.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsBookingPaymentSuggestionsParams;\n query: PaymentsBookingPaymentSuggestionsQuery;\n body: PaymentsBookingPaymentSuggestionsBody;\n response: PaymentsBookingPaymentSuggestionsResponse;\n responseData: PaymentsBookingPaymentSuggestionsResponseData;\n },\n },\n // Contract source: explicit\n \"payments_allocate\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/allocate/:paymentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlung einer Rechnung zuweisen\",\n description: \"Weist eine Zahlung einer oder mehreren Rechnungen/Ausgaben zu (Allokation). Gibt die aktualisierten Allokations-Einträge zurück.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsAllocateParams;\n query: PaymentsAllocateQuery;\n body: PaymentsAllocateBody;\n response: PaymentsAllocateResponse;\n responseData: PaymentsAllocateResponseData;\n },\n },\n // Contract source: explicit\n \"payments_unallocate\": {\n method: \"DELETE\",\n path: \"/bookkeeping/payments/allocations/:paymentId/:allocationId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"[DEPRECATED] Zuweisung entfernen — gesperrt (GoBD)\",\n description: \"GoBD-konform: Zuordnungen dürfen nicht gelöscht werden. Verwende stattdessen POST /:paymentId/allocations/:allocationId/reverse für eine Stornierung.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsUnallocateParams;\n query: PaymentsUnallocateQuery;\n body: PaymentsUnallocateBody;\n response: PaymentsUnallocateResponse;\n responseData: PaymentsUnallocateResponseData;\n },\n },\n // Contract source: explicit\n \"payments_update\": {\n method: \"PUT\",\n path: \"/bookkeeping/payments/update/:paymentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlung aktualisieren\",\n description: \"Aktualisiert eine bestehende Zahlung (z.B. Notiz, Kategorie). Zahlungen in gesperrten Perioden können nicht mehr geändert werden.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsUpdateParams;\n query: PaymentsUpdateQuery;\n body: PaymentsUpdateBody;\n response: PaymentsUpdateResponse;\n responseData: PaymentsUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"payments_reversal_preview\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/:paymentId/reversal-preview\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Storno-Vorschau für Zahlung\",\n description: \"Zeigt eine Vorschau aller Auswirkungen einer Stornierung: betroffene Zuordnungen, Rechnungs-Status-Änderungen, Warnungen und Blocker. Muss VOR der Stornierung aufgerufen werden um dem User die Konsequenzen zu zeigen.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsReversalPreviewParams;\n query: PaymentsReversalPreviewQuery;\n body: PaymentsReversalPreviewBody;\n response: PaymentsReversalPreviewResponse;\n responseData: PaymentsReversalPreviewResponseData;\n },\n },\n // Contract source: explicit\n \"payments_reverse\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/:paymentId/reverse\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlung stornieren (GoBD-konform)\",\n description: \"Erstellt eine Gegenbuchung (Storno-Payment) mit umgekehrtem Vorzeichen und storniert alle zugehörigen Zuordnungen. Die ursprüngliche Zahlung wird als storniert markiert, aber NICHT gelöscht. Rechnungen werden ggf. auf 'issued' zurückgesetzt. Idempotent: doppelte Aufrufe geben das bestehende Storno zurück.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsReverseParams;\n query: PaymentsReverseQuery;\n body: PaymentsReverseBody;\n response: PaymentsReverseResponse;\n responseData: PaymentsReverseResponseData;\n },\n },\n // Contract source: explicit\n \"payments_transfer_unlink\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/:paymentId/transfer/unlink\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Umbuchung auflösen (Verknüpfung entfernen)\",\n description: \"Entfernt die Verknüpfung zwischen zwei als Umbuchung verknüpften Zahlungen. Die Zahlungen selbst bleiben bestehen, nur die bidirektionale Verknüpfung wird aufgehoben. Begründung ist Pflicht (GoBD).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsTransferUnlinkParams;\n query: PaymentsTransferUnlinkQuery;\n body: PaymentsTransferUnlinkBody;\n response: PaymentsTransferUnlinkResponse;\n responseData: PaymentsTransferUnlinkResponseData;\n },\n },\n // Contract source: explicit\n \"payments_transfer_linkable\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/:paymentId/transfer/linkable\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Verknüpfbare Zahlungen für Umbuchung suchen\",\n description: \"Gibt eine paginierte Liste von Zahlungen zurück, die als Umbuchungs-Gegenstück zur angegebenen Zahlung verknüpft werden könnten. Filtert nach Konto, Richtung, Zeitraum und Betrag. Nur unverknüpfte, nicht-stornierte Zahlungen werden zurückgegeben.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsTransferLinkableParams;\n query: PaymentsTransferLinkableQuery;\n body: PaymentsTransferLinkableBody;\n response: PaymentsTransferLinkableResponse;\n responseData: PaymentsTransferLinkableResponseData;\n },\n },\n // Contract source: explicit\n \"payments_allocation_reversal_preview\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/:paymentId/allocations/:allocationId/reversal-preview\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Storno-Vorschau für Zuordnung\",\n description: \"Zeigt die Auswirkungen einer Zuordnungs-Stornierung: betroffene Rechnung, neuer Status, verbleibender Zuordnungsbetrag nach Storno.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsAllocationReversalPreviewParams;\n query: PaymentsAllocationReversalPreviewQuery;\n body: PaymentsAllocationReversalPreviewBody;\n response: PaymentsAllocationReversalPreviewResponse;\n responseData: PaymentsAllocationReversalPreviewResponseData;\n },\n },\n // Contract source: explicit\n \"payments_allocation_reverse\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/:paymentId/allocations/:allocationId/reverse\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zuordnung stornieren (GoBD-konform)\",\n description: \"Erstellt eine Gegen-Zuordnung mit negativem Betrag auf derselben Zahlung. Die ursprüngliche Zuordnung wird als storniert markiert, aber NICHT gelöscht. Die Rechnung wird ggf. auf 'issued' zurückgesetzt. Idempotent: doppelte Aufrufe geben das bestehende Storno zurück.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsAllocationReverseParams;\n query: PaymentsAllocationReverseQuery;\n body: PaymentsAllocationReverseBody;\n response: PaymentsAllocationReverseResponse;\n responseData: PaymentsAllocationReverseResponseData;\n },\n },\n // Contract source: explicit\n \"payments_delete\": {\n method: \"DELETE\",\n path: \"/bookkeeping/payments/:paymentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"[DEPRECATED] Zahlung löschen — gesperrt (GoBD)\",\n description: \"GoBD-konform: Zahlungen dürfen nicht gelöscht werden. Verwende stattdessen POST /:paymentId/reverse für eine Stornierung.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsDeleteParams;\n query: PaymentsDeleteQuery;\n body: PaymentsDeleteBody;\n response: PaymentsDeleteResponse;\n responseData: PaymentsDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"payments_book\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/:paymentId/book\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Kontoauszugszeile direkt buchen (Bank-First)\",\n description: \"Erstellt eine Buchung (Ausgabe oder Einnahme) direkt aus einer Zahlungstransaktion und verknüpft sie atomisch via Allokation. Eingehende Zahlungen (direction=in) erzeugen eine Einnahme, ausgehende (direction=out) eine Ausgabe. Diese Route ist der empfohlene Einstiegspunkt für den Bank-First-Buchungsflow.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsBookParams;\n query: PaymentsBookQuery;\n body: PaymentsBookBody;\n response: PaymentsBookResponse;\n responseData: PaymentsBookResponseData;\n },\n },\n // Contract source: explicit\n \"payments_record_fee\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/:paymentId/fee\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Bankgebühr auf Zahlung buchen\",\n description: \"Erfasst eine Bankgebühr (z.B. Kontoführung, Überweisungsgebühr) für eine Zahlung. Erstellt automatisch eine Ausgabe mit Kategorie 'bank_fees' und verknüpft sie mit der Zahlung via Allokation (kind=fee). Die Gebühr reduziert den verfügbaren Betrag für weitere Zuweisungen.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsRecordFeeParams;\n query: PaymentsRecordFeeQuery;\n body: PaymentsRecordFeeBody;\n response: PaymentsRecordFeeResponse;\n responseData: PaymentsRecordFeeResponseData;\n },\n },\n // Contract source: explicit\n \"payments_writeoff\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/:paymentId/writeoff\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Forderung/Schuld abschreiben\",\n description: \"Schreibt einen nicht-einbringlichen Betrag ab (z.B. Kunde insolvent, Forderung uneinbringlich). Erstellt eine Allokation mit kind=writeoff, die den offenen Betrag auf der Zielrechnung/Ausgabe reduziert. Der abgeschriebene Betrag wird steuerlich als Forderungsausfall behandelt. Grund muss angegeben werden (GoBD-konform).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsWriteoffParams;\n query: PaymentsWriteoffQuery;\n body: PaymentsWriteoffBody;\n response: PaymentsWriteoffResponse;\n responseData: PaymentsWriteoffResponseData;\n },\n },\n // Contract source: explicit\n \"payments_apply_discount\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/:paymentId/discount\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Skonto / Rabatt anwenden\",\n description: \"Wendet einen Skonto (Zahlungszielrabatt) oder Rabatt auf eine Rechnung/Ausgabe an. Erstellt eine Allokation mit kind=discount, die den offenen Betrag reduziert. Typische Anwendung: 2% Skonto bei Zahlung innerhalb 10 Tagen. Der Grund kann optional angegeben werden (z.B. 'Skonto 2%, Zahlung innerhalb 10 Tagen').\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsApplyDiscountParams;\n query: PaymentsApplyDiscountQuery;\n body: PaymentsApplyDiscountBody;\n response: PaymentsApplyDiscountResponse;\n responseData: PaymentsApplyDiscountResponseData;\n },\n },\n // Contract source: explicit\n \"payments_get_account_by_id\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/accounts/bdId/:accountId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlungskonto nach ID laden\",\n description: \"Lädt ein einzelnes Zahlungskonto (Bank/Kasse) anhand seiner ID mit allen Details (Name, IBAN, Typ, Eröffnungsbetrag).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsGetAccountByIdParams;\n query: PaymentsGetAccountByIdQuery;\n body: PaymentsGetAccountByIdBody;\n response: PaymentsGetAccountByIdResponse;\n responseData: PaymentsGetAccountByIdResponseData;\n },\n },\n // Contract source: explicit\n \"payments_list_accounts\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/accounts\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlungskonten auflisten\",\n description: \"Gibt eine paginierte Liste aller Zahlungskonten (Bankkonten, Kassenkonten) zurück, optional gefiltert per Suchbegriff.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsListAccountsParams;\n query: PaymentsListAccountsQuery;\n body: PaymentsListAccountsBody;\n response: PaymentsListAccountsResponse;\n responseData: PaymentsListAccountsResponseData;\n },\n },\n // Contract source: explicit\n \"payments_create_account\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/accounts/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Neues Zahlungskonto anlegen\",\n description: \"Erstellt ein neues Zahlungskonto (Bankkonto oder Kasse) mit Name, IBAN und optionalem Eröffnungsbetrag.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsCreateAccountParams;\n query: PaymentsCreateAccountQuery;\n body: PaymentsCreateAccountBody;\n response: PaymentsCreateAccountResponse;\n responseData: PaymentsCreateAccountResponseData;\n },\n },\n // Contract source: explicit\n \"payments_update_account\": {\n method: \"PUT\",\n path: \"/bookkeeping/payments/accounts/update/:accountId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlungskonto aktualisieren\",\n description: \"Aktualisiert ein bestehendes Zahlungskonto (Name, IBAN, Typ, PayPal-Credentials).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsUpdateAccountParams;\n query: PaymentsUpdateAccountQuery;\n body: PaymentsUpdateAccountBody;\n response: PaymentsUpdateAccountResponse;\n responseData: PaymentsUpdateAccountResponseData;\n },\n },\n // Contract source: explicit\n \"payments_archive_account\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/accounts/:accountId/archive\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlungskonto archivieren\",\n description: \"Archiviert ein Zahlungskonto (Soft-Delete). Nur möglich wenn: keine offenen Zahlungen, keine aktiven Provider-Verbindungen, kein verknüpftes Bankkonto von einem anderen Konto, und kein Standard-Konto. GoBD-konform: Konto bleibt in der DB erhalten.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsArchiveAccountParams;\n query: PaymentsArchiveAccountQuery;\n body: PaymentsArchiveAccountBody;\n response: PaymentsArchiveAccountResponse;\n responseData: PaymentsArchiveAccountResponseData;\n },\n },\n // Contract source: explicit\n \"payments_delete_account\": {\n method: \"DELETE\",\n path: \"/bookkeeping/payments/accounts/:accountId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Unbenutztes Zahlungskonto löschen\",\n description: \"Löscht ein Zahlungskonto permanent. Nur möglich wenn das Konto keinerlei Zahlungen, Verbindungen, Rechnungsreferenzen oder Snapshots hat. Für Konten mit Daten: /archive verwenden.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsDeleteAccountParams;\n query: PaymentsDeleteAccountQuery;\n body: PaymentsDeleteAccountBody;\n response: PaymentsDeleteAccountResponse;\n responseData: PaymentsDeleteAccountResponseData;\n },\n },\n // Contract source: explicit\n \"payments_paypal_sync\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/accounts/:accountId/paypal/sync\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"PayPal-Konto manuell synchronisieren\",\n description: \"Ruft Transaktionen über die PayPal REST API ab und importiert sie idempotent (fingerprint-basiert, keine Duplikate). Optionaler 'fromDate' überschreibt den gespeicherten Sync-Cursor.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsPaypalSyncParams;\n query: PaymentsPaypalSyncQuery;\n body: PaymentsPaypalSyncBody;\n response: PaymentsPaypalSyncResponse;\n responseData: PaymentsPaypalSyncResponseData;\n },\n },\n // Contract source: explicit\n \"payments_sumup_oauth_start\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/accounts/:accountId/sumup/oauth/start\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"SumUp OAuth starten\",\n description: \"Erzeugt einen kurzlebigen OAuth-State und gibt die Authorize-URL fuer den SumUp Sign-in Flow zurueck. autoCreateBankAccount steuert ob nach OAuth automatisch ein Bankkonto aus den SumUp-Payout-Settings angelegt wird.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsSumupOauthStartParams;\n query: PaymentsSumupOauthStartQuery;\n body: PaymentsSumupOauthStartBody;\n response: PaymentsSumupOauthStartResponse;\n responseData: PaymentsSumupOauthStartResponseData;\n },\n },\n // Contract source: explicit\n \"payments_sumup_sync\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/accounts/:accountId/sumup/sync\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"SumUp-Konto manuell synchronisieren\",\n description: \"Importiert SumUp-Transaktionen und Payouts idempotent ueber die SumUp API.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsSumupSyncParams;\n query: PaymentsSumupSyncQuery;\n body: PaymentsSumupSyncBody;\n response: PaymentsSumupSyncResponse;\n responseData: PaymentsSumupSyncResponseData;\n },\n },\n // Contract source: explicit\n \"payments_sumup_oauth_disconnect\": {\n method: \"DELETE\",\n path: \"/bookkeeping/payments/accounts/:accountId/sumup/oauth\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"SumUp-Verbindung trennen\",\n description: \"Trennt die gespeicherte SumUp OAuth-Verbindung fuer ein Zahlungskonto und deaktiviert den automatischen Sync.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsSumupOauthDisconnectParams;\n query: PaymentsSumupOauthDisconnectQuery;\n body: PaymentsSumupOauthDisconnectBody;\n response: PaymentsSumupOauthDisconnectResponse;\n responseData: PaymentsSumupOauthDisconnectResponseData;\n },\n },\n // Contract source: explicit\n \"payments_paypal_webhook_register\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/accounts/:accountId/paypal/webhook/register\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"PayPal-Webhook registrieren\",\n description: \"Registriert eine HTTPS-Callback-URL bei PayPal für Echtzeit-Zahlungsbenachrichtigungen. Überschreibt einen vorhandenen Webhook automatisch.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsPaypalWebhookRegisterParams;\n query: PaymentsPaypalWebhookRegisterQuery;\n body: PaymentsPaypalWebhookRegisterBody;\n response: PaymentsPaypalWebhookRegisterResponse;\n responseData: PaymentsPaypalWebhookRegisterResponseData;\n },\n },\n // Contract source: explicit\n \"payments_paypal_webhook_deregister\": {\n method: \"DELETE\",\n path: \"/bookkeeping/payments/accounts/:accountId/paypal/webhook\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"PayPal-Webhook entfernen\",\n description: \"Entfernt den registrierten PayPal-Webhook und löscht die webhookId aus der Datenbank.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsPaypalWebhookDeregisterParams;\n query: PaymentsPaypalWebhookDeregisterQuery;\n body: PaymentsPaypalWebhookDeregisterBody;\n response: PaymentsPaypalWebhookDeregisterResponse;\n responseData: PaymentsPaypalWebhookDeregisterResponseData;\n },\n },\n // Contract source: explicit\n \"payments_list_balance_snapshots\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/snapshots\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Ist-Saldo Snapshots auflisten\",\n description: \"Gibt alle externen Saldo-Snapshots für ein Zahlungskonto zurück (Bank/PayPal/SumUp). Nicht-stornierte Einträge werden standardmäßig zurückgegeben. Dient der Anzeige von Systemsaldo vs. Ist-Saldo und Abweichung. GoBD: Einträge werden nie gelöscht — nur storniert.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsListBalanceSnapshotsParams;\n query: PaymentsListBalanceSnapshotsQuery;\n body: PaymentsListBalanceSnapshotsBody;\n response: PaymentsListBalanceSnapshotsResponse;\n responseData: PaymentsListBalanceSnapshotsResponseData;\n },\n },\n // Contract source: explicit\n \"payments_create_balance_snapshot\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/snapshots\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Ist-Saldo Snapshot anlegen\",\n description: \"Erfasst einen externen Saldo-Snapshot (z.B. Kontoauszug, PayPal-Saldo). Jeder Snapshot ist ein unveränderlicher Eintrag. Korrekturen erfolgen durch Stornierung und Neuanlage. GoBD: append-only, kein DELETE.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsCreateBalanceSnapshotParams;\n query: PaymentsCreateBalanceSnapshotQuery;\n body: PaymentsCreateBalanceSnapshotBody;\n response: PaymentsCreateBalanceSnapshotResponse;\n responseData: PaymentsCreateBalanceSnapshotResponseData;\n },\n },\n // Contract source: explicit\n \"payments_void_balance_snapshot\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/snapshots/:snapshotId/void\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Ist-Saldo Snapshot stornieren (GoBD)\",\n description: \"Storniert einen fehlerhaften Saldo-Snapshot. Der Eintrag wird als storniert markiert (isVoided = true) und aus der aktiven Anzeige ausgeblendet, bleibt aber dauerhaft im Audit-Trail erhalten. Begründung ist Pflicht (GoBD). Keine Datenlöschung.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsVoidBalanceSnapshotParams;\n query: PaymentsVoidBalanceSnapshotQuery;\n body: PaymentsVoidBalanceSnapshotBody;\n response: PaymentsVoidBalanceSnapshotResponse;\n responseData: PaymentsVoidBalanceSnapshotResponseData;\n },\n },\n // Contract source: explicit\n \"payments_update_fee_vat_treatment\": {\n method: \"PUT\",\n path: \"/bookkeeping/payments/accounts/:accountId/fee-vat-treatment\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Gebuehren-Steuerbehandlung der Provider-Verbindung setzen\",\n description: \"Legt fest wie Provider-Gebuehren steuerlich behandelt werden: EXEMPT (steuerfrei, §4 Nr. 8 UStG), INCLUSIVE_STANDARD (19% inklusive, deutsche Entity), REVERSE_CHARGE_13B (§13b, EU-Entity). Gilt pro Verbindung, nicht global.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsUpdateFeeVatTreatmentParams;\n query: PaymentsUpdateFeeVatTreatmentQuery;\n body: PaymentsUpdateFeeVatTreatmentBody;\n response: PaymentsUpdateFeeVatTreatmentResponse;\n responseData: PaymentsUpdateFeeVatTreatmentResponseData;\n },\n },\n // Contract source: explicit\n \"payments_list_fee_proposals\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/fee-proposals\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Gebuehren-Vorschlaege auflisten\",\n description: \"Listet alle vom Sync vorgeschlagenen Fee-Expenses die auf Bestaetigung warten. Diese Vorschlaege wurden automatisch beim Import erstellt und muessen vom User bestaetigt werden bevor sie in die UStVA einfliessen.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsListFeeProposalsParams;\n query: PaymentsListFeeProposalsQuery;\n body: PaymentsListFeeProposalsBody;\n response: PaymentsListFeeProposalsResponse;\n responseData: PaymentsListFeeProposalsResponseData;\n },\n },\n // Contract source: explicit\n \"payments_confirm_fee_proposals\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/fee-proposals/confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Gebuehren-Vorschlaege bestaetigen\",\n description: \"Bestaetigt ausgewaehlte Fee-Vorschlaege. Nach Bestaetigung werden sie als regulaere Ausgaben gebucht und fliessen in die UStVA ein.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsConfirmFeeProposalsParams;\n query: PaymentsConfirmFeeProposalsQuery;\n body: PaymentsConfirmFeeProposalsBody;\n response: PaymentsConfirmFeeProposalsResponse;\n responseData: PaymentsConfirmFeeProposalsResponseData;\n },\n },\n // Contract source: explicit\n \"payments_reject_fee_proposals\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/fee-proposals/reject\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Gebuehren-Vorschlaege ablehnen\",\n description: \"Lehnt ausgewaehlte Fee-Vorschlaege ab. Abgelehnte Vorschlaege werden als geloescht markiert. Beim naechsten Sync koennen neue Vorschlaege erstellt werden.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsRejectFeeProposalsParams;\n query: PaymentsRejectFeeProposalsQuery;\n body: PaymentsRejectFeeProposalsBody;\n response: PaymentsRejectFeeProposalsResponse;\n responseData: PaymentsRejectFeeProposalsResponseData;\n },\n },\n // Contract source: explicit\n \"payments_paypal_webhook_receive\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/public/paypal/webhook\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"PayPal-Webhook empfangen (public)\",\n description: \"Öffentlicher Endpunkt für eingehende PayPal-Webhook-Events. Signatur wird intern via PayPal API verifiziert. Gibt immer HTTP 200 zurück.\",\n },\n types: null as unknown as {\n params: PaymentsPaypalWebhookReceiveParams;\n query: PaymentsPaypalWebhookReceiveQuery;\n body: PaymentsPaypalWebhookReceiveBody;\n response: PaymentsPaypalWebhookReceiveResponse;\n responseData: PaymentsPaypalWebhookReceiveResponseData;\n },\n },\n // Contract source: explicit\n \"payments_sumup_oauth_callback\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/public/sumup/oauth/callback\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"SumUp OAuth Callback (public)\",\n description: \"Öffentlicher Callback-Endpunkt für den SumUp OAuth Authorization-Code-Flow. Validiert den OAuth-State, speichert Tokens serverseitig und leitet zurück ins Frontend.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsSumupOauthCallbackParams;\n query: PaymentsSumupOauthCallbackQuery;\n body: PaymentsSumupOauthCallbackBody;\n response: PaymentsSumupOauthCallbackResponse;\n responseData: PaymentsSumupOauthCallbackResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_payments_list_accounts_external\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/external/accounts\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"payments:read\"]},\n meta: {\n tags: [\"bookkeeping\",\"payments-external\"],\n summary: \"List payment accounts via external API\",\n description: \"Returns payment accounts accessible for the token (cost center filtered). Use this to resolve paymentAccountId before calling settle-invoice.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingPaymentsListAccountsExternalParams;\n query: BookkeepingPaymentsListAccountsExternalQuery;\n body: BookkeepingPaymentsListAccountsExternalBody;\n response: BookkeepingPaymentsListAccountsExternalResponse;\n responseData: BookkeepingPaymentsListAccountsExternalResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_payments_create_manual_external\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/external/manual\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"payments:write\"]},\n meta: {\n tags: [\"bookkeeping\",\"payments-external\"],\n summary: \"Create manual payment via external API\",\n description: \"Creates a manual payment entry via OAuth2/API key for integration scenarios (e.g. PSP clearing events). Kept intentionally narrow; allocation/reconciliation remains an internal or CSV-led workflow.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingPaymentsCreateManualExternalParams;\n query: BookkeepingPaymentsCreateManualExternalQuery;\n body: BookkeepingPaymentsCreateManualExternalBody;\n response: BookkeepingPaymentsCreateManualExternalResponse;\n responseData: BookkeepingPaymentsCreateManualExternalResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_payments_settle_invoice_external\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/external/settle-invoice\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"payments:write\",\"invoices:write\"]},\n meta: {\n tags: [\"bookkeeping\",\"payments-external\"],\n summary: \"Settle invoice via external API\",\n description: \"One-shot settlement for shop/payment-provider flows: creates payment, allocates it to the invoice, and can auto-close shortfall as discount so no manual allocation step remains.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingPaymentsSettleInvoiceExternalParams;\n query: BookkeepingPaymentsSettleInvoiceExternalQuery;\n body: BookkeepingPaymentsSettleInvoiceExternalBody;\n response: BookkeepingPaymentsSettleInvoiceExternalResponse;\n responseData: BookkeepingPaymentsSettleInvoiceExternalResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_audit_logs\": {\n method: \"GET\",\n path: \"/bookkeeping/audit/logs\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"audit\"],\n summary: \"Buchungs-Audit-Protokoll\",\n description: \"Gibt eine paginierte Liste aller Buchungs-Audit-Einträge zurück: Sperränderungen, Zahlungsoperationen, Rechnungsänderungen, USt-Änderungen etc. Vollständiges Prüfprotokoll für das Unternehmen.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAuditLogsParams;\n query: BookkeepingAuditLogsQuery;\n body: BookkeepingAuditLogsBody;\n response: BookkeepingAuditLogsResponse;\n responseData: BookkeepingAuditLogsResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_locks_get_state\": {\n method: \"GET\",\n path: \"/bookkeeping/locks/state\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"locks\"],\n summary: \"Aktueller Buchungssperre-Status\",\n description: \"Gibt den aktuellen Buchungssperre-Zustand zurück: welche Periode gesperrt ist, seit wann und in welchem Modus (payments_only = nur Zahlungen blockiert, strict = alles blockiert). Basis für die Sperrübersicht im Frontend.\",\n },\n types: null as unknown as {\n params: BookkeepingLocksGetStateParams;\n query: BookkeepingLocksGetStateQuery;\n body: BookkeepingLocksGetStateBody;\n response: BookkeepingLocksGetStateResponse;\n responseData: BookkeepingLocksGetStateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_locks_recommendation\": {\n method: \"GET\",\n path: \"/bookkeeping/locks/recommendation\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"locks\"],\n summary: \"Empfohlene nächste Buchungssperre\",\n description: \"Berechnet dynamisch die nächste empfohlene Buchungssperre basierend auf der UStVA-Anmeldepräferenz des Unternehmens (monatlich/vierteljährlich/jährlich). Gibt die vorgeschlagene Periode, Beginn/Ende, Begründung und Readiness-Checks zurück (offene Entwürfe, nicht zugewiesene Zahlungen etc.). Das ist die 'was ist geplant'-Information für Locks.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingLocksRecommendationParams;\n query: BookkeepingLocksRecommendationQuery;\n body: BookkeepingLocksRecommendationBody;\n response: BookkeepingLocksRecommendationResponse;\n responseData: BookkeepingLocksRecommendationResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_locks_overview\": {\n method: \"GET\",\n path: \"/bookkeeping/locks/overview\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"locks\"],\n summary: \"Frontend-Übersicht für Buchungssperre\",\n description: \"Liefert den aktuellen Sperr-UI-State inkl. Bedeutung (State-Legende), betroffener Bereiche, Modi und klarer Boundary-Regel. Diese Antwort ist speziell für eine leicht verständliche Frontend-Anzeige gedacht.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingLocksOverviewParams;\n query: BookkeepingLocksOverviewQuery;\n body: BookkeepingLocksOverviewBody;\n response: BookkeepingLocksOverviewResponse;\n responseData: BookkeepingLocksOverviewResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_locks_set\": {\n method: \"POST\",\n path: \"/bookkeeping/locks/set\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"locks\"],\n summary: \"Buchungssperre setzen oder aufheben\",\n description: \"Setzt eine neue Buchungssperre bis zu einem bestimmten Datum in einem gewählten Modus (payments_only oder strict), oder hebt eine bestehende Sperre auf. Erzeugt einen Eintrag im Buchungs-Audit-Log. Sollte erst nach einer positiven Empfehlung von /recommendation verwendet werden.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingLocksSetParams;\n query: BookkeepingLocksSetQuery;\n body: BookkeepingLocksSetBody;\n response: BookkeepingLocksSetResponse;\n responseData: BookkeepingLocksSetResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_tax_params_health\": {\n method: \"GET\",\n path: \"/bookkeeping/tax-params/health\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"tax-params\"],\n summary: \"Tax-Parameter Health Check\",\n description: \"Prüft ob alle erwarteten Steuerparameter in der DB vorhanden sind. Zeigt fehlende Keys und aktuelle Werte. Status 503 wenn Parameter fehlen.\",\n },\n types: null as unknown as {\n params: BookkeepingTaxParamsHealthParams;\n query: BookkeepingTaxParamsHealthQuery;\n body: BookkeepingTaxParamsHealthBody;\n response: BookkeepingTaxParamsHealthResponse;\n responseData: BookkeepingTaxParamsHealthResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_tax_params_sync\": {\n method: \"POST\",\n path: \"/bookkeeping/tax-params/sync\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"tax-params\"],\n summary: \"Tax-Parameter synchronisieren\",\n description: \"Fügt fehlende Seed-Daten ein ohne bestehende zu überschreiben. Sicher für Produktion – idempotent.\",\n },\n types: null as unknown as {\n params: BookkeepingTaxParamsSyncParams;\n query: BookkeepingTaxParamsSyncQuery;\n body: BookkeepingTaxParamsSyncBody;\n response: BookkeepingTaxParamsSyncResponse;\n responseData: BookkeepingTaxParamsSyncResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_tax_params_list\": {\n method: \"GET\",\n path: \"/bookkeeping/tax-params\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"tax-params\"],\n summary: \"Steuerparameter auflisten\",\n description: \"Listet alle gesetzlichen Steuerparameter mit zeitlicher Gueltigkeit. Filterbar nach Kategorie (afa, vat, threshold, building) und Stichtag.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingTaxParamsListParams;\n query: BookkeepingTaxParamsListQuery;\n body: BookkeepingTaxParamsListBody;\n response: BookkeepingTaxParamsListResponse;\n responseData: BookkeepingTaxParamsListResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_tax_params_history\": {\n method: \"GET\",\n path: \"/bookkeeping/tax-params/:key/history\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"tax-params\"],\n summary: \"Parameter-Aenderungshistorie\",\n description: \"Zeigt die vollstaendige Aenderungshistorie eines Steuerparameters (Audit-Trail).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingTaxParamsHistoryParams;\n query: BookkeepingTaxParamsHistoryQuery;\n body: BookkeepingTaxParamsHistoryBody;\n response: BookkeepingTaxParamsHistoryResponse;\n responseData: BookkeepingTaxParamsHistoryResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_tax_params_create\": {\n method: \"POST\",\n path: \"/bookkeeping/tax-params\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"tax-params\"],\n summary: \"Neuen Steuerparameter-Zeitraum anlegen\",\n description: \"Erstellt einen neuen Gueltigkeitszeitraum fuer einen Steuerparameter. Setzt automatisch validTo auf dem bisherigen aktiven Eintrag. Nur Platform-Admins.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingTaxParamsCreateParams;\n query: BookkeepingTaxParamsCreateQuery;\n body: BookkeepingTaxParamsCreateBody;\n response: BookkeepingTaxParamsCreateResponse;\n responseData: BookkeepingTaxParamsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_tax_params_update\": {\n method: \"PATCH\",\n path: \"/bookkeeping/tax-params/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"tax-params\"],\n summary: \"Steuerparameter aendern (nur zukuenftige)\",\n description: \"Aendert einen noch nicht gueltigen Steuerparameter. Bereits gueltige/vergangene Parameter koennen nicht geaendert werden.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingTaxParamsUpdateParams;\n query: BookkeepingTaxParamsUpdateQuery;\n body: BookkeepingTaxParamsUpdateBody;\n response: BookkeepingTaxParamsUpdateResponse;\n responseData: BookkeepingTaxParamsUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_get_settings\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/settings\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"ESt-Einstellungen laden\",\n description: \"Laedt die Einkommensteuer-Einstellungen (Bundesland, Kirchensteuer, Gewerbesteuer-Hebesatz, Vorauszahlungen, etc.) fuer das ausgewaehlte Unternehmen.\",\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxGetSettingsParams;\n query: BookkeepingIncomeTaxGetSettingsQuery;\n body: BookkeepingIncomeTaxGetSettingsBody;\n response: BookkeepingIncomeTaxGetSettingsResponse;\n responseData: BookkeepingIncomeTaxGetSettingsResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_upsert_settings\": {\n method: \"POST\",\n path: \"/bookkeeping/income-tax/settings\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"ESt-Einstellungen speichern\",\n description: \"Erstellt oder aktualisiert die Einkommensteuer-Einstellungen fuer das ausgewaehlte Unternehmen. Alle Felder sind optional; vorhandene Werte werden ueberschrieben.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxUpsertSettingsParams;\n query: BookkeepingIncomeTaxUpsertSettingsQuery;\n body: BookkeepingIncomeTaxUpsertSettingsBody;\n response: BookkeepingIncomeTaxUpsertSettingsResponse;\n responseData: BookkeepingIncomeTaxUpsertSettingsResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_list_employment\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/employment\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Angestellteneinkommen auflisten\",\n description: \"Listet alle erfassten Angestellteneinkommen fuer ein Steuerjahr auf.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxListEmploymentParams;\n query: BookkeepingIncomeTaxListEmploymentQuery;\n body: BookkeepingIncomeTaxListEmploymentBody;\n response: BookkeepingIncomeTaxListEmploymentResponse;\n responseData: BookkeepingIncomeTaxListEmploymentResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_get_employment\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/employment/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Angestellteneinkommen nach ID laden\",\n description: \"Laedt ein einzelnes Angestellteneinkommen anhand seiner ID.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxGetEmploymentParams;\n query: BookkeepingIncomeTaxGetEmploymentQuery;\n body: BookkeepingIncomeTaxGetEmploymentBody;\n response: BookkeepingIncomeTaxGetEmploymentResponse;\n responseData: BookkeepingIncomeTaxGetEmploymentResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_create_employment\": {\n method: \"POST\",\n path: \"/bookkeeping/income-tax/employment\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Angestellteneinkommen anlegen\",\n description: \"Erstellt ein neues Angestellteneinkommen (Lohnsteuerbescheinigung). Alle Betraege koennen als String oder Zahl uebergeben werden.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxCreateEmploymentParams;\n query: BookkeepingIncomeTaxCreateEmploymentQuery;\n body: BookkeepingIncomeTaxCreateEmploymentBody;\n response: BookkeepingIncomeTaxCreateEmploymentResponse;\n responseData: BookkeepingIncomeTaxCreateEmploymentResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_update_employment\": {\n method: \"PUT\",\n path: \"/bookkeeping/income-tax/employment/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Angestellteneinkommen aktualisieren\",\n description: \"Aktualisiert ein bestehendes Angestellteneinkommen. Alle Felder sind optional (Partial Update).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxUpdateEmploymentParams;\n query: BookkeepingIncomeTaxUpdateEmploymentQuery;\n body: BookkeepingIncomeTaxUpdateEmploymentBody;\n response: BookkeepingIncomeTaxUpdateEmploymentResponse;\n responseData: BookkeepingIncomeTaxUpdateEmploymentResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_delete_employment\": {\n method: \"DELETE\",\n path: \"/bookkeeping/income-tax/employment/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Angestellteneinkommen loeschen\",\n description: \"Loescht ein Angestellteneinkommen anhand seiner ID.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxDeleteEmploymentParams;\n query: BookkeepingIncomeTaxDeleteEmploymentQuery;\n body: BookkeepingIncomeTaxDeleteEmploymentBody;\n response: BookkeepingIncomeTaxDeleteEmploymentResponse;\n responseData: BookkeepingIncomeTaxDeleteEmploymentResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_list_werbungskosten\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/werbungskosten\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Werbungskosten auflisten\",\n description: \"Listet alle erfassten Werbungskosten fuer ein Steuerjahr auf.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxListWerbungskostenParams;\n query: BookkeepingIncomeTaxListWerbungskostenQuery;\n body: BookkeepingIncomeTaxListWerbungskostenBody;\n response: BookkeepingIncomeTaxListWerbungskostenResponse;\n responseData: BookkeepingIncomeTaxListWerbungskostenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_create_werbungskosten\": {\n method: \"POST\",\n path: \"/bookkeeping/income-tax/werbungskosten\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Werbungskosten anlegen\",\n description: \"Erstellt einen neuen Werbungskosten-Eintrag (Entfernungspauschale, Homeoffice, Arbeitsmittel, etc.).\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxCreateWerbungskostenParams;\n query: BookkeepingIncomeTaxCreateWerbungskostenQuery;\n body: BookkeepingIncomeTaxCreateWerbungskostenBody;\n response: BookkeepingIncomeTaxCreateWerbungskostenResponse;\n responseData: BookkeepingIncomeTaxCreateWerbungskostenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_update_werbungskosten\": {\n method: \"PUT\",\n path: \"/bookkeeping/income-tax/werbungskosten/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Werbungskosten aktualisieren\",\n description: \"Aktualisiert einen bestehenden Werbungskosten-Eintrag.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxUpdateWerbungskostenParams;\n query: BookkeepingIncomeTaxUpdateWerbungskostenQuery;\n body: BookkeepingIncomeTaxUpdateWerbungskostenBody;\n response: BookkeepingIncomeTaxUpdateWerbungskostenResponse;\n responseData: BookkeepingIncomeTaxUpdateWerbungskostenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_delete_werbungskosten\": {\n method: \"DELETE\",\n path: \"/bookkeeping/income-tax/werbungskosten/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Werbungskosten loeschen\",\n description: \"Loescht einen Werbungskosten-Eintrag anhand seiner ID.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxDeleteWerbungskostenParams;\n query: BookkeepingIncomeTaxDeleteWerbungskostenQuery;\n body: BookkeepingIncomeTaxDeleteWerbungskostenBody;\n response: BookkeepingIncomeTaxDeleteWerbungskostenResponse;\n responseData: BookkeepingIncomeTaxDeleteWerbungskostenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_list_sonderausgaben\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/sonderausgaben\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Sonderausgaben auflisten\",\n description: \"Listet alle erfassten Sonderausgaben fuer ein Steuerjahr auf.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxListSonderausgabenParams;\n query: BookkeepingIncomeTaxListSonderausgabenQuery;\n body: BookkeepingIncomeTaxListSonderausgabenBody;\n response: BookkeepingIncomeTaxListSonderausgabenResponse;\n responseData: BookkeepingIncomeTaxListSonderausgabenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_create_sonderausgaben\": {\n method: \"POST\",\n path: \"/bookkeeping/income-tax/sonderausgaben\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Sonderausgaben anlegen\",\n description: \"Erstellt einen neuen Sonderausgaben-Eintrag (Kirchensteuer, Spenden, Ausbildungskosten, etc.).\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxCreateSonderausgabenParams;\n query: BookkeepingIncomeTaxCreateSonderausgabenQuery;\n body: BookkeepingIncomeTaxCreateSonderausgabenBody;\n response: BookkeepingIncomeTaxCreateSonderausgabenResponse;\n responseData: BookkeepingIncomeTaxCreateSonderausgabenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_update_sonderausgaben\": {\n method: \"PUT\",\n path: \"/bookkeeping/income-tax/sonderausgaben/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Sonderausgaben aktualisieren\",\n description: \"Aktualisiert einen bestehenden Sonderausgaben-Eintrag.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxUpdateSonderausgabenParams;\n query: BookkeepingIncomeTaxUpdateSonderausgabenQuery;\n body: BookkeepingIncomeTaxUpdateSonderausgabenBody;\n response: BookkeepingIncomeTaxUpdateSonderausgabenResponse;\n responseData: BookkeepingIncomeTaxUpdateSonderausgabenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_delete_sonderausgaben\": {\n method: \"DELETE\",\n path: \"/bookkeeping/income-tax/sonderausgaben/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Sonderausgaben loeschen\",\n description: \"Loescht einen Sonderausgaben-Eintrag anhand seiner ID.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxDeleteSonderausgabenParams;\n query: BookkeepingIncomeTaxDeleteSonderausgabenQuery;\n body: BookkeepingIncomeTaxDeleteSonderausgabenBody;\n response: BookkeepingIncomeTaxDeleteSonderausgabenResponse;\n responseData: BookkeepingIncomeTaxDeleteSonderausgabenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_list_vorsorge\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/vorsorge\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Vorsorgeaufwendungen auflisten\",\n description: \"Listet alle erfassten Vorsorgeaufwendungen fuer ein Steuerjahr auf.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxListVorsorgeParams;\n query: BookkeepingIncomeTaxListVorsorgeQuery;\n body: BookkeepingIncomeTaxListVorsorgeBody;\n response: BookkeepingIncomeTaxListVorsorgeResponse;\n responseData: BookkeepingIncomeTaxListVorsorgeResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_create_vorsorge\": {\n method: \"POST\",\n path: \"/bookkeeping/income-tax/vorsorge\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Vorsorgeaufwendungen anlegen\",\n description: \"Erstellt einen neuen Vorsorgeaufwendungen-Eintrag (Krankenversicherung, Rentenversicherung, Haftpflicht, etc.).\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxCreateVorsorgeParams;\n query: BookkeepingIncomeTaxCreateVorsorgeQuery;\n body: BookkeepingIncomeTaxCreateVorsorgeBody;\n response: BookkeepingIncomeTaxCreateVorsorgeResponse;\n responseData: BookkeepingIncomeTaxCreateVorsorgeResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_update_vorsorge\": {\n method: \"PUT\",\n path: \"/bookkeeping/income-tax/vorsorge/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Vorsorgeaufwendungen aktualisieren\",\n description: \"Aktualisiert einen bestehenden Vorsorgeaufwendungen-Eintrag.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxUpdateVorsorgeParams;\n query: BookkeepingIncomeTaxUpdateVorsorgeQuery;\n body: BookkeepingIncomeTaxUpdateVorsorgeBody;\n response: BookkeepingIncomeTaxUpdateVorsorgeResponse;\n responseData: BookkeepingIncomeTaxUpdateVorsorgeResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_delete_vorsorge\": {\n method: \"DELETE\",\n path: \"/bookkeeping/income-tax/vorsorge/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Vorsorgeaufwendungen loeschen\",\n description: \"Loescht einen Vorsorgeaufwendungen-Eintrag anhand seiner ID.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxDeleteVorsorgeParams;\n query: BookkeepingIncomeTaxDeleteVorsorgeQuery;\n body: BookkeepingIncomeTaxDeleteVorsorgeBody;\n response: BookkeepingIncomeTaxDeleteVorsorgeResponse;\n responseData: BookkeepingIncomeTaxDeleteVorsorgeResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_list_steuerminderungen\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/steuerminderungen\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Steuerminderungen auflisten\",\n description: \"Listet alle erfassten Steuerminderungen (§35a EStG) fuer ein Steuerjahr auf.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxListSteuerminderungenParams;\n query: BookkeepingIncomeTaxListSteuerminderungenQuery;\n body: BookkeepingIncomeTaxListSteuerminderungenBody;\n response: BookkeepingIncomeTaxListSteuerminderungenResponse;\n responseData: BookkeepingIncomeTaxListSteuerminderungenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_create_steuerminderungen\": {\n method: \"POST\",\n path: \"/bookkeeping/income-tax/steuerminderungen\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Steuerminderungen anlegen\",\n description: \"Erstellt einen neuen Steuerminderungen-Eintrag (haushaltsnahe Dienstleistungen, Handwerkerleistungen, energetische Sanierung).\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxCreateSteuerminderungenParams;\n query: BookkeepingIncomeTaxCreateSteuerminderungenQuery;\n body: BookkeepingIncomeTaxCreateSteuerminderungenBody;\n response: BookkeepingIncomeTaxCreateSteuerminderungenResponse;\n responseData: BookkeepingIncomeTaxCreateSteuerminderungenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_update_steuerminderungen\": {\n method: \"PUT\",\n path: \"/bookkeeping/income-tax/steuerminderungen/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Steuerminderungen aktualisieren\",\n description: \"Aktualisiert einen bestehenden Steuerminderungen-Eintrag.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxUpdateSteuerminderungenParams;\n query: BookkeepingIncomeTaxUpdateSteuerminderungenQuery;\n body: BookkeepingIncomeTaxUpdateSteuerminderungenBody;\n response: BookkeepingIncomeTaxUpdateSteuerminderungenResponse;\n responseData: BookkeepingIncomeTaxUpdateSteuerminderungenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_delete_steuerminderungen\": {\n method: \"DELETE\",\n path: \"/bookkeeping/income-tax/steuerminderungen/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Steuerminderungen loeschen\",\n description: \"Loescht einen Steuerminderungen-Eintrag anhand seiner ID.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxDeleteSteuerminderungenParams;\n query: BookkeepingIncomeTaxDeleteSteuerminderungenQuery;\n body: BookkeepingIncomeTaxDeleteSteuerminderungenBody;\n response: BookkeepingIncomeTaxDeleteSteuerminderungenResponse;\n responseData: BookkeepingIncomeTaxDeleteSteuerminderungenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_get_estimate\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/estimate\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"ESt-Schaetzung berechnen\",\n description: \"Berechnet die vollstaendige Einkommensteuer-Schaetzung fuer ein Steuerjahr. Beruecksichtigt EUeR-Gewinn, Angestellteneinkommen, alle Abzuege und Vorauszahlungen.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxGetEstimateParams;\n query: BookkeepingIncomeTaxGetEstimateQuery;\n body: BookkeepingIncomeTaxGetEstimateBody;\n response: BookkeepingIncomeTaxGetEstimateResponse;\n responseData: BookkeepingIncomeTaxGetEstimateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_get_vorauszahlungen\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/vorauszahlungen\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Vorauszahlungen berechnen\",\n description: \"Berechnet die empfohlenen quartalsweisen Steuervorauszahlungen (ESt, Soli, KiSt) basierend auf der aktuellen Schaetzung.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxGetVorauszahlungenParams;\n query: BookkeepingIncomeTaxGetVorauszahlungenQuery;\n body: BookkeepingIncomeTaxGetVorauszahlungenBody;\n response: BookkeepingIncomeTaxGetVorauszahlungenResponse;\n responseData: BookkeepingIncomeTaxGetVorauszahlungenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_get_summary\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/summary\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"ESt-Zusammenfassung\",\n description: \"Gibt eine kompakte Zusammenfassung der Steuerberechnung zurueck: zvE, ESt, Soli, KiSt, GewSt, Gesamtlast und Nachzahlung/Erstattung.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxGetSummaryParams;\n query: BookkeepingIncomeTaxGetSummaryQuery;\n body: BookkeepingIncomeTaxGetSummaryBody;\n response: BookkeepingIncomeTaxGetSummaryResponse;\n responseData: BookkeepingIncomeTaxGetSummaryResponseData;\n },\n },\n // Contract source: explicit\n \"reconciliation_dashboard\": {\n method: \"GET\",\n path: \"/bookkeeping/reconciliation/dashboard\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reconciliation\"],\n summary: \"Reconciliation Dashboard\",\n description: \"Übersicht aller nicht zugeordneten Zahlungen, Rechnungen, Ausgaben und Einnahmen mit Summen und Anzahlen. SumUp-Terminal-Konten werden automatisch ausgeschlossen. Mit estimateActionCounts=true werden zusätzlich Provider-Payout-Counts geschätzt.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ReconciliationDashboardParams;\n query: ReconciliationDashboardQuery;\n body: ReconciliationDashboardBody;\n response: ReconciliationDashboardResponse;\n responseData: ReconciliationDashboardResponseData;\n },\n },\n // Contract source: explicit\n \"reconciliation_queue\": {\n method: \"GET\",\n path: \"/bookkeeping/reconciliation/queue\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reconciliation\"],\n summary: \"Smart Reconciliation Queue\",\n description: \"Payment-zentrierte Queue: Zeigt nicht zugeordnete Zahlungen mit ihrem besten Match-Vorschlag, priorisiert nach Confidence, Betrag und Alter. Leitet den User durch die Zuordnungsarbeit.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ReconciliationQueueParams;\n query: ReconciliationQueueQuery;\n body: ReconciliationQueueBody;\n response: ReconciliationQueueResponse;\n responseData: ReconciliationQueueResponseData;\n },\n },\n // Contract source: explicit\n \"reconciliation_batch_suggestions\": {\n method: \"POST\",\n path: \"/bookkeeping/reconciliation/batch-suggestions\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reconciliation\"],\n summary: \"Batch Match-Vorschläge\",\n description: \"Gibt Match-Vorschläge für bis zu 20 Zahlungen gleichzeitig zurück. Effizienter als Einzelabfragen.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ReconciliationBatchSuggestionsParams;\n query: ReconciliationBatchSuggestionsQuery;\n body: ReconciliationBatchSuggestionsBody;\n response: ReconciliationBatchSuggestionsResponse;\n responseData: ReconciliationBatchSuggestionsResponseData;\n },\n },\n // Contract source: explicit\n \"reconciliation_auto_match_preview\": {\n method: \"GET\",\n path: \"/bookkeeping/reconciliation/auto-match/preview\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reconciliation\"],\n summary: \"Auto-Match Vorschau\",\n description: \"Zeigt alle High-Confidence Match-Kandidaten (Score >= minScore) als Vorschau. Der User kann diese dann per Confirm-Endpoint bestätigen.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ReconciliationAutoMatchPreviewParams;\n query: ReconciliationAutoMatchPreviewQuery;\n body: ReconciliationAutoMatchPreviewBody;\n response: ReconciliationAutoMatchPreviewResponse;\n responseData: ReconciliationAutoMatchPreviewResponseData;\n },\n },\n // Contract source: explicit\n \"reconciliation_auto_match_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/reconciliation/auto-match/confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reconciliation\"],\n summary: \"Auto-Match Bestätigen\",\n description: \"Führt die ausgewählten Auto-Match-Zuordnungen durch. Nutzt intern die bestehende Allocate-Logik für GoBD-Compliance.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ReconciliationAutoMatchConfirmParams;\n query: ReconciliationAutoMatchConfirmQuery;\n body: ReconciliationAutoMatchConfirmBody;\n response: ReconciliationAutoMatchConfirmResponse;\n responseData: ReconciliationAutoMatchConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"reconciliation_confirm_provider_payout\": {\n method: \"POST\",\n path: \"/bookkeeping/reconciliation/confirm-provider-payout\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reconciliation\"],\n summary: \"Provider-Payout bestätigen\",\n description: \"Verknüpft eine Bank-Einzahlung mit einem Provider-Payout (z.B. SumUp). Falls kein Payout-Record existiert, wird ein aggregierter Payout aus den Terminal-Transaktionen erstellt und per Transfer-Link verknüpft.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ReconciliationConfirmProviderPayoutParams;\n query: ReconciliationConfirmProviderPayoutQuery;\n body: ReconciliationConfirmProviderPayoutBody;\n response: ReconciliationConfirmProviderPayoutResponse;\n responseData: ReconciliationConfirmProviderPayoutResponseData;\n },\n },\n // Contract source: explicit\n \"reconciliation_groups\": {\n method: \"GET\",\n path: \"/bookkeeping/reconciliation/groups\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reconciliation\"],\n summary: \"Split-Payment-Gruppenerkennung\",\n description: \"Erkennt Gruppen von Zahlungen vom selben Counterparty die zusammen einen offenen Betrag (Rechnung/Ausgabe) ergeben könnten. Hilfreich für Ratenzahlungen und Split-Payments.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ReconciliationGroupsParams;\n query: ReconciliationGroupsQuery;\n body: ReconciliationGroupsBody;\n response: ReconciliationGroupsResponse;\n responseData: ReconciliationGroupsResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_search\": {\n method: \"GET\",\n path: \"/bookkeeping/capital-movements\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Kapitalbewegungen suchen\",\n description: \"Paginierte Suche über Privatentnahmen und Privateinlagen mit Filteroptionen.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsSearchParams;\n query: BookkeepingCapitalMovementsSearchQuery;\n body: BookkeepingCapitalMovementsSearchBody;\n response: BookkeepingCapitalMovementsSearchResponse;\n responseData: BookkeepingCapitalMovementsSearchResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_kapitalkonto\": {\n method: \"GET\",\n path: \"/bookkeeping/capital-movements/kapitalkonto\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Kapitalkonto abrufen\",\n description: \"Aggregierte Entnahmen und Einlagen für ein Steuerjahr (Anlage EÜR Zeile 122-125).\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsKapitalkontoParams;\n query: BookkeepingCapitalMovementsKapitalkontoQuery;\n body: BookkeepingCapitalMovementsKapitalkontoBody;\n response: BookkeepingCapitalMovementsKapitalkontoResponse;\n responseData: BookkeepingCapitalMovementsKapitalkontoResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_get_by_id\": {\n method: \"GET\",\n path: \"/bookkeeping/capital-movements/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Kapitalbewegung nach ID\",\n description: \"Lädt eine einzelne Privatentnahme oder Privateinlage.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsGetByIdParams;\n query: BookkeepingCapitalMovementsGetByIdQuery;\n body: BookkeepingCapitalMovementsGetByIdBody;\n response: BookkeepingCapitalMovementsGetByIdResponse;\n responseData: BookkeepingCapitalMovementsGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_create\": {\n method: \"POST\",\n path: \"/bookkeeping/capital-movements\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Kapitalbewegung erstellen\",\n description: \"Erstellt eine neue Privatentnahme oder Privateinlage.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsCreateParams;\n query: BookkeepingCapitalMovementsCreateQuery;\n body: BookkeepingCapitalMovementsCreateBody;\n response: BookkeepingCapitalMovementsCreateResponse;\n responseData: BookkeepingCapitalMovementsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_update\": {\n method: \"PATCH\",\n path: \"/bookkeeping/capital-movements/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Kapitalbewegung aktualisieren\",\n description: \"Aktualisiert eine bestehende Kapitalbewegung. Bestätigte Einträge in gesperrten Perioden sind blockiert.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsUpdateParams;\n query: BookkeepingCapitalMovementsUpdateQuery;\n body: BookkeepingCapitalMovementsUpdateBody;\n response: BookkeepingCapitalMovementsUpdateResponse;\n responseData: BookkeepingCapitalMovementsUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/capital-movements/:id/confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Kapitalbewegung bestätigen\",\n description: \"Bestätigt die Datenqualität einer Kapitalbewegung.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsConfirmParams;\n query: BookkeepingCapitalMovementsConfirmQuery;\n body: BookkeepingCapitalMovementsConfirmBody;\n response: BookkeepingCapitalMovementsConfirmResponse;\n responseData: BookkeepingCapitalMovementsConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_cash_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/capital-movements/:id/cash-confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Barzahlung bestätigen\",\n description: \"Markiert eine Kapitalbewegung als bar/direkt abgewickelt. Setzt eurEffectiveDate für das Kapitalkonto.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsCashConfirmParams;\n query: BookkeepingCapitalMovementsCashConfirmQuery;\n body: BookkeepingCapitalMovementsCashConfirmBody;\n response: BookkeepingCapitalMovementsCashConfirmResponse;\n responseData: BookkeepingCapitalMovementsCashConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_revoke_cash_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/capital-movements/:id/revoke-cash-confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Cash-Confirm widerrufen\",\n description: \"Widerruft die Barzahlungs-Bestätigung.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsRevokeCashConfirmParams;\n query: BookkeepingCapitalMovementsRevokeCashConfirmQuery;\n body: BookkeepingCapitalMovementsRevokeCashConfirmBody;\n response: BookkeepingCapitalMovementsRevokeCashConfirmResponse;\n responseData: BookkeepingCapitalMovementsRevokeCashConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_reverse\": {\n method: \"POST\",\n path: \"/bookkeeping/capital-movements/:id/reverse\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Kapitalbewegung stornieren (GoBD)\",\n description: \"Erstellt eine GoBD-konforme Gegenbuchung. Das Original wird als storniert markiert.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsReverseParams;\n query: BookkeepingCapitalMovementsReverseQuery;\n body: BookkeepingCapitalMovementsReverseBody;\n response: BookkeepingCapitalMovementsReverseResponse;\n responseData: BookkeepingCapitalMovementsReverseResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_delete\": {\n method: \"DELETE\",\n path: \"/bookkeeping/capital-movements/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Kapitalbewegung löschen\",\n description: \"Soft-Delete einer Kapitalbewegung (GoBD-konform).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsDeleteParams;\n query: BookkeepingCapitalMovementsDeleteQuery;\n body: BookkeepingCapitalMovementsDeleteBody;\n response: BookkeepingCapitalMovementsDeleteResponse;\n responseData: BookkeepingCapitalMovementsDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_iap_payouts_import\": {\n method: \"POST\",\n path: \"/bookkeeping/iap-payouts/import\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"iap-payouts\"],\n summary: \"Apple/Google IAP-Auszahlung importieren\",\n description: \"Importiert eine monatliche Apple- oder Google-IAP-Auszahlung. Idempotent über externalRef = rc_payout_<period>_<platform>. Default-Quelle ist die RevenueCat-API (env: REVENUECAT_SECRET_API_KEY, REVENUECAT_PROJECT_ID); alternativ kann der Caller die Werte im Body unter `period` direkt mitliefern (manueller CSV-Import-Fallback). Bucht eine bookkeepingRevenue mit vatTreatment=REVERSE_CHARGE_13B in der Kategorie saas_revenue_apple_iap bzw. saas_revenue_google_iap.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIapPayoutsImportParams;\n query: BookkeepingIapPayoutsImportQuery;\n body: BookkeepingIapPayoutsImportBody;\n response: BookkeepingIapPayoutsImportResponse;\n responseData: BookkeepingIapPayoutsImportResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_iap_payouts_list\": {\n method: \"GET\",\n path: \"/bookkeeping/iap-payouts\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"iap-payouts\"],\n summary: \"IAP-Auszahlungs-Imports auflisten\",\n description: \"Liste aller importierten Apple/Google-Auszahlungs-Belege für die gewählte Firma. Optional filterbar nach Jahr und Plattform.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIapPayoutsListParams;\n query: BookkeepingIapPayoutsListQuery;\n body: BookkeepingIapPayoutsListBody;\n response: BookkeepingIapPayoutsListResponse;\n responseData: BookkeepingIapPayoutsListResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type CurrencyRatesGetParams = {\n fromCurrency: string;\n toCurrency: string;\n};\nexport type CurrencyRatesGetQuery = {\n\n};\nexport type CurrencyRatesGetBody = undefined;\nexport type CurrencyRatesGetResponseData = {\n from: string;\n to: string;\n rate: number;\n provider: string;\n asOfDate: string;\n source: \"db\" | \"provider\";\n variance?: {\n spreadPct: number;\n min: number;\n max: number;\n providerRates: Array<{\n provider: string;\n rate: number;\n}>;\n};\n};\nexport type CurrencyRatesGetResponse = import(\"../types\").ApiEnvelope<CurrencyRatesGetResponseData>;\n\nexport const apiRoutes_currency_rates = {\n // Contract source: explicit\n \"currency_rates_get\": {\n method: \"GET\",\n path: \"/currency-rates/:fromCurrency/:toCurrency\",\n auth: {\"type\":\"x_api_key_http\"},\n meta: {\n tags: [\"currency-rates\"],\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: CurrencyRatesGetParams;\n query: CurrencyRatesGetQuery;\n body: CurrencyRatesGetBody;\n response: CurrencyRatesGetResponse;\n responseData: CurrencyRatesGetResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { CompanyEmployee, CompanyEmployeeAssignment, CustomerCompany, EmployeeSearchItem, FullCompany, PaginatedResult } from \"../../frontend-types\";\n\nexport type CustomerCompaniesEmployeesCreateParams = undefined;\nexport type CustomerCompaniesEmployeesCreateQuery = undefined;\nexport type CustomerCompaniesEmployeesCreateBody = {\n firstName?: string | null;\n lastName?: string | null;\n birthDate?: string | null;\n gender?: \"male\" | \"female\" | \"other\" | null;\n street?: string | null;\n streetNr?: string | null;\n zip?: string | null;\n city?: string | null;\n country?: string | null;\n email: string;\n phone?: string | null;\n externalUserId?: string | null;\n companyId?: number;\n companyRole?: string;\n};\nexport type CustomerCompaniesEmployeesCreateResponseData = CompanyEmployee;\nexport type CustomerCompaniesEmployeesCreateResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesEmployeesCreateResponseData>;\n\nexport type CustomerCompaniesEmployeesDeleteParams = {\n employeeId: number;\n};\nexport type CustomerCompaniesEmployeesDeleteQuery = undefined;\nexport type CustomerCompaniesEmployeesDeleteBody = undefined;\nexport type CustomerCompaniesEmployeesDeleteResponseData = null;\nexport type CustomerCompaniesEmployeesDeleteResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesEmployeesDeleteResponseData>;\n\nexport type CustomerCompaniesEmployeesUpdateParams = {\n employeeId: number;\n};\nexport type CustomerCompaniesEmployeesUpdateQuery = undefined;\nexport type CustomerCompaniesEmployeesUpdateBody = {\n firstName?: string | null;\n lastName?: string | null;\n birthDate?: string | null;\n gender?: \"male\" | \"female\" | \"other\" | null;\n street?: string | null;\n streetNr?: string | null;\n zip?: string | null;\n city?: string | null;\n country?: string | null;\n email?: string;\n phone?: string | null;\n externalUserId?: string | null;\n};\nexport type CustomerCompaniesEmployeesUpdateResponseData = CompanyEmployee;\nexport type CustomerCompaniesEmployeesUpdateResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesEmployeesUpdateResponseData>;\n\nexport type CustomerCompaniesEmployeesGetByIdParams = {\n employeeId: number;\n};\nexport type CustomerCompaniesEmployeesGetByIdQuery = undefined;\nexport type CustomerCompaniesEmployeesGetByIdBody = undefined;\nexport type CustomerCompaniesEmployeesGetByIdResponseData = CompanyEmployee;\nexport type CustomerCompaniesEmployeesGetByIdResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesEmployeesGetByIdResponseData>;\n\nexport type CustomerCompaniesEmployeesSearchParams = undefined;\nexport type CustomerCompaniesEmployeesSearchQuery = {\n q?: string;\n search?: string;\n page?: number;\n pageSize?: number;\n activeEmployeesOnly?: boolean;\n companyId?: number;\n};\nexport type CustomerCompaniesEmployeesSearchBody = undefined;\nexport type CustomerCompaniesEmployeesSearchResponseData = PaginatedResult<EmployeeSearchItem>;\nexport type CustomerCompaniesEmployeesSearchResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesEmployeesSearchResponseData>;\n\nexport type CustomerCompaniesEmployeeAssignmentsCreateParams = undefined;\nexport type CustomerCompaniesEmployeeAssignmentsCreateQuery = undefined;\nexport type CustomerCompaniesEmployeeAssignmentsCreateBody = {\n companyEmployeeId: number;\n companyId: number;\n companyRole?: string | null;\n status?: \"active\" | \"inactive\" | \"terminated\";\n validFrom?: string;\n validTo?: string | null;\n};\nexport type CustomerCompaniesEmployeeAssignmentsCreateResponseData = CompanyEmployeeAssignment;\nexport type CustomerCompaniesEmployeeAssignmentsCreateResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesEmployeeAssignmentsCreateResponseData>;\n\nexport type CustomerCompaniesEmployeeAssignmentsUpdateParams = {\n assignmentId: number;\n};\nexport type CustomerCompaniesEmployeeAssignmentsUpdateQuery = undefined;\nexport type CustomerCompaniesEmployeeAssignmentsUpdateBody = {\n forceUpdate?: boolean;\n companyId?: number;\n companyRole?: string | null;\n status?: \"active\" | \"inactive\" | \"terminated\";\n validTo?: string | null;\n};\nexport type CustomerCompaniesEmployeeAssignmentsUpdateResponseData = CompanyEmployeeAssignment;\nexport type CustomerCompaniesEmployeeAssignmentsUpdateResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesEmployeeAssignmentsUpdateResponseData>;\n\nexport type CustomerCompaniesEmployeeAssignmentsByCompanyIdParams = {\n companyId: number;\n};\nexport type CustomerCompaniesEmployeeAssignmentsByCompanyIdQuery = {\n activeEmployeesOnly?: boolean;\n};\nexport type CustomerCompaniesEmployeeAssignmentsByCompanyIdBody = undefined;\nexport type CustomerCompaniesEmployeeAssignmentsByCompanyIdResponseData = Array<CompanyEmployeeAssignment>;\nexport type CustomerCompaniesEmployeeAssignmentsByCompanyIdResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesEmployeeAssignmentsByCompanyIdResponseData>;\n\nexport type CustomerCompaniesEmployeeAssignmentsByEmployeeIdParams = {\n employeeId: number;\n};\nexport type CustomerCompaniesEmployeeAssignmentsByEmployeeIdQuery = {\n activeEmployeesOnly?: boolean;\n};\nexport type CustomerCompaniesEmployeeAssignmentsByEmployeeIdBody = undefined;\nexport type CustomerCompaniesEmployeeAssignmentsByEmployeeIdResponseData = Array<CompanyEmployeeAssignment>;\nexport type CustomerCompaniesEmployeeAssignmentsByEmployeeIdResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesEmployeeAssignmentsByEmployeeIdResponseData>;\n\nexport type CustomerCompaniesCreateParams = undefined;\nexport type CustomerCompaniesCreateQuery = undefined;\nexport type CustomerCompaniesCreateBody = {\n isFreelancer?: boolean;\n name: string;\n street?: string | null;\n streetNr?: string | null;\n zip?: string | null;\n city?: string | null;\n country?: string | null;\n email: string;\n phone?: string | null;\n ustId?: string | null;\n costCenterId?: number | null;\n defaultHourlyRate?: string | null;\n};\nexport type CustomerCompaniesCreateResponseData = CustomerCompany;\nexport type CustomerCompaniesCreateResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesCreateResponseData>;\n\nexport type CustomerCompaniesDeleteParams = {\n companyId: number;\n};\nexport type CustomerCompaniesDeleteQuery = undefined;\nexport type CustomerCompaniesDeleteBody = undefined;\nexport type CustomerCompaniesDeleteResponseData = null;\nexport type CustomerCompaniesDeleteResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesDeleteResponseData>;\n\nexport type CustomerCompaniesUpdateParams = {\n companyId: number;\n};\nexport type CustomerCompaniesUpdateQuery = undefined;\nexport type CustomerCompaniesUpdateBody = {\n isFreelancer?: boolean;\n name?: string;\n street?: string | null;\n streetNr?: string | null;\n zip?: string | null;\n city?: string | null;\n country?: string | null;\n email?: string;\n phone?: string | null;\n ustId?: string | null;\n costCenterId?: number | null;\n defaultHourlyRate?: string | null;\n};\nexport type CustomerCompaniesUpdateResponseData = CustomerCompany;\nexport type CustomerCompaniesUpdateResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesUpdateResponseData>;\n\nexport type CustomerCompaniesGetByIdParams = {\n companyId: number;\n};\nexport type CustomerCompaniesGetByIdQuery = undefined;\nexport type CustomerCompaniesGetByIdBody = undefined;\nexport type CustomerCompaniesGetByIdResponseData = CustomerCompany;\nexport type CustomerCompaniesGetByIdResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesGetByIdResponseData>;\n\nexport type CustomerCompaniesGetFullByIdParams = {\n companyId: number;\n};\nexport type CustomerCompaniesGetFullByIdQuery = {\n activeEmployeesOnly?: boolean;\n};\nexport type CustomerCompaniesGetFullByIdBody = undefined;\nexport type CustomerCompaniesGetFullByIdResponseData = FullCompany;\nexport type CustomerCompaniesGetFullByIdResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesGetFullByIdResponseData>;\n\nexport type CustomerCompaniesSearchParams = undefined;\nexport type CustomerCompaniesSearchQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n activeEmployeesOnly?: boolean;\n};\nexport type CustomerCompaniesSearchBody = undefined;\nexport type CustomerCompaniesSearchResponseData = PaginatedResult<FullCompany>;\nexport type CustomerCompaniesSearchResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesSearchResponseData>;\n\nexport const apiRoutes_customer_companies = {\n // Contract source: explicit\n \"customer_companies_employees_create\": {\n method: \"POST\",\n path: \"/customer-companies/employees/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\",\"employees\"],\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: CustomerCompaniesEmployeesCreateParams;\n query: CustomerCompaniesEmployeesCreateQuery;\n body: CustomerCompaniesEmployeesCreateBody;\n response: CustomerCompaniesEmployeesCreateResponse;\n responseData: CustomerCompaniesEmployeesCreateResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_employees_delete\": {\n method: \"DELETE\",\n path: \"/customer-companies/employees/delete/:employeeId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\",\"employees\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesEmployeesDeleteParams;\n query: CustomerCompaniesEmployeesDeleteQuery;\n body: CustomerCompaniesEmployeesDeleteBody;\n response: CustomerCompaniesEmployeesDeleteResponse;\n responseData: CustomerCompaniesEmployeesDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_employees_update\": {\n method: \"PUT\",\n path: \"/customer-companies/employees/update/:employeeId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\",\"employees\"],\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: CustomerCompaniesEmployeesUpdateParams;\n query: CustomerCompaniesEmployeesUpdateQuery;\n body: CustomerCompaniesEmployeesUpdateBody;\n response: CustomerCompaniesEmployeesUpdateResponse;\n responseData: CustomerCompaniesEmployeesUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_employees_get_by_id\": {\n method: \"GET\",\n path: \"/customer-companies/employees/byId/:employeeId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\",\"employees\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesEmployeesGetByIdParams;\n query: CustomerCompaniesEmployeesGetByIdQuery;\n body: CustomerCompaniesEmployeesGetByIdBody;\n response: CustomerCompaniesEmployeesGetByIdResponse;\n responseData: CustomerCompaniesEmployeesGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_employees_search\": {\n method: \"GET\",\n path: \"/customer-companies/employees/search\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\",\"employees\"],\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesEmployeesSearchParams;\n query: CustomerCompaniesEmployeesSearchQuery;\n body: CustomerCompaniesEmployeesSearchBody;\n response: CustomerCompaniesEmployeesSearchResponse;\n responseData: CustomerCompaniesEmployeesSearchResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_employee_assignments_create\": {\n method: \"POST\",\n path: \"/customer-companies/employee-assignments/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\",\"employee-assignments\"],\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: CustomerCompaniesEmployeeAssignmentsCreateParams;\n query: CustomerCompaniesEmployeeAssignmentsCreateQuery;\n body: CustomerCompaniesEmployeeAssignmentsCreateBody;\n response: CustomerCompaniesEmployeeAssignmentsCreateResponse;\n responseData: CustomerCompaniesEmployeeAssignmentsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_employee_assignments_update\": {\n method: \"PUT\",\n path: \"/customer-companies/employee-assignments/update/:assignmentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\",\"employee-assignments\"],\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: CustomerCompaniesEmployeeAssignmentsUpdateParams;\n query: CustomerCompaniesEmployeeAssignmentsUpdateQuery;\n body: CustomerCompaniesEmployeeAssignmentsUpdateBody;\n response: CustomerCompaniesEmployeeAssignmentsUpdateResponse;\n responseData: CustomerCompaniesEmployeeAssignmentsUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_employee_assignments_by_company_id\": {\n method: \"GET\",\n path: \"/customer-companies/employee-assignments/byCompanyId/:companyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\",\"employee-assignments\"],\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesEmployeeAssignmentsByCompanyIdParams;\n query: CustomerCompaniesEmployeeAssignmentsByCompanyIdQuery;\n body: CustomerCompaniesEmployeeAssignmentsByCompanyIdBody;\n response: CustomerCompaniesEmployeeAssignmentsByCompanyIdResponse;\n responseData: CustomerCompaniesEmployeeAssignmentsByCompanyIdResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_employee_assignments_by_employee_id\": {\n method: \"GET\",\n path: \"/customer-companies/employee-assignments/byEmployeeId/:employeeId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\",\"employee-assignments\"],\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesEmployeeAssignmentsByEmployeeIdParams;\n query: CustomerCompaniesEmployeeAssignmentsByEmployeeIdQuery;\n body: CustomerCompaniesEmployeeAssignmentsByEmployeeIdBody;\n response: CustomerCompaniesEmployeeAssignmentsByEmployeeIdResponse;\n responseData: CustomerCompaniesEmployeeAssignmentsByEmployeeIdResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_create\": {\n method: \"POST\",\n path: \"/customer-companies/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\"],\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: CustomerCompaniesCreateParams;\n query: CustomerCompaniesCreateQuery;\n body: CustomerCompaniesCreateBody;\n response: CustomerCompaniesCreateResponse;\n responseData: CustomerCompaniesCreateResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_delete\": {\n method: \"DELETE\",\n path: \"/customer-companies/delete/:companyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesDeleteParams;\n query: CustomerCompaniesDeleteQuery;\n body: CustomerCompaniesDeleteBody;\n response: CustomerCompaniesDeleteResponse;\n responseData: CustomerCompaniesDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_update\": {\n method: \"PUT\",\n path: \"/customer-companies/update/:companyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\"],\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: CustomerCompaniesUpdateParams;\n query: CustomerCompaniesUpdateQuery;\n body: CustomerCompaniesUpdateBody;\n response: CustomerCompaniesUpdateResponse;\n responseData: CustomerCompaniesUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_get_by_id\": {\n method: \"GET\",\n path: \"/customer-companies/byId/:companyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesGetByIdParams;\n query: CustomerCompaniesGetByIdQuery;\n body: CustomerCompaniesGetByIdBody;\n response: CustomerCompaniesGetByIdResponse;\n responseData: CustomerCompaniesGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_get_full_by_id\": {\n method: \"GET\",\n path: \"/customer-companies/byId/:companyId/full\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\"],\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesGetFullByIdParams;\n query: CustomerCompaniesGetFullByIdQuery;\n body: CustomerCompaniesGetFullByIdBody;\n response: CustomerCompaniesGetFullByIdResponse;\n responseData: CustomerCompaniesGetFullByIdResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_search\": {\n method: \"GET\",\n path: \"/customer-companies/search\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\"],\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesSearchParams;\n query: CustomerCompaniesSearchQuery;\n body: CustomerCompaniesSearchBody;\n response: CustomerCompaniesSearchResponse;\n responseData: CustomerCompaniesSearchResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { CustomerCompany, PaginatedResult } from \"../../frontend-types\";\n\nexport type CustomerCompaniesSearchExternalParams = undefined;\nexport type CustomerCompaniesSearchExternalQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n activeEmployeesOnly?: boolean;\n};\nexport type CustomerCompaniesSearchExternalBody = undefined;\nexport type CustomerCompaniesSearchExternalResponseData = PaginatedResult<CustomerCompany>;\nexport type CustomerCompaniesSearchExternalResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesSearchExternalResponseData>;\n\nexport type CustomerCompaniesGetByIdExternalParams = {\n companyId: number;\n};\nexport type CustomerCompaniesGetByIdExternalQuery = undefined;\nexport type CustomerCompaniesGetByIdExternalBody = undefined;\nexport type CustomerCompaniesGetByIdExternalResponseData = CustomerCompany;\nexport type CustomerCompaniesGetByIdExternalResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesGetByIdExternalResponseData>;\n\nexport type CustomerCompaniesCreateExternalParams = undefined;\nexport type CustomerCompaniesCreateExternalQuery = undefined;\nexport type CustomerCompaniesCreateExternalBody = {\n isFreelancer?: boolean;\n name: string;\n street?: string | null;\n streetNr?: string | null;\n zip?: string | null;\n city?: string | null;\n country?: string | null;\n email: string;\n phone?: string | null;\n ustId?: string | null;\n costCenterId?: number | null;\n defaultHourlyRate?: string | null;\n};\nexport type CustomerCompaniesCreateExternalResponseData = CustomerCompany;\nexport type CustomerCompaniesCreateExternalResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesCreateExternalResponseData>;\n\nexport type CustomerCompaniesUpdateExternalParams = {\n companyId: number;\n};\nexport type CustomerCompaniesUpdateExternalQuery = undefined;\nexport type CustomerCompaniesUpdateExternalBody = {\n isFreelancer?: boolean;\n name?: string;\n street?: string | null;\n streetNr?: string | null;\n zip?: string | null;\n city?: string | null;\n country?: string | null;\n email?: string;\n phone?: string | null;\n ustId?: string | null;\n costCenterId?: number | null;\n defaultHourlyRate?: string | null;\n};\nexport type CustomerCompaniesUpdateExternalResponseData = CustomerCompany;\nexport type CustomerCompaniesUpdateExternalResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesUpdateExternalResponseData>;\n\nexport type CustomerCompaniesDeleteExternalParams = {\n companyId: number;\n};\nexport type CustomerCompaniesDeleteExternalQuery = undefined;\nexport type CustomerCompaniesDeleteExternalBody = undefined;\nexport type CustomerCompaniesDeleteExternalResponseData = null;\nexport type CustomerCompaniesDeleteExternalResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesDeleteExternalResponseData>;\n\nexport const apiRoutes_customer_companies_external = {\n // Contract source: explicit\n \"customer_companies_search_external\": {\n method: \"GET\",\n path: \"/customer-companies/external\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"companies:read\"]},\n meta: {\n tags: [\"customer-companies-external\"],\n summary: \"Search customer companies (external API)\",\n description: \"Paginated search over customer companies. Filters by name, email, phone, address fields. Cost center visibility is applied per token permissions.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesSearchExternalParams;\n query: CustomerCompaniesSearchExternalQuery;\n body: CustomerCompaniesSearchExternalBody;\n response: CustomerCompaniesSearchExternalResponse;\n responseData: CustomerCompaniesSearchExternalResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_get_by_id_external\": {\n method: \"GET\",\n path: \"/customer-companies/external/:companyId\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"companies:read\"]},\n meta: {\n tags: [\"customer-companies-external\"],\n summary: \"Get customer company by ID (external API)\",\n description: \"Returns a single customer company by ID. Company must belong to the token's managing company.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesGetByIdExternalParams;\n query: CustomerCompaniesGetByIdExternalQuery;\n body: CustomerCompaniesGetByIdExternalBody;\n response: CustomerCompaniesGetByIdExternalResponse;\n responseData: CustomerCompaniesGetByIdExternalResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_create_external\": {\n method: \"POST\",\n path: \"/customer-companies/external\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"companies:write\"]},\n meta: {\n tags: [\"customer-companies-external\"],\n summary: \"Create customer company (external API)\",\n description: \"Creates a new customer company. managingCompanyId is derived from the auth token. Required fields: name, email.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: CustomerCompaniesCreateExternalParams;\n query: CustomerCompaniesCreateExternalQuery;\n body: CustomerCompaniesCreateExternalBody;\n response: CustomerCompaniesCreateExternalResponse;\n responseData: CustomerCompaniesCreateExternalResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_update_external\": {\n method: \"PUT\",\n path: \"/customer-companies/external/:companyId\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"companies:write\"]},\n meta: {\n tags: [\"customer-companies-external\"],\n summary: \"Update customer company (external API)\",\n description: \"Updates an existing customer company. All fields are optional (partial update). Company must belong to the token's managing company.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: CustomerCompaniesUpdateExternalParams;\n query: CustomerCompaniesUpdateExternalQuery;\n body: CustomerCompaniesUpdateExternalBody;\n response: CustomerCompaniesUpdateExternalResponse;\n responseData: CustomerCompaniesUpdateExternalResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_delete_external\": {\n method: \"DELETE\",\n path: \"/customer-companies/external/:companyId\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"admin\",\"scopes\":[\"companies:delete\"]},\n meta: {\n tags: [\"customer-companies-external\"],\n summary: \"Delete customer company (external API)\",\n description: \"Deletes a customer company. Company must belong to the token's managing company. Warning: this also removes employee assignments.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesDeleteExternalParams;\n query: CustomerCompaniesDeleteExternalQuery;\n body: CustomerCompaniesDeleteExternalBody;\n response: CustomerCompaniesDeleteExternalResponse;\n responseData: CustomerCompaniesDeleteExternalResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { Document, DocumentAssignment, FullDocument } from \"../../frontend-types\";\n\nexport type DocumentsGetByIdParams = {\n documentId: number;\n};\nexport type DocumentsGetByIdQuery = undefined;\nexport type DocumentsGetByIdBody = undefined;\nexport type DocumentsGetByIdResponseData = FullDocument;\nexport type DocumentsGetByIdResponse = import(\"../types\").ApiEnvelope<DocumentsGetByIdResponseData>;\n\nexport type DocumentsGetFullByIdParams = {\n documentId: number;\n};\nexport type DocumentsGetFullByIdQuery = undefined;\nexport type DocumentsGetFullByIdBody = undefined;\nexport type DocumentsGetFullByIdResponseData = FullDocument;\nexport type DocumentsGetFullByIdResponse = import(\"../types\").ApiEnvelope<DocumentsGetFullByIdResponseData>;\n\nexport type DocumentsSearchParams = undefined;\nexport type DocumentsSearchQuery = {\n q?: string;\n ownerType?: \"company\" | \"user\" | \"invoice\" | \"internal\" | \"revenue\" | \"expense\" | \"asset\" | \"capital_movement\";\n ownerId?: number;\n page?: number;\n pageSize?: number;\n};\nexport type DocumentsSearchBody = undefined;\nexport type DocumentsSearchResponseData = { items: Array<Document>; total: number; page: number; pageSize: number };\nexport type DocumentsSearchResponse = import(\"../types\").ApiEnvelope<DocumentsSearchResponseData>;\n\nexport type DocumentsDownloadUrlParams = {\n documentId: number;\n};\nexport type DocumentsDownloadUrlQuery = {\n expiresInSec?: number;\n};\nexport type DocumentsDownloadUrlBody = undefined;\nexport type DocumentsDownloadUrlResponseData = string;\nexport type DocumentsDownloadUrlResponse = import(\"../types\").ApiEnvelope<DocumentsDownloadUrlResponseData>;\n\nexport type DocumentsStreamParams = {\n documentId: number;\n};\nexport type DocumentsStreamQuery = {\n expiresInSec?: number;\n};\nexport type DocumentsStreamBody = undefined;\nexport type DocumentsStreamResponseData = Blob;\nexport type DocumentsStreamResponse = Blob;\n\nexport type DocumentsCreateParams = undefined;\nexport type DocumentsCreateQuery = undefined;\nexport type DocumentsCreateBody = {\n ownerType?: \"company\" | \"user\" | \"invoice\" | \"internal\" | \"revenue\" | \"expense\" | \"asset\" | \"capital_movement\";\n ownerId?: number;\n};\nexport type DocumentsCreateResponseData = Document;\nexport type DocumentsCreateResponse = import(\"../types\").ApiEnvelope<DocumentsCreateResponseData>;\n\nexport type DocumentsAssignParams = undefined;\nexport type DocumentsAssignQuery = undefined;\nexport type DocumentsAssignBody = {\n documentId: number;\n ownerType: \"company\" | \"user\" | \"invoice\" | \"internal\" | \"revenue\" | \"expense\" | \"asset\" | \"capital_movement\";\n ownerId?: number;\n};\nexport type DocumentsAssignResponseData = DocumentAssignment;\nexport type DocumentsAssignResponse = import(\"../types\").ApiEnvelope<DocumentsAssignResponseData>;\n\nexport type DocumentsDeleteAssignmentParams = {\n assignmentId: number;\n};\nexport type DocumentsDeleteAssignmentQuery = undefined;\nexport type DocumentsDeleteAssignmentBody = undefined;\nexport type DocumentsDeleteAssignmentResponseData = null;\nexport type DocumentsDeleteAssignmentResponse = import(\"../types\").ApiEnvelope<DocumentsDeleteAssignmentResponseData>;\n\nexport type DocumentsDeleteParams = {\n documentId: number;\n};\nexport type DocumentsDeleteQuery = {\n force?: boolean;\n};\nexport type DocumentsDeleteBody = undefined;\nexport type DocumentsDeleteResponseData = null;\nexport type DocumentsDeleteResponse = import(\"../types\").ApiEnvelope<DocumentsDeleteResponseData>;\n\nexport type DocumentsSetLockParams = {\n documentId: number;\n};\nexport type DocumentsSetLockQuery = undefined;\nexport type DocumentsSetLockBody = {\n locked: boolean;\n};\nexport type DocumentsSetLockResponseData = Document;\nexport type DocumentsSetLockResponse = import(\"../types\").ApiEnvelope<DocumentsSetLockResponseData>;\n\nexport const apiRoutes_documents = {\n // Contract source: explicit\n \"documents_get_by_id\": {\n method: \"GET\",\n path: \"/documents/admin/byId/:documentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_access\"},\n meta: {\n tags: [\"documents\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: DocumentsGetByIdParams;\n query: DocumentsGetByIdQuery;\n body: DocumentsGetByIdBody;\n response: DocumentsGetByIdResponse;\n responseData: DocumentsGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"documents_get_full_by_id\": {\n method: \"GET\",\n path: \"/documents/admin/byId/:documentId/full\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_access\"},\n meta: {\n tags: [\"documents\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: DocumentsGetFullByIdParams;\n query: DocumentsGetFullByIdQuery;\n body: DocumentsGetFullByIdBody;\n response: DocumentsGetFullByIdResponse;\n responseData: DocumentsGetFullByIdResponseData;\n },\n },\n // Contract source: explicit\n \"documents_search\": {\n method: \"GET\",\n path: \"/documents/admin/search\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_access\"},\n meta: {\n tags: [\"documents\"],\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: DocumentsSearchParams;\n query: DocumentsSearchQuery;\n body: DocumentsSearchBody;\n response: DocumentsSearchResponse;\n responseData: DocumentsSearchResponseData;\n },\n },\n // Contract source: explicit\n \"documents_download_url\": {\n method: \"GET\",\n path: \"/documents/admin/byId/:documentId/download-url\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_access\"},\n meta: {\n tags: [\"documents\"],\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: DocumentsDownloadUrlParams;\n query: DocumentsDownloadUrlQuery;\n body: DocumentsDownloadUrlBody;\n response: DocumentsDownloadUrlResponse;\n responseData: DocumentsDownloadUrlResponseData;\n },\n },\n // Contract source: explicit\n \"documents_stream\": {\n method: \"GET\",\n path: \"/documents/admin/stream/:documentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_access\"},\n meta: {\n tags: [\"documents\"],\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: DocumentsStreamParams;\n query: DocumentsStreamQuery;\n body: DocumentsStreamBody;\n response: DocumentsStreamResponse;\n responseData: DocumentsStreamResponseData;\n },\n },\n // Contract source: explicit\n \"documents_create\": {\n method: \"POST\",\n path: \"/documents/admin/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_manage\"},\n meta: {\n tags: [\"documents\"],\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: DocumentsCreateParams;\n query: DocumentsCreateQuery;\n body: DocumentsCreateBody;\n response: DocumentsCreateResponse;\n responseData: DocumentsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"documents_assign\": {\n method: \"POST\",\n path: \"/documents/admin/assign\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_manage\"},\n meta: {\n tags: [\"documents\"],\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: DocumentsAssignParams;\n query: DocumentsAssignQuery;\n body: DocumentsAssignBody;\n response: DocumentsAssignResponse;\n responseData: DocumentsAssignResponseData;\n },\n },\n // Contract source: explicit\n \"documents_delete_assignment\": {\n method: \"DELETE\",\n path: \"/documents/admin/assignments/:assignmentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_manage\"},\n meta: {\n tags: [\"documents\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: DocumentsDeleteAssignmentParams;\n query: DocumentsDeleteAssignmentQuery;\n body: DocumentsDeleteAssignmentBody;\n response: DocumentsDeleteAssignmentResponse;\n responseData: DocumentsDeleteAssignmentResponseData;\n },\n },\n // Contract source: explicit\n \"documents_delete\": {\n method: \"DELETE\",\n path: \"/documents/admin/delete/:documentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_manage\"},\n meta: {\n tags: [\"documents\"],\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: DocumentsDeleteParams;\n query: DocumentsDeleteQuery;\n body: DocumentsDeleteBody;\n response: DocumentsDeleteResponse;\n responseData: DocumentsDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"documents_set_lock\": {\n method: \"PUT\",\n path: \"/documents/admin/lock/:documentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_admin\"},\n meta: {\n tags: [\"documents\"],\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: DocumentsSetLockParams;\n query: DocumentsSetLockQuery;\n body: DocumentsSetLockBody;\n response: DocumentsSetLockResponse;\n responseData: DocumentsSetLockResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type DunningSuggestionsExternalParams = undefined;\nexport type DunningSuggestionsExternalQuery = {\n asOf?: string;\n limit?: number;\n};\nexport type DunningSuggestionsExternalBody = undefined;\nexport type DunningSuggestionsExternalResponseData = {\n asOf: string;\n items: Array<{\n invoiceId: number;\n invoiceNumber: string;\n status: string;\n dueDate: string;\n daysOverdue: number;\n currency: string;\n invoiceTotal: string;\n openAmount: string;\n suggestedLevel: \"level0\" | \"level1\" | \"level2\" | \"level3\" | null;\n latestNoticeLevel: \"level0\" | \"level1\" | \"level2\" | \"level3\" | null;\n latestNoticeAt: string | null;\n}>;\n};\nexport type DunningSuggestionsExternalResponse = import(\"../types\").ApiEnvelope<DunningSuggestionsExternalResponseData>;\n\nexport type DunningPreviewExternalParams = {\n invoiceId: number;\n};\nexport type DunningPreviewExternalQuery = undefined;\nexport type DunningPreviewExternalBody = {\n asOf?: string;\n level?: \"level0\" | \"level1\" | \"level2\" | \"level3\";\n};\nexport type DunningPreviewExternalResponseData = {\n invoiceId: number;\n invoiceNumber: string;\n dueDate: string;\n asOf: string;\n daysOverdue: number;\n currency: string;\n invoiceTotal: string;\n openAmount: string;\n level: \"level0\" | \"level1\" | \"level2\" | \"level3\";\n feeAmount: string;\n interestAmount: string;\n lumpSum40Amount: string;\n totalClaimed: string;\n statutoryRateUsed: string;\n baseRateUsed: string;\n notes: Array<string>;\n isPaymentReminder: boolean;\n};\nexport type DunningPreviewExternalResponse = import(\"../types\").ApiEnvelope<DunningPreviewExternalResponseData>;\n\nexport type DunningNoticePdfExternalParams = {\n noticeId: number;\n};\nexport type DunningNoticePdfExternalQuery = undefined;\nexport type DunningNoticePdfExternalBody = undefined;\nexport type DunningNoticePdfExternalResponseData = Blob;\nexport type DunningNoticePdfExternalResponse = Blob;\n\nexport type DunningNoticeDownloadExternalParams = {\n noticeId: number;\n};\nexport type DunningNoticeDownloadExternalQuery = undefined;\nexport type DunningNoticeDownloadExternalBody = undefined;\nexport type DunningNoticeDownloadExternalResponseData = Blob;\nexport type DunningNoticeDownloadExternalResponse = Blob;\n\nexport type DunningGetSettingsExternalParams = undefined;\nexport type DunningGetSettingsExternalQuery = {\n\n};\nexport type DunningGetSettingsExternalBody = undefined;\nexport type DunningGetSettingsExternalResponseData = {\n id: number;\n managingCompanyId: number;\n isEnabled: boolean;\n reminderEnabled: boolean;\n reminderAfterDays: number;\n level1AfterDays: number;\n level2AfterDays: number;\n level3AfterDays: number;\n feeLevel1: string;\n feeLevel2: string;\n feeLevel3: string;\n interestEnabled: boolean;\n baseRate: string;\n statutoryMarginB2B: string;\n statutoryMarginConsumer: string;\n lumpSum40Enabled: boolean;\n emailEnabled: boolean;\n emailFromName: string | null;\n emailReplyToAddress: string | null;\n emailSubjectLevel0: string | null;\n emailBodyLevel0: string | null;\n emailSubjectLevel1: string | null;\n emailBodyLevel1: string | null;\n emailSubjectLevel2: string | null;\n emailBodyLevel2: string | null;\n emailSubjectLevel3: string | null;\n emailBodyLevel3: string | null;\n};\nexport type DunningGetSettingsExternalResponse = import(\"../types\").ApiEnvelope<DunningGetSettingsExternalResponseData>;\n\nexport type DunningIssueExternalParams = {\n invoiceId: number;\n};\nexport type DunningIssueExternalQuery = undefined;\nexport type DunningIssueExternalBody = {\n asOf?: string;\n level: \"level0\" | \"level1\" | \"level2\" | \"level3\";\n delivery?: \"manual\" | \"email\" | \"letter\";\n subject?: string;\n body?: string;\n};\nexport type DunningIssueExternalResponseData = {\n notice: {\n id: number;\n managingCompanyId: number;\n invoiceId: number;\n documentId?: number | null;\n level: \"level1\" | \"level2\" | \"level3\";\n delivery: \"manual\" | \"email\" | \"letter\";\n issuedAt: string;\n issuedBy?: number | null;\n asOf: string;\n daysOverdue: number;\n invoiceTotal: string;\n openAmount: string;\n currency: string;\n interestAmount: string;\n feeAmount: string;\n lumpSum40Amount: string;\n totalClaimed: string;\n baseRateUsed?: string | null;\n statutoryRateUsed?: string | null;\n subject?: string | null;\n body?: string | null;\n createdAt: string;\n isPaymentReminder?: boolean;\n};\n preview: {\n invoiceId: number;\n invoiceNumber: string;\n dueDate: string;\n asOf: string;\n daysOverdue: number;\n currency: string;\n invoiceTotal: string;\n openAmount: string;\n level: \"level0\" | \"level1\" | \"level2\" | \"level3\";\n feeAmount: string;\n interestAmount: string;\n lumpSum40Amount: string;\n totalClaimed: string;\n statutoryRateUsed: string;\n baseRateUsed: string;\n notes: Array<string>;\n isPaymentReminder: boolean;\n};\n document: {\n id: number;\n managingCompanyId: number;\n costCenterId: number | null;\n createdAt: string;\n updatedAt: string | null;\n fileName: string;\n fileType: string;\n fileSizeBytes: number;\n s3Key: string;\n uploadedBy: number | null;\n isLocked: boolean;\n};\n};\nexport type DunningIssueExternalResponse = import(\"../types\").ApiEnvelope<DunningIssueExternalResponseData>;\n\nexport type DunningUpdateSettingsExternalParams = undefined;\nexport type DunningUpdateSettingsExternalQuery = undefined;\nexport type DunningUpdateSettingsExternalBody = {\n isEnabled?: boolean;\n reminderEnabled?: boolean;\n reminderAfterDays?: number;\n level1AfterDays?: number;\n level2AfterDays?: number;\n level3AfterDays?: number;\n feeLevel1?: string;\n feeLevel2?: string;\n feeLevel3?: string;\n interestEnabled?: boolean;\n baseRate?: string;\n statutoryMarginB2B?: string;\n statutoryMarginConsumer?: string;\n lumpSum40Enabled?: boolean;\n emailEnabled?: boolean;\n emailFromName?: string | null;\n emailReplyToAddress?: string | null;\n emailSubjectLevel0?: string | null;\n emailBodyLevel0?: string | null;\n emailSubjectLevel1?: string | null;\n emailBodyLevel1?: string | null;\n emailSubjectLevel2?: string | null;\n emailBodyLevel2?: string | null;\n emailSubjectLevel3?: string | null;\n emailBodyLevel3?: string | null;\n};\nexport type DunningUpdateSettingsExternalResponseData = {\n id: number;\n managingCompanyId: number;\n isEnabled: boolean;\n reminderEnabled: boolean;\n reminderAfterDays: number;\n level1AfterDays: number;\n level2AfterDays: number;\n level3AfterDays: number;\n feeLevel1: string;\n feeLevel2: string;\n feeLevel3: string;\n interestEnabled: boolean;\n baseRate: string;\n statutoryMarginB2B: string;\n statutoryMarginConsumer: string;\n lumpSum40Enabled: boolean;\n emailEnabled: boolean;\n emailFromName: string | null;\n emailReplyToAddress: string | null;\n emailSubjectLevel0: string | null;\n emailBodyLevel0: string | null;\n emailSubjectLevel1: string | null;\n emailBodyLevel1: string | null;\n emailSubjectLevel2: string | null;\n emailBodyLevel2: string | null;\n emailSubjectLevel3: string | null;\n emailBodyLevel3: string | null;\n};\nexport type DunningUpdateSettingsExternalResponse = import(\"../types\").ApiEnvelope<DunningUpdateSettingsExternalResponseData>;\n\nexport const apiRoutes_dunning_external = {\n // Contract source: explicit\n \"dunning_suggestions_external\": {\n method: \"GET\",\n path: \"/invoices/external/dunning/suggestions\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"dunning-external\"],\n summary: \"Get dunning candidates (external API)\",\n description: \"Returns a list of overdue invoices eligible for dunning, including suggested dunning level. Nothing is sent – this is for previewing which invoices need dunning action. Paid/draft/cancelled invoices are excluded.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: DunningSuggestionsExternalParams;\n query: DunningSuggestionsExternalQuery;\n body: DunningSuggestionsExternalBody;\n response: DunningSuggestionsExternalResponse;\n responseData: DunningSuggestionsExternalResponseData;\n },\n },\n // Contract source: explicit\n \"dunning_preview_external\": {\n method: \"POST\",\n path: \"/invoices/external/dunning/:invoiceId/preview\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"dunning-external\"],\n summary: \"Preview dunning fees and interest (external API)\",\n description: \"Calculates fees, interest, and lump sum for a specific invoice and dunning level (or lets the system suggest the level). No dunning notice is created. Blocked if invoice is paid, not overdue, or open amount is 0.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: DunningPreviewExternalParams;\n query: DunningPreviewExternalQuery;\n body: DunningPreviewExternalBody;\n response: DunningPreviewExternalResponse;\n responseData: DunningPreviewExternalResponseData;\n },\n },\n // Contract source: explicit\n \"dunning_notice_pdf_external\": {\n method: \"GET\",\n path: \"/invoices/external/dunning/notices/:noticeId/pdf\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"dunning-external\"],\n summary: \"View dunning notice PDF (external API)\",\n description: \"Streams the PDF of a dunning notice inline (Content-Type: application/pdf).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: DunningNoticePdfExternalParams;\n query: DunningNoticePdfExternalQuery;\n body: DunningNoticePdfExternalBody;\n response: DunningNoticePdfExternalResponse;\n responseData: DunningNoticePdfExternalResponseData;\n },\n },\n // Contract source: explicit\n \"dunning_notice_download_external\": {\n method: \"GET\",\n path: \"/invoices/external/dunning/notices/:noticeId/download\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"dunning-external\"],\n summary: \"Download dunning notice PDF (external API)\",\n description: \"Downloads the PDF of a dunning notice as attachment (Content-Disposition: attachment).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: DunningNoticeDownloadExternalParams;\n query: DunningNoticeDownloadExternalQuery;\n body: DunningNoticeDownloadExternalBody;\n response: DunningNoticeDownloadExternalResponse;\n responseData: DunningNoticeDownloadExternalResponseData;\n },\n },\n // Contract source: explicit\n \"dunning_get_settings_external\": {\n method: \"GET\",\n path: \"/invoices/external/dunning/settings\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"dunning-external\"],\n summary: \"Get dunning settings (external API)\",\n description: \"Returns the current dunning settings for the managing company (fee thresholds, interest rates, lump sum configuration).\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: DunningGetSettingsExternalParams;\n query: DunningGetSettingsExternalQuery;\n body: DunningGetSettingsExternalBody;\n response: DunningGetSettingsExternalResponse;\n responseData: DunningGetSettingsExternalResponseData;\n },\n },\n // Contract source: explicit\n \"dunning_issue_external\": {\n method: \"POST\",\n path: \"/invoices/external/dunning/:invoiceId/issue\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"invoices:write\"]},\n meta: {\n tags: [\"dunning-external\"],\n summary: \"Issue dunning notice (external API)\",\n description: \"Creates a dunning notice (Mahnschreiben) for an invoice at the specified level. Generates a PDF and creates an immutable document. delivery=manual/email/letter is recorded as metadata only (no auto-sending). Blocked if invoice is paid, not overdue, or open amount is 0.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: DunningIssueExternalParams;\n query: DunningIssueExternalQuery;\n body: DunningIssueExternalBody;\n response: DunningIssueExternalResponse;\n responseData: DunningIssueExternalResponseData;\n },\n },\n // Contract source: explicit\n \"dunning_update_settings_external\": {\n method: \"PUT\",\n path: \"/invoices/external/dunning/settings\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"admin\",\"scopes\":[\"invoices:write\"]},\n meta: {\n tags: [\"dunning-external\"],\n summary: \"Update dunning settings (external API)\",\n description: \"Updates the dunning settings (fees, interest rates, thresholds). Requires admin role. Returns the updated settings.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: DunningUpdateSettingsExternalParams;\n query: DunningUpdateSettingsExternalQuery;\n body: DunningUpdateSettingsExternalBody;\n response: DunningUpdateSettingsExternalResponse;\n responseData: DunningUpdateSettingsExternalResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type EnterpriseOnboardingStateGetParams = undefined;\nexport type EnterpriseOnboardingStateGetQuery = {\n\n};\nexport type EnterpriseOnboardingStateGetBody = undefined;\nexport type EnterpriseOnboardingStateGetResponseData = {\n /** ISO-Timestamp wann dieser State generiert wurde. */\n generatedAt: string;\n userId: number;\n context: {\n /** Aktuell ausgewaehlte Managing Company des Users. Null wenn noch keine ausgewaehlt. */\n selectedManagingCompanyId: number | null;\n /** Die Company fuer die der Onboarding-State gilt (i.d.R. = selectedManagingCompanyId). */\n targetManagingCompanyId: number | null;\n /** Anzahl aller Managing Companies des Users. */\n managingCompaniesCount: number;\n /** Davon mit Admin-Zugriff. */\n adminManagingCompaniesCount: number;\n};\n summary: {\n /** Fortschritt in Prozent (0–100) ueber alle Schritte. */\n percent: number;\n totalSteps: number;\n completedSteps: number;\n totalRequiredSteps: number;\n completedRequiredSteps: number;\n /** Anzahl blocking+required Schritte, die noch nicht abgeschlossen sind. Ist 0 sobald alle Pflichtschritte erledigt sind. */\n blockingOpenSteps: number;\n /** HAUPT-SCHALTER: true = Onboarding-Overlay/Banner anzeigen, false = Onboarding abgeschlossen, App normal nutzbar. Leite den User NIEMALS in einen Hard-Block wenn showOnboarding=false, egal was andere Felder sagen. Das Frontend sollte dieses */\n showOnboarding: boolean;\n /** Step-ID des naechsten empfohlenen Schritts. Null wenn alles erledigt. Nutze diesen Wert um den User direkt zum richtigen Tab/Screen zu navigieren. */\n recommendedNextStepId: string | null;\n};\n /** Alle Onboarding-Schritte in der empfohlenen Reihenfolge. Das Frontend kann diese Liste direkt als Stepper/Sidebar rendern. */\n steps: Array<{\n /** Eindeutige Step-ID. Moegliche Werte: company_create | company_profile | tax_setup | bank_setup | invoice_setup */\n id: string;\n /** Kurzname des Schritts fuer Ueberschriften / Stepper. */\n title: string;\n /** Laengere Erklaerung des Schritts fuer Hilfetexte / Tooltips. */\n description: string;\n /** Zusaetzlicher Kontext-Hinweis (z.B. rechtlicher Hinweis). Null wenn nicht vorhanden. */\n hint: string | null;\n /** true = Pflichtschritt – darf nicht dauerhaft uebersprungen werden. */\n required: boolean;\n /** true = dieser Schritt blockiert den App-Zugang solange er offen ist. blocking=true + required=true + nicht abgeschlossen => showOnboarding=true. */\n blocking: boolean;\n /** true = User darf diesen Schritt aktiv ueberspringen (POST /skip-step). */\n skippable: boolean;\n /** true = User hat diesen Schritt aktiv uebersprungen. */\n skipped: boolean;\n /** true = Schritt wird auch dann angezeigt, wenn er optional ist. */\n showByDefault: boolean;\n status: \"pending\" | \"completed\" | \"auto_completed\" | \"locked\" | \"skipped\";\n /** true = dieser Schritt wuerde normalerweise einen manuellen Abschluss-Klick benoetigen. Relevant fuer die UI: zeige dann einen 'Abschliessen'-Button, ABER nur wenn readyToComplete=true und acknowledged=false. Sobald acknowledged=true ist der */\n requiresAcknowledgement: boolean;\n /** true = alle Pflichtdaten sind vorhanden, der Schritt kann abgeschlossen werden. Der Server auto-completed solche Schritte beim naechsten GET /state automatisch. Das Frontend muss POST /complete-step NUR noch aufrufen, falls readyToComplete= */\n readyToComplete: boolean;\n /** true = Schritt ist serverseitig als abgeschlossen persistiert. Wenn acknowledged=true und status=completed/auto_completed/skipped: Schritt gilt als fertig, kein weiterer Aufruf noetig. */\n acknowledged: boolean;\n /** true = Schritt loest sich automatisch auf (z.B. company_create nach erster Firma-Erstellung). Kein Acknowledgement und kein Button noetig. */\n autoResolved: boolean;\n /** Detaillierte Checkliste mit einzelnen Datenpunkten. Null wenn kein Checklisten-Fortschritt verfuegbar. required=true Eintraege sind Pflicht, optional=false Eintraege sind nice-to-have. */\n checklist: Array<{\n /** Interner Bezeichner des Checklistenpunkts. */\n key: string;\n /** Menschenlesbarer Name des Checklistenpunkts, direkt im UI verwendbar. */\n label: string;\n /** Optionaler Hilfstext (Tooltip / Erklaerung). Null wenn nicht vorhanden. */\n hint: string | null;\n /** true = dieser Punkt ist erledigt. */\n done: boolean;\n /** true = Pflichtfeld, muss done=true sein damit der Schritt abschliessbar ist. */\n required: boolean;\n}> | null;\n /** Aggregierter Fortschritt (deprecated – bitte checklist verwenden). Null wenn kein Fortschritt verfuegbar. */\n progress: {\n /** Anzahl abgeschlossener Checklistenpunkte. */\n done: number;\n /** Gesamtanzahl Checklistenpunkte. */\n total: number;\n /** Labels der noch fehlenden Pflichtfelder – direkt im UI verwendbar. */\n missing: Array<string>;\n} | null;\n /** Liste der API-Operationen, die das Frontend fuer diesen Schritt benoetigt. Jeder Eintrag enthaelt key, method und path – damit weiss das Frontend genau, welchen Aufruf es machen muss. */\n operations: Array<{\n /** Eindeutiger Bezeichner der Operation (z.B. 'companyUpdate', 'logoUpload'). Das Frontend nutzt diesen Key um zu wissen, welchen API-Aufruf es fuer diesen Schritt braucht. */\n key: string;\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n /** API-Pfad der Operation, relativ zur API-Base-URL. */\n path: string;\n /** Menschenlesbare Beschreibung was diese Operation tut. */\n description?: string | null;\n}>;\n}>;\n /** Zusammengefuehrte Map aller Operations aus allen Steps (Dedupliziert). Praktisch um global nachzuschlagen welcher API-Call zu welchem key gehoert. */\n operations: Array<{\n /** Eindeutiger Bezeichner der Operation (z.B. 'companyUpdate', 'logoUpload'). Das Frontend nutzt diesen Key um zu wissen, welchen API-Aufruf es fuer diesen Schritt braucht. */\n key: string;\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n /** API-Pfad der Operation, relativ zur API-Base-URL. */\n path: string;\n /** Menschenlesbare Beschreibung was diese Operation tut. */\n description?: string | null;\n}>;\n};\nexport type EnterpriseOnboardingStateGetResponse = import(\"../types\").ApiEnvelope<EnterpriseOnboardingStateGetResponseData>;\n\nexport type EnterpriseOnboardingCompleteStepParams = undefined;\nexport type EnterpriseOnboardingCompleteStepQuery = undefined;\nexport type EnterpriseOnboardingCompleteStepBody = {\n stepId: \"company_create\" | \"company_profile\" | \"tax_setup\" | \"bank_setup\" | \"invoice_setup\";\n};\nexport type EnterpriseOnboardingCompleteStepResponseData = {\n accepted: boolean;\n stepId: string;\n status: \"pending\" | \"completed\" | \"auto_completed\" | \"locked\" | \"skipped\";\n blocking: boolean;\n reason: string | null;\n missing: Array<string>;\n recommendedNextStepId: string | null;\n state: {\n /** ISO-Timestamp wann dieser State generiert wurde. */\n generatedAt: string;\n userId: number;\n context: {\n /** Aktuell ausgewaehlte Managing Company des Users. Null wenn noch keine ausgewaehlt. */\n selectedManagingCompanyId: number | null;\n /** Die Company fuer die der Onboarding-State gilt (i.d.R. = selectedManagingCompanyId). */\n targetManagingCompanyId: number | null;\n /** Anzahl aller Managing Companies des Users. */\n managingCompaniesCount: number;\n /** Davon mit Admin-Zugriff. */\n adminManagingCompaniesCount: number;\n};\n summary: {\n /** Fortschritt in Prozent (0–100) ueber alle Schritte. */\n percent: number;\n totalSteps: number;\n completedSteps: number;\n totalRequiredSteps: number;\n completedRequiredSteps: number;\n /** Anzahl blocking+required Schritte, die noch nicht abgeschlossen sind. Ist 0 sobald alle Pflichtschritte erledigt sind. */\n blockingOpenSteps: number;\n /** HAUPT-SCHALTER: true = Onboarding-Overlay/Banner anzeigen, false = Onboarding abgeschlossen, App normal nutzbar. Leite den User NIEMALS in einen Hard-Block wenn showOnboarding=false, egal was andere Felder sagen. Das Frontend sollte dieses */\n showOnboarding: boolean;\n /** Step-ID des naechsten empfohlenen Schritts. Null wenn alles erledigt. Nutze diesen Wert um den User direkt zum richtigen Tab/Screen zu navigieren. */\n recommendedNextStepId: string | null;\n};\n /** Alle Onboarding-Schritte in der empfohlenen Reihenfolge. Das Frontend kann diese Liste direkt als Stepper/Sidebar rendern. */\n steps: Array<{\n /** Eindeutige Step-ID. Moegliche Werte: company_create | company_profile | tax_setup | bank_setup | invoice_setup */\n id: string;\n /** Kurzname des Schritts fuer Ueberschriften / Stepper. */\n title: string;\n /** Laengere Erklaerung des Schritts fuer Hilfetexte / Tooltips. */\n description: string;\n /** Zusaetzlicher Kontext-Hinweis (z.B. rechtlicher Hinweis). Null wenn nicht vorhanden. */\n hint: string | null;\n /** true = Pflichtschritt – darf nicht dauerhaft uebersprungen werden. */\n required: boolean;\n /** true = dieser Schritt blockiert den App-Zugang solange er offen ist. blocking=true + required=true + nicht abgeschlossen => showOnboarding=true. */\n blocking: boolean;\n /** true = User darf diesen Schritt aktiv ueberspringen (POST /skip-step). */\n skippable: boolean;\n /** true = User hat diesen Schritt aktiv uebersprungen. */\n skipped: boolean;\n /** true = Schritt wird auch dann angezeigt, wenn er optional ist. */\n showByDefault: boolean;\n status: \"pending\" | \"completed\" | \"auto_completed\" | \"locked\" | \"skipped\";\n /** true = dieser Schritt wuerde normalerweise einen manuellen Abschluss-Klick benoetigen. Relevant fuer die UI: zeige dann einen 'Abschliessen'-Button, ABER nur wenn readyToComplete=true und acknowledged=false. Sobald acknowledged=true ist der */\n requiresAcknowledgement: boolean;\n /** true = alle Pflichtdaten sind vorhanden, der Schritt kann abgeschlossen werden. Der Server auto-completed solche Schritte beim naechsten GET /state automatisch. Das Frontend muss POST /complete-step NUR noch aufrufen, falls readyToComplete= */\n readyToComplete: boolean;\n /** true = Schritt ist serverseitig als abgeschlossen persistiert. Wenn acknowledged=true und status=completed/auto_completed/skipped: Schritt gilt als fertig, kein weiterer Aufruf noetig. */\n acknowledged: boolean;\n /** true = Schritt loest sich automatisch auf (z.B. company_create nach erster Firma-Erstellung). Kein Acknowledgement und kein Button noetig. */\n autoResolved: boolean;\n /** Detaillierte Checkliste mit einzelnen Datenpunkten. Null wenn kein Checklisten-Fortschritt verfuegbar. required=true Eintraege sind Pflicht, optional=false Eintraege sind nice-to-have. */\n checklist: Array<{\n /** Interner Bezeichner des Checklistenpunkts. */\n key: string;\n /** Menschenlesbarer Name des Checklistenpunkts, direkt im UI verwendbar. */\n label: string;\n /** Optionaler Hilfstext (Tooltip / Erklaerung). Null wenn nicht vorhanden. */\n hint: string | null;\n /** true = dieser Punkt ist erledigt. */\n done: boolean;\n /** true = Pflichtfeld, muss done=true sein damit der Schritt abschliessbar ist. */\n required: boolean;\n}> | null;\n /** Aggregierter Fortschritt (deprecated – bitte checklist verwenden). Null wenn kein Fortschritt verfuegbar. */\n progress: {\n /** Anzahl abgeschlossener Checklistenpunkte. */\n done: number;\n /** Gesamtanzahl Checklistenpunkte. */\n total: number;\n /** Labels der noch fehlenden Pflichtfelder – direkt im UI verwendbar. */\n missing: Array<string>;\n} | null;\n /** Liste der API-Operationen, die das Frontend fuer diesen Schritt benoetigt. Jeder Eintrag enthaelt key, method und path – damit weiss das Frontend genau, welchen Aufruf es machen muss. */\n operations: Array<{\n /** Eindeutiger Bezeichner der Operation (z.B. 'companyUpdate', 'logoUpload'). Das Frontend nutzt diesen Key um zu wissen, welchen API-Aufruf es fuer diesen Schritt braucht. */\n key: string;\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n /** API-Pfad der Operation, relativ zur API-Base-URL. */\n path: string;\n /** Menschenlesbare Beschreibung was diese Operation tut. */\n description?: string | null;\n}>;\n}>;\n /** Zusammengefuehrte Map aller Operations aus allen Steps (Dedupliziert). Praktisch um global nachzuschlagen welcher API-Call zu welchem key gehoert. */\n operations: Array<{\n /** Eindeutiger Bezeichner der Operation (z.B. 'companyUpdate', 'logoUpload'). Das Frontend nutzt diesen Key um zu wissen, welchen API-Aufruf es fuer diesen Schritt braucht. */\n key: string;\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n /** API-Pfad der Operation, relativ zur API-Base-URL. */\n path: string;\n /** Menschenlesbare Beschreibung was diese Operation tut. */\n description?: string | null;\n}>;\n};\n};\nexport type EnterpriseOnboardingCompleteStepResponse = import(\"../types\").ApiEnvelope<EnterpriseOnboardingCompleteStepResponseData>;\n\nexport type EnterpriseOnboardingSkipStepParams = undefined;\nexport type EnterpriseOnboardingSkipStepQuery = undefined;\nexport type EnterpriseOnboardingSkipStepBody = {\n stepId: \"company_create\" | \"company_profile\" | \"tax_setup\" | \"bank_setup\" | \"invoice_setup\";\n};\nexport type EnterpriseOnboardingSkipStepResponseData = {\n skipped: boolean;\n stepId: string;\n status: \"pending\" | \"completed\" | \"auto_completed\" | \"locked\" | \"skipped\";\n reason: string | null;\n recommendedNextStepId: string | null;\n state: {\n /** ISO-Timestamp wann dieser State generiert wurde. */\n generatedAt: string;\n userId: number;\n context: {\n /** Aktuell ausgewaehlte Managing Company des Users. Null wenn noch keine ausgewaehlt. */\n selectedManagingCompanyId: number | null;\n /** Die Company fuer die der Onboarding-State gilt (i.d.R. = selectedManagingCompanyId). */\n targetManagingCompanyId: number | null;\n /** Anzahl aller Managing Companies des Users. */\n managingCompaniesCount: number;\n /** Davon mit Admin-Zugriff. */\n adminManagingCompaniesCount: number;\n};\n summary: {\n /** Fortschritt in Prozent (0–100) ueber alle Schritte. */\n percent: number;\n totalSteps: number;\n completedSteps: number;\n totalRequiredSteps: number;\n completedRequiredSteps: number;\n /** Anzahl blocking+required Schritte, die noch nicht abgeschlossen sind. Ist 0 sobald alle Pflichtschritte erledigt sind. */\n blockingOpenSteps: number;\n /** HAUPT-SCHALTER: true = Onboarding-Overlay/Banner anzeigen, false = Onboarding abgeschlossen, App normal nutzbar. Leite den User NIEMALS in einen Hard-Block wenn showOnboarding=false, egal was andere Felder sagen. Das Frontend sollte dieses */\n showOnboarding: boolean;\n /** Step-ID des naechsten empfohlenen Schritts. Null wenn alles erledigt. Nutze diesen Wert um den User direkt zum richtigen Tab/Screen zu navigieren. */\n recommendedNextStepId: string | null;\n};\n /** Alle Onboarding-Schritte in der empfohlenen Reihenfolge. Das Frontend kann diese Liste direkt als Stepper/Sidebar rendern. */\n steps: Array<{\n /** Eindeutige Step-ID. Moegliche Werte: company_create | company_profile | tax_setup | bank_setup | invoice_setup */\n id: string;\n /** Kurzname des Schritts fuer Ueberschriften / Stepper. */\n title: string;\n /** Laengere Erklaerung des Schritts fuer Hilfetexte / Tooltips. */\n description: string;\n /** Zusaetzlicher Kontext-Hinweis (z.B. rechtlicher Hinweis). Null wenn nicht vorhanden. */\n hint: string | null;\n /** true = Pflichtschritt – darf nicht dauerhaft uebersprungen werden. */\n required: boolean;\n /** true = dieser Schritt blockiert den App-Zugang solange er offen ist. blocking=true + required=true + nicht abgeschlossen => showOnboarding=true. */\n blocking: boolean;\n /** true = User darf diesen Schritt aktiv ueberspringen (POST /skip-step). */\n skippable: boolean;\n /** true = User hat diesen Schritt aktiv uebersprungen. */\n skipped: boolean;\n /** true = Schritt wird auch dann angezeigt, wenn er optional ist. */\n showByDefault: boolean;\n status: \"pending\" | \"completed\" | \"auto_completed\" | \"locked\" | \"skipped\";\n /** true = dieser Schritt wuerde normalerweise einen manuellen Abschluss-Klick benoetigen. Relevant fuer die UI: zeige dann einen 'Abschliessen'-Button, ABER nur wenn readyToComplete=true und acknowledged=false. Sobald acknowledged=true ist der */\n requiresAcknowledgement: boolean;\n /** true = alle Pflichtdaten sind vorhanden, der Schritt kann abgeschlossen werden. Der Server auto-completed solche Schritte beim naechsten GET /state automatisch. Das Frontend muss POST /complete-step NUR noch aufrufen, falls readyToComplete= */\n readyToComplete: boolean;\n /** true = Schritt ist serverseitig als abgeschlossen persistiert. Wenn acknowledged=true und status=completed/auto_completed/skipped: Schritt gilt als fertig, kein weiterer Aufruf noetig. */\n acknowledged: boolean;\n /** true = Schritt loest sich automatisch auf (z.B. company_create nach erster Firma-Erstellung). Kein Acknowledgement und kein Button noetig. */\n autoResolved: boolean;\n /** Detaillierte Checkliste mit einzelnen Datenpunkten. Null wenn kein Checklisten-Fortschritt verfuegbar. required=true Eintraege sind Pflicht, optional=false Eintraege sind nice-to-have. */\n checklist: Array<{\n /** Interner Bezeichner des Checklistenpunkts. */\n key: string;\n /** Menschenlesbarer Name des Checklistenpunkts, direkt im UI verwendbar. */\n label: string;\n /** Optionaler Hilfstext (Tooltip / Erklaerung). Null wenn nicht vorhanden. */\n hint: string | null;\n /** true = dieser Punkt ist erledigt. */\n done: boolean;\n /** true = Pflichtfeld, muss done=true sein damit der Schritt abschliessbar ist. */\n required: boolean;\n}> | null;\n /** Aggregierter Fortschritt (deprecated – bitte checklist verwenden). Null wenn kein Fortschritt verfuegbar. */\n progress: {\n /** Anzahl abgeschlossener Checklistenpunkte. */\n done: number;\n /** Gesamtanzahl Checklistenpunkte. */\n total: number;\n /** Labels der noch fehlenden Pflichtfelder – direkt im UI verwendbar. */\n missing: Array<string>;\n} | null;\n /** Liste der API-Operationen, die das Frontend fuer diesen Schritt benoetigt. Jeder Eintrag enthaelt key, method und path – damit weiss das Frontend genau, welchen Aufruf es machen muss. */\n operations: Array<{\n /** Eindeutiger Bezeichner der Operation (z.B. 'companyUpdate', 'logoUpload'). Das Frontend nutzt diesen Key um zu wissen, welchen API-Aufruf es fuer diesen Schritt braucht. */\n key: string;\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n /** API-Pfad der Operation, relativ zur API-Base-URL. */\n path: string;\n /** Menschenlesbare Beschreibung was diese Operation tut. */\n description?: string | null;\n}>;\n}>;\n /** Zusammengefuehrte Map aller Operations aus allen Steps (Dedupliziert). Praktisch um global nachzuschlagen welcher API-Call zu welchem key gehoert. */\n operations: Array<{\n /** Eindeutiger Bezeichner der Operation (z.B. 'companyUpdate', 'logoUpload'). Das Frontend nutzt diesen Key um zu wissen, welchen API-Aufruf es fuer diesen Schritt braucht. */\n key: string;\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n /** API-Pfad der Operation, relativ zur API-Base-URL. */\n path: string;\n /** Menschenlesbare Beschreibung was diese Operation tut. */\n description?: string | null;\n}>;\n};\n};\nexport type EnterpriseOnboardingSkipStepResponse = import(\"../types\").ApiEnvelope<EnterpriseOnboardingSkipStepResponseData>;\n\nexport const apiRoutes_enterprise = {\n // Contract source: explicit\n \"enterprise_onboarding_state_get\": {\n method: \"GET\",\n path: \"/apps/enterprise/onboarding/state\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"enterprise\",\"onboarding\"],\n summary: \"Enterprise Onboarding Status\",\n description: \"Liefert den vollstaendigen Onboarding-Status fuer das Frontend. WICHTIG – Frontend-Logik: (1) summary.showOnboarding ist der einzige Gate-Schalter. Ist er false → App normal nutzbar, kein Block. (2) Schritte mit readyToComplete=true werden vom Server beim naechsten Aufruf automatisch abgeschlossen – kein manueller POST /complete-step noetig. (3) Schritte mit acknowledged=true sind bereits persistiert – kein erneuter Aufruf noetig. (4) requiresAcknowledgement=true + readyToComplete=true + acknowledged=false → optionaler 'Abschliessen'-Button anzeigen (Komfort, kein Blocker). (5) Jeder Step enthaelt operations[] mit den exakten API-Calls (key, method, path) die fuer diesen Schritt noetig sind. (6) recommendedNextStepId zeigt den naechsten offenen Schritt – direkt zur Navigation nutzbar. Auth: Bearer + BookkeepingAccess-Permission.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: EnterpriseOnboardingStateGetParams;\n query: EnterpriseOnboardingStateGetQuery;\n body: EnterpriseOnboardingStateGetBody;\n response: EnterpriseOnboardingStateGetResponse;\n responseData: EnterpriseOnboardingStateGetResponseData;\n },\n },\n // Contract source: explicit\n \"enterprise_onboarding_complete_step\": {\n method: \"POST\",\n path: \"/apps/enterprise/onboarding/complete-step\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"enterprise\",\"onboarding\"],\n summary: \"Onboarding Step Validieren/Abschliessen\",\n description: \"Validiert serverseitig ob ein Schritt wirklich abgeschlossen ist und persistiert die Bestaetigung. Wann aufrufen: NUR wenn readyToComplete=true und acknowledged=false und der User explizit auf 'Abschliessen' geklickt hat. Schritte mit readyToComplete=true werden vom Server beim naechsten GET /state OHNEHIN automatisch abgeschlossen. Dieser Endpoint ist also ein optionaler Komfort-Call, kein Pflichtaufruf. Response: accepted=true wenn Schritt valide war, missing[] enthaelt fehlende Pflichtfelder falls accepted=false. state enthaelt den aktualisierten Gesamtstatus (direkt verwendbar, kein erneutes GET noetig).\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: EnterpriseOnboardingCompleteStepParams;\n query: EnterpriseOnboardingCompleteStepQuery;\n body: EnterpriseOnboardingCompleteStepBody;\n response: EnterpriseOnboardingCompleteStepResponse;\n responseData: EnterpriseOnboardingCompleteStepResponseData;\n },\n },\n // Contract source: explicit\n \"enterprise_onboarding_skip_step\": {\n method: \"POST\",\n path: \"/apps/enterprise/onboarding/skip-step\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"enterprise\",\"onboarding\"],\n summary: \"Onboarding Schritt Ueberspringen\",\n description: \"Markiert einen skippbaren Onboarding-Schritt als uebersprungen (skipped=true). Nur aufrufbar wenn step.skippable=true. Nicht-skippbare oder bereits abgeschlossene Schritte werden abgelehnt (skipped=false in Response). Uebersprungene Schritte gelten als 'erledigt' fuer blockingOpenSteps – der User kommt also weiter. Response enthaelt den aktualisierten State (direkt verwendbar, kein erneutes GET noetig).\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: EnterpriseOnboardingSkipStepParams;\n query: EnterpriseOnboardingSkipStepQuery;\n body: EnterpriseOnboardingSkipStepBody;\n response: EnterpriseOnboardingSkipStepResponse;\n responseData: EnterpriseOnboardingSkipStepResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { Role, RoleAssignment } from \"../../frontend-types\";\n\nexport type EntitlementsListParams = undefined;\nexport type EntitlementsListQuery = {\n\n};\nexport type EntitlementsListBody = undefined;\nexport type EntitlementsListResponseData = { app: { appId: string }; data: Array<{ externalIdentifier: string; entitlementType: 'role' | 'area'; externalName: string; externalDescription: string | null }>; total: number };\nexport type EntitlementsListResponse = import(\"../types\").ApiEnvelope<EntitlementsListResponseData>;\n\nexport type EntitlementsAssignParams = undefined;\nexport type EntitlementsAssignQuery = undefined;\nexport type EntitlementsAssignBody = {\n externalUserId: string;\n externalIdentifier: string;\n entitlementType: \"role\" | \"area\";\n validFrom?: string | null;\n expiresAt?: string | null;\n limits?: Record<string, {\n included: number;\n behavior: string;\n payAsYouGoActive: boolean;\n maxOverageQuantity?: number | null;\n overagePricePerUnit?: number | null;\n}>;\n credits?: Record<string, {\n remaining: number;\n type: string;\n pools?: Array<{\n poolId: number;\n creditType: string;\n totalCredits: number;\n usedCredits: number;\n remaining: number;\n expiresAt: string | null;\n}>;\n}>;\n};\nexport type EntitlementsAssignResponseData = { created: boolean; externalUserId: string; externalIdentifier: string; entitlementType: 'role' | 'area'; validFrom: Date; expiresAt: Date | null };\nexport type EntitlementsAssignResponse = import(\"../types\").ApiEnvelope<EntitlementsAssignResponseData>;\n\nexport type EntitlementsGetAllParams = undefined;\nexport type EntitlementsGetAllQuery = {\n\n};\nexport type EntitlementsGetAllBody = undefined;\nexport type EntitlementsGetAllResponseData = { app: { appId: string }; data: Array<{ externalIdentifier: string; entitlementType: 'role' | 'area'; externalName: string; externalDescription: string | null }>; total: number };\nexport type EntitlementsGetAllResponse = import(\"../types\").ApiEnvelope<EntitlementsGetAllResponseData>;\n\nexport type EntitlementsGetAssignedParams = undefined;\nexport type EntitlementsGetAssignedQuery = {\n userId?: string;\n};\nexport type EntitlementsGetAssignedBody = undefined;\nexport type EntitlementsGetAssignedResponseData = { data: RoleAssignment[]; total: number };\nexport type EntitlementsGetAssignedResponse = import(\"../types\").ApiEnvelope<EntitlementsGetAssignedResponseData>;\n\nexport type EntitlementsGetUserEntitlementsParams = {\n userId: string;\n};\nexport type EntitlementsGetUserEntitlementsQuery = undefined;\nexport type EntitlementsGetUserEntitlementsBody = undefined;\nexport type EntitlementsGetUserEntitlementsResponseData = { data: Role[]; total: number };\nexport type EntitlementsGetUserEntitlementsResponse = import(\"../types\").ApiEnvelope<EntitlementsGetUserEntitlementsResponseData>;\n\nexport type EntitlementsContextGetByShopAssignmentParams = {\n shopAssignmentId: string;\n};\nexport type EntitlementsContextGetByShopAssignmentQuery = undefined;\nexport type EntitlementsContextGetByShopAssignmentBody = undefined;\nexport type EntitlementsContextGetByShopAssignmentResponseData = { id: number } & Record<string, unknown>;\nexport type EntitlementsContextGetByShopAssignmentResponse = import(\"../types\").ApiEnvelope<EntitlementsContextGetByShopAssignmentResponseData>;\n\nexport type EntitlementsUsageOveragesPullParams = undefined;\nexport type EntitlementsUsageOveragesPullQuery = {\n since?: string;\n periodStart?: string;\n periodEnd?: string;\n limit?: number;\n};\nexport type EntitlementsUsageOveragesPullBody = undefined;\nexport type EntitlementsUsageOveragesPullResponseData = Array<Record<string, unknown>>;\nexport type EntitlementsUsageOveragesPullResponse = import(\"../types\").ApiEnvelope<EntitlementsUsageOveragesPullResponseData>;\n\nexport type EntitlementsGetStateParams = {\n userId: string;\n type: \"role\" | \"area\";\n identifier: string;\n};\nexport type EntitlementsGetStateQuery = undefined;\nexport type EntitlementsGetStateBody = undefined;\nexport type EntitlementsGetStateResponseData = { externalUserId: string; externalIdentifier: string; entitlementType: 'role' | 'area'; validFrom: Date; expiresAt: Date | null };\nexport type EntitlementsGetStateResponse = import(\"../types\").ApiEnvelope<EntitlementsGetStateResponseData>;\n\nexport type EntitlementsUpdateStateParams = {\n userId: string;\n type: \"role\" | \"area\";\n identifier: string;\n};\nexport type EntitlementsUpdateStateQuery = undefined;\nexport type EntitlementsUpdateStateBody = {\n validFrom?: string | null;\n expiresAt?: string | null;\n};\nexport type EntitlementsUpdateStateResponseData = { success: boolean; externalUserId: string; externalIdentifier: string; entitlementType: 'role' | 'area'; validFrom: Date; expiresAt: Date | null };\nexport type EntitlementsUpdateStateResponse = import(\"../types\").ApiEnvelope<EntitlementsUpdateStateResponseData>;\n\nexport type EntitlementsRevokeParams = {\n userId: string;\n type: \"role\" | \"area\";\n identifier: string;\n};\nexport type EntitlementsRevokeQuery = undefined;\nexport type EntitlementsRevokeBody = undefined;\nexport type EntitlementsRevokeResponseData = { success: boolean; revoked: boolean };\nexport type EntitlementsRevokeResponse = import(\"../types\").ApiEnvelope<EntitlementsRevokeResponseData>;\n\nexport type EntitlementsGetByIdParams = {\n id: number;\n};\nexport type EntitlementsGetByIdQuery = undefined;\nexport type EntitlementsGetByIdBody = undefined;\nexport type EntitlementsGetByIdResponseData = Role;\nexport type EntitlementsGetByIdResponse = import(\"../types\").ApiEnvelope<EntitlementsGetByIdResponseData>;\n\nexport const apiRoutes_entitlements = {\n // Contract source: explicit\n \"entitlements_list\": {\n method: \"GET\",\n path: \"/entitlements\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"List available entitlements\",\n description: \"Returns available entitlements for sync. Payload follows the external entitlements contract.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: EntitlementsListParams;\n query: EntitlementsListQuery;\n body: EntitlementsListBody;\n response: EntitlementsListResponse;\n responseData: EntitlementsListResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_assign\": {\n method: \"POST\",\n path: \"/entitlements\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Assign entitlement to user\",\n description: \"Assigns an entitlement to a user. Idempotent behavior: existing assignment is updated and returns 200.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: EntitlementsAssignParams;\n query: EntitlementsAssignQuery;\n body: EntitlementsAssignBody;\n response: EntitlementsAssignResponse;\n responseData: EntitlementsAssignResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_getAll\": {\n method: \"GET\",\n path: \"/entitlements/getAll\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Alias for listing entitlements\",\n description: \"Alias endpoint for backwards compatibility.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: EntitlementsGetAllParams;\n query: EntitlementsGetAllQuery;\n body: EntitlementsGetAllBody;\n response: EntitlementsGetAllResponse;\n responseData: EntitlementsGetAllResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_getAssigned\": {\n method: \"GET\",\n path: \"/entitlements/assigned\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Get role assignments (legacy)\",\n description: \"Legacy endpoint for active role assignments.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: EntitlementsGetAssignedParams;\n query: EntitlementsGetAssignedQuery;\n body: EntitlementsGetAssignedBody;\n response: EntitlementsGetAssignedResponse;\n responseData: EntitlementsGetAssignedResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_getUserEntitlements\": {\n method: \"GET\",\n path: \"/entitlements/user/:userId\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Get active user entitlements (legacy)\",\n description: \"Legacy endpoint returning active user roles with permissions.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: EntitlementsGetUserEntitlementsParams;\n query: EntitlementsGetUserEntitlementsQuery;\n body: EntitlementsGetUserEntitlementsBody;\n response: EntitlementsGetUserEntitlementsResponse;\n responseData: EntitlementsGetUserEntitlementsResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_context_get_by_shop_assignment\": {\n method: \"GET\",\n path: \"/entitlements/context/by-shop-assignment/:shopAssignmentId\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Get entitlement sync context by shop assignment id\",\n description: \"Returns the persisted entitlement-sync context row (shop linkage + local assignment references) for a given x-shop-assignment-id.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: EntitlementsContextGetByShopAssignmentParams;\n query: EntitlementsContextGetByShopAssignmentQuery;\n body: EntitlementsContextGetByShopAssignmentBody;\n response: EntitlementsContextGetByShopAssignmentResponse;\n responseData: EntitlementsContextGetByShopAssignmentResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_usage_overages_pull\": {\n method: \"GET\",\n path: \"/entitlements/usage-overages\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Pull usage overages\",\n description: \"Returns deterministic usage-overage events for shop-initiated pull billing sync. Endpoint is idempotent via stable externalEventId per event snapshot.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: EntitlementsUsageOveragesPullParams;\n query: EntitlementsUsageOveragesPullQuery;\n body: EntitlementsUsageOveragesPullBody;\n response: EntitlementsUsageOveragesPullResponse;\n responseData: EntitlementsUsageOveragesPullResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_get_state\": {\n method: \"GET\",\n path: \"/entitlements/:userId/:type/:identifier\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Get current entitlement state\",\n description: \"Returns the current entitlement assignment for one user + identifier tuple.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: EntitlementsGetStateParams;\n query: EntitlementsGetStateQuery;\n body: EntitlementsGetStateBody;\n response: EntitlementsGetStateResponse;\n responseData: EntitlementsGetStateResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_update_state\": {\n method: \"PUT\",\n path: \"/entitlements/:userId/:type/:identifier\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Update entitlement validity\",\n description: \"Updates (or creates) a single entitlement assignment for one user + identifier tuple.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: EntitlementsUpdateStateParams;\n query: EntitlementsUpdateStateQuery;\n body: EntitlementsUpdateStateBody;\n response: EntitlementsUpdateStateResponse;\n responseData: EntitlementsUpdateStateResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_revoke\": {\n method: \"DELETE\",\n path: \"/entitlements/:userId/:type/:identifier\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Revoke entitlement from user\",\n description: \"Revokes the entitlement assignment. Idempotent: missing assignment still returns success.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: EntitlementsRevokeParams;\n query: EntitlementsRevokeQuery;\n body: EntitlementsRevokeBody;\n response: EntitlementsRevokeResponse;\n responseData: EntitlementsRevokeResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_getById\": {\n method: \"GET\",\n path: \"/entitlements/:id\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Get entitlement by role id (legacy)\",\n description: \"Legacy endpoint: returns sellable role details by numeric role id.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: EntitlementsGetByIdParams;\n query: EntitlementsGetByIdQuery;\n body: EntitlementsGetByIdBody;\n response: EntitlementsGetByIdResponse;\n responseData: EntitlementsGetByIdResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type ExportsDatevMetadataParams = undefined;\nexport type ExportsDatevMetadataQuery = import(\"../types\").ContractNotReady<\"Query not typed yet. Add DTO + validate({ query }) to the route (or explicitly declare none).\">;\nexport type ExportsDatevMetadataBody = undefined;\nexport type ExportsDatevMetadataResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type ExportsDatevMetadataResponse = import(\"../types\").ApiEnvelope<ExportsDatevMetadataResponseData>;\n\nexport type ExportsDatevBuchungsstapelParams = undefined;\nexport type ExportsDatevBuchungsstapelQuery = import(\"../types\").ContractNotReady<\"Query not typed yet. Add DTO + validate({ query }) to the route (or explicitly declare none).\">;\nexport type ExportsDatevBuchungsstapelBody = undefined;\nexport type ExportsDatevBuchungsstapelResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type ExportsDatevBuchungsstapelResponse = import(\"../types\").ApiEnvelope<ExportsDatevBuchungsstapelResponseData>;\n\nexport const apiRoutes_exports = {\n // Contract source: explicit\n \"exports_datev_metadata\": {\n method: \"GET\",\n path: \"/exports/bookkeeping/datev/metadata\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"exports\",\"datev\"],\n summary: \"DATEV Export-Metadaten\",\n description: \"Gibt verfügbare Jahre und SKR-Optionen für den DATEV-Export zurück.\",\n },\n types: null as unknown as {\n params: ExportsDatevMetadataParams;\n query: ExportsDatevMetadataQuery;\n body: ExportsDatevMetadataBody;\n response: ExportsDatevMetadataResponse;\n responseData: ExportsDatevMetadataResponseData;\n },\n },\n // Contract source: explicit\n \"exports_datev_buchungsstapel\": {\n method: \"GET\",\n path: \"/exports/bookkeeping/datev/buchungsstapel\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"exports\",\"datev\"],\n summary: \"DATEV Buchungsstapel herunterladen\",\n description: \"Generiert und liefert einen DATEV-kompatiblen Buchungsstapel (Format EXTF, Version 12) als CSV. Enthält alle EÜR-wirksamen Einnahmen und Ausgaben für das angegebene Jahr/Monat. Query-Parameter: year (Pflicht), month (optional, 1-12), skr (optional, skr03|skr04).\",\n },\n types: null as unknown as {\n params: ExportsDatevBuchungsstapelParams;\n query: ExportsDatevBuchungsstapelQuery;\n body: ExportsDatevBuchungsstapelBody;\n response: ExportsDatevBuchungsstapelResponse;\n responseData: ExportsDatevBuchungsstapelResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type InternalUsersProvisionParams = undefined;\nexport type InternalUsersProvisionQuery = undefined;\nexport type InternalUsersProvisionBody = {\n externalUserId: string;\n email: string;\n emailVerifiedAt: string | null;\n firstName?: string | null;\n lastName?: string | null;\n name?: string | null;\n locale?: string;\n idempotencyKey?: string;\n};\nexport type InternalUsersProvisionResponseData = { userId: number; created: boolean; linked: boolean } & {};\nexport type InternalUsersProvisionResponse = InternalUsersProvisionResponseData;\n\nexport type InternalUsersSyncParams = undefined;\nexport type InternalUsersSyncQuery = undefined;\nexport type InternalUsersSyncBody = {\n externalUserId: string;\n fields: {\n email?: string;\n emailVerifiedAt?: string | null;\n firstName?: string | null;\n lastName?: string | null;\n name?: string | null;\n};\n sourceUpdatedAt: string;\n};\nexport type InternalUsersSyncResponseData = { outcome: 'updated' | 'skipped_stale'; userId: number };\nexport type InternalUsersSyncResponse = InternalUsersSyncResponseData;\n\nexport type InternalUsersDeleteParams = {\n externalUserId: string;\n};\nexport type InternalUsersDeleteQuery = undefined;\nexport type InternalUsersDeleteBody = undefined;\nexport type InternalUsersDeleteResponseData = { deleted: boolean; userId: number | null };\nexport type InternalUsersDeleteResponse = InternalUsersDeleteResponseData;\n\nexport const apiRoutes_internal = {\n // Contract source: explicit\n \"internal_users_provision\": {\n method: \"POST\",\n path: \"/internal/users/provision\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"internal\",\"users\"],\n summary: \"Idempotente Provisionierung: User-Anlage (oder Link via E-Mail-Match), Startrolle und App-Extras.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InternalUsersProvisionParams;\n query: InternalUsersProvisionQuery;\n body: InternalUsersProvisionBody;\n response: InternalUsersProvisionResponse;\n responseData: InternalUsersProvisionResponseData;\n },\n },\n // Contract source: explicit\n \"internal_users_sync\": {\n method: \"POST\",\n path: \"/internal/users/sync\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"internal\",\"users\"],\n summary: \"Update der Profil-Felder (Email/Name/Verify). Out-of-order-geschützt via sourceUpdatedAt-Vergleich.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InternalUsersSyncParams;\n query: InternalUsersSyncQuery;\n body: InternalUsersSyncBody;\n response: InternalUsersSyncResponse;\n responseData: InternalUsersSyncResponseData;\n },\n },\n // Contract source: explicit\n \"internal_users_delete\": {\n method: \"DELETE\",\n path: \"/internal/users/:externalUserId\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"internal\",\"users\"],\n summary: \"DSGVO Art. 17 Hard-Delete. Cascade über vorhandene FK-Constraints. Idempotent (200 mit deleted:false bei not-found).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InternalUsersDeleteParams;\n query: InternalUsersDeleteQuery;\n body: InternalUsersDeleteBody;\n response: InternalUsersDeleteResponse;\n responseData: InternalUsersDeleteResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { CustomerCompany, Invoice, PaginatedResult } from \"../../frontend-types\";\n\nexport type InvoiceDunningSuggestionsParams = undefined;\nexport type InvoiceDunningSuggestionsQuery = {\n asOf?: string;\n limit?: number;\n};\nexport type InvoiceDunningSuggestionsBody = undefined;\nexport type InvoiceDunningSuggestionsResponseData = {\n asOf: string;\n items: Array<{\n invoiceId: number;\n invoiceNumber: string;\n status: string;\n dueDate: string;\n daysOverdue: number;\n currency: string;\n invoiceTotal: string;\n openAmount: string;\n suggestedLevel: \"level0\" | \"level1\" | \"level2\" | \"level3\" | null;\n latestNoticeLevel: \"level0\" | \"level1\" | \"level2\" | \"level3\" | null;\n latestNoticeAt: string | null;\n}>;\n};\nexport type InvoiceDunningSuggestionsResponse = import(\"../types\").ApiEnvelope<InvoiceDunningSuggestionsResponseData>;\n\nexport type InvoiceDunningListNoticesParams = {\n invoiceId: number;\n};\nexport type InvoiceDunningListNoticesQuery = undefined;\nexport type InvoiceDunningListNoticesBody = undefined;\nexport type InvoiceDunningListNoticesResponseData = {\n invoiceId: number;\n notices: Array<{\n id: number;\n managingCompanyId: number;\n invoiceId: number;\n documentId?: number | null;\n level: \"level1\" | \"level2\" | \"level3\";\n delivery: \"manual\" | \"email\" | \"letter\";\n issuedAt: string;\n issuedBy?: number | null;\n asOf: string;\n daysOverdue: number;\n invoiceTotal: string;\n openAmount: string;\n currency: string;\n interestAmount: string;\n feeAmount: string;\n lumpSum40Amount: string;\n totalClaimed: string;\n baseRateUsed?: string | null;\n statutoryRateUsed?: string | null;\n subject?: string | null;\n body?: string | null;\n createdAt: string;\n isPaymentReminder?: boolean;\n}>;\n totalCount: number;\n};\nexport type InvoiceDunningListNoticesResponse = import(\"../types\").ApiEnvelope<InvoiceDunningListNoticesResponseData>;\n\nexport type InvoiceDunningPreviewParams = {\n invoiceId: number;\n};\nexport type InvoiceDunningPreviewQuery = undefined;\nexport type InvoiceDunningPreviewBody = {\n asOf?: string;\n level?: \"level0\" | \"level1\" | \"level2\" | \"level3\";\n};\nexport type InvoiceDunningPreviewResponseData = {\n invoiceId: number;\n invoiceNumber: string;\n dueDate: string;\n asOf: string;\n daysOverdue: number;\n currency: string;\n invoiceTotal: string;\n openAmount: string;\n level: \"level0\" | \"level1\" | \"level2\" | \"level3\";\n feeAmount: string;\n interestAmount: string;\n lumpSum40Amount: string;\n totalClaimed: string;\n statutoryRateUsed: string;\n baseRateUsed: string;\n notes: Array<string>;\n isPaymentReminder: boolean;\n};\nexport type InvoiceDunningPreviewResponse = import(\"../types\").ApiEnvelope<InvoiceDunningPreviewResponseData>;\n\nexport type InvoiceDunningIssueParams = {\n invoiceId: number;\n};\nexport type InvoiceDunningIssueQuery = undefined;\nexport type InvoiceDunningIssueBody = {\n asOf?: string;\n level: \"level0\" | \"level1\" | \"level2\" | \"level3\";\n delivery?: \"manual\" | \"email\" | \"letter\";\n subject?: string;\n body?: string;\n};\nexport type InvoiceDunningIssueResponseData = {\n notice: {\n id: number;\n managingCompanyId: number;\n invoiceId: number;\n documentId?: number | null;\n level: \"level1\" | \"level2\" | \"level3\";\n delivery: \"manual\" | \"email\" | \"letter\";\n issuedAt: string;\n issuedBy?: number | null;\n asOf: string;\n daysOverdue: number;\n invoiceTotal: string;\n openAmount: string;\n currency: string;\n interestAmount: string;\n feeAmount: string;\n lumpSum40Amount: string;\n totalClaimed: string;\n baseRateUsed?: string | null;\n statutoryRateUsed?: string | null;\n subject?: string | null;\n body?: string | null;\n createdAt: string;\n isPaymentReminder?: boolean;\n};\n preview: {\n invoiceId: number;\n invoiceNumber: string;\n dueDate: string;\n asOf: string;\n daysOverdue: number;\n currency: string;\n invoiceTotal: string;\n openAmount: string;\n level: \"level0\" | \"level1\" | \"level2\" | \"level3\";\n feeAmount: string;\n interestAmount: string;\n lumpSum40Amount: string;\n totalClaimed: string;\n statutoryRateUsed: string;\n baseRateUsed: string;\n notes: Array<string>;\n isPaymentReminder: boolean;\n};\n document: {\n id: number;\n managingCompanyId: number;\n costCenterId: number | null;\n createdAt: string;\n updatedAt: string | null;\n fileName: string;\n fileType: string;\n fileSizeBytes: number;\n s3Key: string;\n uploadedBy: number | null;\n isLocked: boolean;\n};\n};\nexport type InvoiceDunningIssueResponse = import(\"../types\").ApiEnvelope<InvoiceDunningIssueResponseData>;\n\nexport type InvoiceDunningNoticePdfParams = {\n noticeId: number;\n};\nexport type InvoiceDunningNoticePdfQuery = undefined;\nexport type InvoiceDunningNoticePdfBody = undefined;\nexport type InvoiceDunningNoticePdfResponseData = Blob;\nexport type InvoiceDunningNoticePdfResponse = Blob;\n\nexport type InvoiceDunningNoticeDownloadParams = {\n noticeId: number;\n};\nexport type InvoiceDunningNoticeDownloadQuery = undefined;\nexport type InvoiceDunningNoticeDownloadBody = undefined;\nexport type InvoiceDunningNoticeDownloadResponseData = Blob;\nexport type InvoiceDunningNoticeDownloadResponse = Blob;\n\nexport type InvoiceDunningDeleteNoticeParams = {\n invoiceId: string;\n noticeId: string;\n};\nexport type InvoiceDunningDeleteNoticeQuery = undefined;\nexport type InvoiceDunningDeleteNoticeBody = undefined;\nexport type InvoiceDunningDeleteNoticeResponseData = null;\nexport type InvoiceDunningDeleteNoticeResponse = import(\"../types\").ApiEnvelope<InvoiceDunningDeleteNoticeResponseData>;\n\nexport type InvoiceDunningGetSettingsParams = undefined;\nexport type InvoiceDunningGetSettingsQuery = {\n\n};\nexport type InvoiceDunningGetSettingsBody = undefined;\nexport type InvoiceDunningGetSettingsResponseData = {\n id: number;\n managingCompanyId: number;\n isEnabled: boolean;\n reminderEnabled: boolean;\n reminderAfterDays: number;\n level1AfterDays: number;\n level2AfterDays: number;\n level3AfterDays: number;\n feeLevel1: string;\n feeLevel2: string;\n feeLevel3: string;\n interestEnabled: boolean;\n baseRate: string;\n statutoryMarginB2B: string;\n statutoryMarginConsumer: string;\n lumpSum40Enabled: boolean;\n emailEnabled: boolean;\n emailFromName: string | null;\n emailReplyToAddress: string | null;\n emailSubjectLevel0: string | null;\n emailBodyLevel0: string | null;\n emailSubjectLevel1: string | null;\n emailBodyLevel1: string | null;\n emailSubjectLevel2: string | null;\n emailBodyLevel2: string | null;\n emailSubjectLevel3: string | null;\n emailBodyLevel3: string | null;\n};\nexport type InvoiceDunningGetSettingsResponse = import(\"../types\").ApiEnvelope<InvoiceDunningGetSettingsResponseData>;\n\nexport type InvoiceDunningUpdateSettingsParams = undefined;\nexport type InvoiceDunningUpdateSettingsQuery = undefined;\nexport type InvoiceDunningUpdateSettingsBody = {\n isEnabled?: boolean;\n reminderEnabled?: boolean;\n reminderAfterDays?: number;\n level1AfterDays?: number;\n level2AfterDays?: number;\n level3AfterDays?: number;\n feeLevel1?: string;\n feeLevel2?: string;\n feeLevel3?: string;\n interestEnabled?: boolean;\n baseRate?: string;\n statutoryMarginB2B?: string;\n statutoryMarginConsumer?: string;\n lumpSum40Enabled?: boolean;\n emailEnabled?: boolean;\n emailFromName?: string | null;\n emailReplyToAddress?: string | null;\n emailSubjectLevel0?: string | null;\n emailBodyLevel0?: string | null;\n emailSubjectLevel1?: string | null;\n emailBodyLevel1?: string | null;\n emailSubjectLevel2?: string | null;\n emailBodyLevel2?: string | null;\n emailSubjectLevel3?: string | null;\n emailBodyLevel3?: string | null;\n};\nexport type InvoiceDunningUpdateSettingsResponseData = {\n id: number;\n managingCompanyId: number;\n isEnabled: boolean;\n reminderEnabled: boolean;\n reminderAfterDays: number;\n level1AfterDays: number;\n level2AfterDays: number;\n level3AfterDays: number;\n feeLevel1: string;\n feeLevel2: string;\n feeLevel3: string;\n interestEnabled: boolean;\n baseRate: string;\n statutoryMarginB2B: string;\n statutoryMarginConsumer: string;\n lumpSum40Enabled: boolean;\n emailEnabled: boolean;\n emailFromName: string | null;\n emailReplyToAddress: string | null;\n emailSubjectLevel0: string | null;\n emailBodyLevel0: string | null;\n emailSubjectLevel1: string | null;\n emailBodyLevel1: string | null;\n emailSubjectLevel2: string | null;\n emailBodyLevel2: string | null;\n emailSubjectLevel3: string | null;\n emailBodyLevel3: string | null;\n};\nexport type InvoiceDunningUpdateSettingsResponse = import(\"../types\").ApiEnvelope<InvoiceDunningUpdateSettingsResponseData>;\n\nexport type InvoicesViewPdfParams = {\n invoiceId: number;\n};\nexport type InvoicesViewPdfQuery = {\n token: string;\n};\nexport type InvoicesViewPdfBody = undefined;\nexport type InvoicesViewPdfResponseData = Blob;\nexport type InvoicesViewPdfResponse = Blob;\n\nexport type InvoicesDownloadPdfParams = {\n invoiceId: number;\n};\nexport type InvoicesDownloadPdfQuery = {\n token: string;\n};\nexport type InvoicesDownloadPdfBody = undefined;\nexport type InvoicesDownloadPdfResponseData = Blob;\nexport type InvoicesDownloadPdfResponse = Blob;\n\nexport type InvoicesCreateManualParams = undefined;\nexport type InvoicesCreateManualQuery = undefined;\nexport type InvoicesCreateManualBody = {\n companyId?: number | null;\n costCenterId?: number | null;\n paymentAccountId?: number | null;\n bankFallbackAccountId?: number | null;\n customerName?: string | null;\n customerStreet?: string | null;\n customerStreetNr?: string | null;\n customerZip?: string | null;\n customerCity?: string | null;\n customerCountry?: string | null;\n customerEmail?: string | null;\n customerPhone?: string | null;\n customerUstId?: string | null;\n invoiceDate: string;\n dueDate: string;\n performedAt?: string | null;\n currency: string;\n notes?: string | null;\n paymentTermsDays?: number | null;\n paymentTermsText?: string | null;\n earlyPaymentDiscountPercent?: number | null;\n earlyPaymentDiscountDays?: number | null;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n customVatRate?: number;\n vatOverrideReason?: string;\n lineItems: Array<{\n title: string;\n description?: string | null;\n quantity: number;\n unitPriceNet: string;\n itemType?: string | null;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n taxRate?: number;\n}>;\n language?: string;\n issueImmediately?: boolean;\n generatePdf?: boolean;\n quoteHash: string;\n quoteVersion: string;\n};\nexport type InvoicesCreateManualResponseData = { invoice: Invoice; documentId: number; pdfUrl: string };\nexport type InvoicesCreateManualResponse = import(\"../types\").ApiEnvelope<InvoicesCreateManualResponseData>;\n\nexport type InvoicesSearchParams = undefined;\nexport type InvoicesSearchQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n status?: string;\n companyId?: number;\n documentType?: string;\n invoiceDateFrom?: string;\n invoiceDateTo?: string;\n dueDateFrom?: string;\n dueDateTo?: string;\n minTotal?: string;\n maxTotal?: string;\n currency?: string;\n sortBy?: \"createdAt\" | \"invoiceDate\" | \"dueDate\" | \"totalAmount\";\n sortDir?: \"asc\" | \"desc\";\n};\nexport type InvoicesSearchBody = undefined;\nexport type InvoicesSearchResponseData = PaginatedResult<Invoice & { corrections: Array<Pick<Invoice, 'id'|'invoiceNumber'|'status'|'totalAmount'|'currency'|'invoiceDate'|'s3Key'|'publicShareToken'> & { documentType: 'credit_note'|'cancellation' }> }>;\nexport type InvoicesSearchResponse = import(\"../types\").ApiEnvelope<InvoicesSearchResponseData>;\n\nexport type InvoicesListPendingParams = undefined;\nexport type InvoicesListPendingQuery = {\n\n};\nexport type InvoicesListPendingBody = undefined;\nexport type InvoicesListPendingResponseData = { total: number; invoices: Array<{ invoice: Invoice; company: CustomerCompany | null }> };\nexport type InvoicesListPendingResponse = import(\"../types\").ApiEnvelope<InvoicesListPendingResponseData>;\n\nexport type InvoicesListOverdueParams = undefined;\nexport type InvoicesListOverdueQuery = {\n\n};\nexport type InvoicesListOverdueBody = undefined;\nexport type InvoicesListOverdueResponseData = { total: number; invoices: Array<{ invoice: Invoice; company: CustomerCompany | null; daysOverdue: number }> };\nexport type InvoicesListOverdueResponse = import(\"../types\").ApiEnvelope<InvoicesListOverdueResponseData>;\n\nexport type InvoicesAnalysisParams = {\n invoiceId: number;\n};\nexport type InvoicesAnalysisQuery = undefined;\nexport type InvoicesAnalysisBody = undefined;\nexport type InvoicesAnalysisResponseData = { invoice: Invoice; company: CustomerCompany | null; marginAnalysis: null };\nexport type InvoicesAnalysisResponse = import(\"../types\").ApiEnvelope<InvoicesAnalysisResponseData>;\n\nexport type InvoicesCreditNotePreviewParams = {\n invoiceId: number;\n};\nexport type InvoicesCreditNotePreviewQuery = undefined;\nexport type InvoicesCreditNotePreviewBody = {\n mode?: \"full\" | \"partial\";\n reason: string;\n issueDate?: string;\n documentType?: \"credit_note\" | \"cancellation\";\n lineItems?: Array<{\n title: string;\n description?: string | null;\n quantity: number;\n unitPriceNet: string;\n itemType?: string | null;\n sortOrder?: number;\n}>;\n};\nexport type InvoicesCreditNotePreviewResponseData = {\n documentType: \"credit_note\" | \"cancellation\";\n invoice: {\n managingCompanyId: number;\n costCenterId: number | null;\n companyId: number | null;\n invoiceDate: string;\n dueDate: string;\n performedAt: string | null;\n currency: string;\n netAmount: string;\n taxAmount: string;\n taxRate: string | null;\n totalAmount: string;\n vatTreatment: any;\n vatLegalRef: string | null;\n vatNote: string | null;\n vatCustom: any;\n notes: string | null;\n correctionReason: string;\n correctsInvoiceId: number;\n};\n lineItems: Array<{\n itemType: string;\n title: string;\n description: string | null;\n unitPriceNet: string;\n quantity: number;\n lineNetAmount: string;\n lineGrossAmount: string;\n taxRate: string;\n lineTaxAmount: string;\n sortOrder?: number | null;\n}>;\n originalInvoice: {\n id: number;\n invoiceNumber: string;\n invoiceDate: string;\n totalAmount: string;\n currency: string;\n status: string;\n};\n};\nexport type InvoicesCreditNotePreviewResponse = import(\"../types\").ApiEnvelope<InvoicesCreditNotePreviewResponseData>;\n\nexport type InvoicesCreditNoteIssueParams = {\n invoiceId: number;\n};\nexport type InvoicesCreditNoteIssueQuery = undefined;\nexport type InvoicesCreditNoteIssueBody = {\n mode?: \"full\" | \"partial\";\n reason: string;\n issueDate?: string;\n documentType?: \"credit_note\" | \"cancellation\";\n lineItems?: Array<{\n title: string;\n description?: string | null;\n quantity: number;\n unitPriceNet: string;\n itemType?: string | null;\n sortOrder?: number;\n}>;\n};\nexport type InvoicesCreditNoteIssueResponseData = { invoice: Invoice; documentId: number; pdfUrl: string; originalInvoiceId?: number | null };\nexport type InvoicesCreditNoteIssueResponse = import(\"../types\").ApiEnvelope<InvoicesCreditNoteIssueResponseData>;\n\nexport type InvoicesStatusPolicyParams = {\n invoiceId: number;\n};\nexport type InvoicesStatusPolicyQuery = undefined;\nexport type InvoicesStatusPolicyBody = undefined;\nexport type InvoicesStatusPolicyResponseData = {\n invoiceId: number;\n documentType: \"invoice\" | \"credit_note\" | \"cancellation\";\n currentStatus: \"draft\" | \"issued\" | \"paid\" | \"overdue\" | \"cancelled\";\n allowedNextStatuses: Array<\"draft\" | \"issued\" | \"paid\" | \"overdue\" | \"cancelled\">;\n locked: boolean;\n lockReason?: string | null;\n flags: {\n hasAnyCorrection: boolean;\n hasCancellation: boolean;\n};\n actions: {\n canSetDraft: boolean;\n canSetIssued: boolean;\n canSetPaid: boolean;\n canSetOverdue: boolean;\n canSetCancelled: boolean;\n};\n};\nexport type InvoicesStatusPolicyResponse = import(\"../types\").ApiEnvelope<InvoicesStatusPolicyResponseData>;\n\nexport type InvoicesPaymentReconciliationParams = {\n invoiceId: number;\n};\nexport type InvoicesPaymentReconciliationQuery = undefined;\nexport type InvoicesPaymentReconciliationBody = undefined;\nexport type InvoicesPaymentReconciliationResponseData = {\n invoiceId: number;\n invoiceTotal: number;\n settlementTotal: number;\n openAmount: number;\n status: \"draft\" | \"issued\" | \"paid\" | \"overdue\" | \"cancelled\";\n paidSource: string | null;\n state: \"fully_settled_and_paid\" | \"fully_settled_but_not_paid\" | \"open\" | \"paid_but_underallocated\" | \"paid_marked_without_full_settlement\";\n needsAttention: boolean;\n uiHintDe: string;\n};\nexport type InvoicesPaymentReconciliationResponse = import(\"../types\").ApiEnvelope<InvoicesPaymentReconciliationResponseData>;\n\nexport type InvoicesGetByIdParams = {\n invoiceId: number;\n};\nexport type InvoicesGetByIdQuery = undefined;\nexport type InvoicesGetByIdBody = undefined;\nexport type InvoicesGetByIdResponseData = Invoice;\nexport type InvoicesGetByIdResponse = import(\"../types\").ApiEnvelope<InvoicesGetByIdResponseData>;\n\nexport type InvoicesUpdateStatusParams = {\n invoiceId: number;\n};\nexport type InvoicesUpdateStatusQuery = undefined;\nexport type InvoicesUpdateStatusBody = {\n status: \"draft\" | \"issued\" | \"paid\" | \"overdue\" | \"cancelled\";\n receivedAt?: string;\n paymentMethod?: \"cash\" | \"other\";\n};\nexport type InvoicesUpdateStatusResponseData = Invoice;\nexport type InvoicesUpdateStatusResponse = import(\"../types\").ApiEnvelope<InvoicesUpdateStatusResponseData>;\n\nexport type InvoicesDeleteParams = {\n invoiceId: number;\n};\nexport type InvoicesDeleteQuery = undefined;\nexport type InvoicesDeleteBody = undefined;\nexport type InvoicesDeleteResponseData = null;\nexport type InvoicesDeleteResponse = import(\"../types\").ApiEnvelope<InvoicesDeleteResponseData>;\n\nexport type InvoicesRepairPdfParams = {\n invoiceId: number;\n};\nexport type InvoicesRepairPdfQuery = undefined;\nexport type InvoicesRepairPdfBody = undefined;\nexport type InvoicesRepairPdfResponseData = {\n alreadyHadPdf: boolean;\n documentId: number;\n pdfUrl: string;\n};\nexport type InvoicesRepairPdfResponse = import(\"../types\").ApiEnvelope<InvoicesRepairPdfResponseData>;\n\nexport const apiRoutes_invoices = {\n // Contract source: explicit\n \"invoice_dunning_suggestions\": {\n method: \"GET\",\n path: \"/invoices/dunning/suggestions\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\",\"dunning\"],\n summary: \"Mahn-Vorschläge ermitteln\",\n description: \"Liefert eine Liste von Mahn-Kandidaten (inkl. vorgeschlagenem Mahn-Level) für einen Stichtag. Es wird nichts versendet – nur Vorschläge für manuelles Mahnen. Bezahlt/draft/cancelled werden serverseitig ausgeschlossen.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoiceDunningSuggestionsParams;\n query: InvoiceDunningSuggestionsQuery;\n body: InvoiceDunningSuggestionsBody;\n response: InvoiceDunningSuggestionsResponse;\n responseData: InvoiceDunningSuggestionsResponseData;\n },\n },\n // Contract source: explicit\n \"invoice_dunning_list_notices\": {\n method: \"GET\",\n path: \"/invoices/dunning/:invoiceId/notices\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\",\"dunning\"],\n summary: \"Mahn-Verlauf einer Rechnung\",\n description: \"Gibt alle Mahnschreiben und Zahlungserinnerungen (inkl. level0) zu einer Rechnung zurück, chronologisch aufsteigend. Zahlungserinnerungen sind am Flag 'isPaymentReminder: true' erkennbar.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoiceDunningListNoticesParams;\n query: InvoiceDunningListNoticesQuery;\n body: InvoiceDunningListNoticesBody;\n response: InvoiceDunningListNoticesResponse;\n responseData: InvoiceDunningListNoticesResponseData;\n },\n },\n // Contract source: explicit\n \"invoice_dunning_preview\": {\n method: \"POST\",\n path: \"/invoices/dunning/:invoiceId/preview\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\",\"dunning\"],\n summary: \"Mahn-Vorschau berechnen\",\n description: \"Berechnet Gebühren/Zinsen/Lump-Sum usw. für eine konkrete Rechnung und einen Mahn-Level (oder lässt das System den Level vorschlagen). Es wird noch kein Mahnschreiben erstellt. Blockiert, wenn Rechnung bezahlt/nicht überfällig/offener Betrag=0 ist.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoiceDunningPreviewParams;\n query: InvoiceDunningPreviewQuery;\n body: InvoiceDunningPreviewBody;\n response: InvoiceDunningPreviewResponse;\n responseData: InvoiceDunningPreviewResponseData;\n },\n },\n // Contract source: explicit\n \"invoice_dunning_issue\": {\n method: \"POST\",\n path: \"/invoices/dunning/:invoiceId/issue\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\",\"dunning\"],\n summary: \"Mahnstufe ausstellen (manuell)\",\n description: \"Erstellt ein Mahnschreiben (Notice) für eine Rechnung auf Basis des gewählten Levels. Kein Auto-Sending; delivery=manual/email/letter wird nur als Metadatum erfasst. Blockiert, wenn Rechnung bezahlt/nicht überfällig/offener Betrag=0 ist.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoiceDunningIssueParams;\n query: InvoiceDunningIssueQuery;\n body: InvoiceDunningIssueBody;\n response: InvoiceDunningIssueResponse;\n responseData: InvoiceDunningIssueResponseData;\n },\n },\n // Contract source: explicit\n \"invoice_dunning_notice_pdf\": {\n method: \"GET\",\n path: \"/invoices/dunning/notices/:noticeId/pdf\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\",\"dunning\"],\n summary: \"Mahnschreiben-PDF anzeigen\",\n description: \"Streamt das PDF eines Mahnschreibens (Notice) inline (Binary, application/pdf).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoiceDunningNoticePdfParams;\n query: InvoiceDunningNoticePdfQuery;\n body: InvoiceDunningNoticePdfBody;\n response: InvoiceDunningNoticePdfResponse;\n responseData: InvoiceDunningNoticePdfResponseData;\n },\n },\n // Contract source: explicit\n \"invoice_dunning_notice_download\": {\n method: \"GET\",\n path: \"/invoices/dunning/notices/:noticeId/download\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\",\"dunning\"],\n summary: \"Mahnschreiben-PDF herunterladen\",\n description: \"Lädt das PDF eines Mahnschreibens (Notice) als Download herunter (Binary, application/pdf).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoiceDunningNoticeDownloadParams;\n query: InvoiceDunningNoticeDownloadQuery;\n body: InvoiceDunningNoticeDownloadBody;\n response: InvoiceDunningNoticeDownloadResponse;\n responseData: InvoiceDunningNoticeDownloadResponseData;\n },\n },\n // Contract source: explicit\n \"invoice_dunning_delete_notice\": {\n method: \"DELETE\",\n path: \"/invoices/dunning/:invoiceId/notices/:noticeId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\",\"dunning\"],\n summary: \"Mahnschreiben stornieren/löschen\",\n description: \"Löscht ein fehlerhaftes Mahnschreiben aus dem Verlauf und entfernt das zugehörige PDF aus dem Speicher.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoiceDunningDeleteNoticeParams;\n query: InvoiceDunningDeleteNoticeQuery;\n body: InvoiceDunningDeleteNoticeBody;\n response: InvoiceDunningDeleteNoticeResponse;\n responseData: InvoiceDunningDeleteNoticeResponseData;\n },\n },\n // Contract source: explicit\n \"invoice_dunning_get_settings\": {\n method: \"GET\",\n path: \"/invoices/dunning/settings\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\",\"dunning\"],\n summary: \"Mahnwesen-Einstellungen lesen\",\n description: \"Gibt die aktuellen Mahnwesen-Einstellungen für das Unternehmen zurück (z.B. Gebühren/Schwellwerte/Templates).\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoiceDunningGetSettingsParams;\n query: InvoiceDunningGetSettingsQuery;\n body: InvoiceDunningGetSettingsBody;\n response: InvoiceDunningGetSettingsResponse;\n responseData: InvoiceDunningGetSettingsResponseData;\n },\n },\n // Contract source: explicit\n \"invoice_dunning_update_settings\": {\n method: \"PUT\",\n path: \"/invoices/dunning/settings\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\",\"dunning\"],\n summary: \"Mahnwesen-Einstellungen aktualisieren\",\n description: \"Aktualisiert die Mahnwesen-Einstellungen. Validierung erfolgt per DTO; Rückgabe ist der aktualisierte Settings-Stand.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoiceDunningUpdateSettingsParams;\n query: InvoiceDunningUpdateSettingsQuery;\n body: InvoiceDunningUpdateSettingsBody;\n response: InvoiceDunningUpdateSettingsResponse;\n responseData: InvoiceDunningUpdateSettingsResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_view_pdf\": {\n method: \"GET\",\n path: \"/invoices/:invoiceId/pdf\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Rechnungs-PDF im Browser anzeigen\",\n description: \"Gibt das PDF der Rechnung als Binary-Stream zurück (Content-Type: application/pdf). Aktuell public – sollte langfristig durch Token/Signatur geschützt werden.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesViewPdfParams;\n query: InvoicesViewPdfQuery;\n body: InvoicesViewPdfBody;\n response: InvoicesViewPdfResponse;\n responseData: InvoicesViewPdfResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_download_pdf\": {\n method: \"GET\",\n path: \"/invoices/:invoiceId/download\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Rechnungs-PDF herunterladen\",\n description: \"Gibt das PDF der Rechnung als Download zurück (Binary). Aktuell public – sollte langfristig durch Token/Signatur geschützt werden.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesDownloadPdfParams;\n query: InvoicesDownloadPdfQuery;\n body: InvoicesDownloadPdfBody;\n response: InvoicesDownloadPdfResponse;\n responseData: InvoicesDownloadPdfResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_create_manual\": {\n method: \"POST\",\n path: \"/invoices/manual\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Manuelle Rechnung erstellen\",\n description: \"Erstellt eine neue Rechnung inkl. zugehörigem Dokument und liefert eine PDF-URL zurück. Validierung erfolgt via DTO; Auth: eingeloggter Benutzer.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoicesCreateManualParams;\n query: InvoicesCreateManualQuery;\n body: InvoicesCreateManualBody;\n response: InvoicesCreateManualResponse;\n responseData: InvoicesCreateManualResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_search\": {\n method: \"GET\",\n path: \"/invoices\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Rechnungen suchen/listen\",\n description: \"Paginierte Suche über Rechnungen. Standardmäßig werden nur Original-Rechnungen (documentType=invoice) paginiert; Korrekturdokumente (GS/ST) sind als corrections[] direkt auf der jeweiligen Rechnung eingebettet. Pagination-Limits gelten nur für Original-Rechnungen. Suche nach einer Korrekturnummer (z.B. 'GS-2026') liefert die zugehörige Original-Rechnung. Mit ?documentType=credit_note,cancellation kann ein flaches Listing nur der Korrekturdokumente abgerufen werden.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesSearchParams;\n query: InvoicesSearchQuery;\n body: InvoicesSearchBody;\n response: InvoicesSearchResponse;\n responseData: InvoicesSearchResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_list_pending\": {\n method: \"GET\",\n path: \"/invoices/pending\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Offene Rechnungen (pending) listen\",\n description: \"Liefert eine zusammengefasste Liste offener Rechnungen inkl. optionaler Company-Infos (für Buchhaltung/Backoffice). Keine Query-Parameter.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesListPendingParams;\n query: InvoicesListPendingQuery;\n body: InvoicesListPendingBody;\n response: InvoicesListPendingResponse;\n responseData: InvoicesListPendingResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_list_overdue\": {\n method: \"GET\",\n path: \"/invoices/overdue\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Überfällige Rechnungen listen\",\n description: \"Liefert überfällige Rechnungen inkl. daysOverdue (Tage überfällig) – für Mahnwesen/Monitoring. Keine Query-Parameter.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesListOverdueParams;\n query: InvoicesListOverdueQuery;\n body: InvoicesListOverdueBody;\n response: InvoicesListOverdueResponse;\n responseData: InvoicesListOverdueResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_analysis\": {\n method: \"GET\",\n path: \"/invoices/:invoiceId/analysis\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Rechnungs-Analyse abrufen\",\n description: \"Liefert Analyse-Informationen zur Rechnung (z.B. Company-Bezug; marginAnalysis aktuell null/placeholder). Für Buchhaltung/Backoffice.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesAnalysisParams;\n query: InvoicesAnalysisQuery;\n body: InvoicesAnalysisBody;\n response: InvoicesAnalysisResponse;\n responseData: InvoicesAnalysisResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_credit_note_preview\": {\n method: \"POST\",\n path: \"/invoices/:invoiceId/credit-note/preview\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Gutschrift-Vorschau (Credit Note) erstellen\",\n description: \"Erzeugt eine Vorschau für eine GoBD-konforme Gutschrift/Storno-Rechnung basierend auf einer bestehenden Rechnung. Es wird noch nichts persistiert. `issueDate` ist optional (wenn nicht angegeben, setzt der Server es auf 'jetzt' – Backdating nur innerhalb nicht gesperrter Perioden möglich).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoicesCreditNotePreviewParams;\n query: InvoicesCreditNotePreviewQuery;\n body: InvoicesCreditNotePreviewBody;\n response: InvoicesCreditNotePreviewResponse;\n responseData: InvoicesCreditNotePreviewResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_credit_note_issue\": {\n method: \"POST\",\n path: \"/invoices/:invoiceId/credit-note/issue\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Gutschrift ausstellen (Credit Note issue)\",\n description: \"Stellt eine GoBD-konforme Gutschrift/Storno-Rechnung aus, erzeugt Dokument + PDF und gibt die neue Rechnung zurück. `issueDate` ist optional (Default: Server-Zeitpunkt). Kann optional die OriginalInvoice referenzieren.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoicesCreditNoteIssueParams;\n query: InvoicesCreditNoteIssueQuery;\n body: InvoicesCreditNoteIssueBody;\n response: InvoicesCreditNoteIssueResponse;\n responseData: InvoicesCreditNoteIssueResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_status_policy\": {\n method: \"GET\",\n path: \"/invoices/:invoiceId/status-policy\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Erlaubte Status-Transitions (Policy) abrufen\",\n description: \"Gibt für eine Rechnung die erlaubten Statuswechsel/Actions zurück (State-Machine). Nutzt dieselben Regeln wie das Status-Update (inkl. Korrektur-/Storno-Logik und Buchhaltungs-Locks).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesStatusPolicyParams;\n query: InvoicesStatusPolicyQuery;\n body: InvoicesStatusPolicyBody;\n response: InvoicesStatusPolicyResponse;\n responseData: InvoicesStatusPolicyResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_payment_reconciliation\": {\n method: \"GET\",\n path: \"/invoices/:invoiceId/payment-reconciliation\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Abgleich Rechnung ↔ Zahlungszuordnungen\",\n description: \"Liefert Rechnungsbetrag, Summe der Zuordnungen (gleiche Logik wie Mahnung), offenen Betrag und einen klaren Status für die UI (ohne manuelle IDs). Hilft Inkonsistenzen zwischen Status „bezahlt“ und Bankzuordnung zu erkennen.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesPaymentReconciliationParams;\n query: InvoicesPaymentReconciliationQuery;\n body: InvoicesPaymentReconciliationBody;\n response: InvoicesPaymentReconciliationResponse;\n responseData: InvoicesPaymentReconciliationResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_get_by_id\": {\n method: \"GET\",\n path: \"/invoices/:invoiceId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Rechnung nach ID abrufen\",\n description: \"Liefert die Rechnung (DB-Daten) für eine Detailansicht. Für PDF bitte die PDF-Endpoints verwenden. Auth: eingeloggter Benutzer.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesGetByIdParams;\n query: InvoicesGetByIdQuery;\n body: InvoicesGetByIdBody;\n response: InvoicesGetByIdResponse;\n responseData: InvoicesGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_update_status\": {\n method: \"PUT\",\n path: \"/invoices/:invoiceId/status\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Rechnungsstatus ändern\",\n description: \"Ändert den Status einer Rechnung. Hinweis: 'cancelled' ist nur für Entwürfe (draft) gedacht. Für Korrekturen ausgestellter Rechnungen (GoBD-konform) bitte die Gutschrift/Storno-Endpoints verwenden; das wird serverseitig enforced. Auth: eingeloggter Benutzer. Eingabe wird per DTO validiert.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoicesUpdateStatusParams;\n query: InvoicesUpdateStatusQuery;\n body: InvoicesUpdateStatusBody;\n response: InvoicesUpdateStatusResponse;\n responseData: InvoicesUpdateStatusResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_delete\": {\n method: \"DELETE\",\n path: \"/invoices/:invoiceId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Rechnung löschen\",\n description: \"Löscht eine Rechnung (Server entscheidet über erlaubte Löschregeln). Auth: eingeloggter Benutzer.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesDeleteParams;\n query: InvoicesDeleteQuery;\n body: InvoicesDeleteBody;\n response: InvoicesDeleteResponse;\n responseData: InvoicesDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_repair_pdf\": {\n method: \"POST\",\n path: \"/invoices/:invoiceId/repair-pdf\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Fehlendes Rechnungs-PDF neu generieren\",\n description: \"Generiert das PDF für eine Rechnung neu, falls es fehlt. Erlaubte Zustände: issued, paid, overdue sowie alle Korrekturdokumente (credit_note, cancellation). Nicht erlaubt: draft (PDF wird erst beim Ausstellen erstellt) und cancelled. Idempotent – gibt zurück ob PDF bereits vorhanden war. Auth: eingeloggter Benutzer.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesRepairPdfParams;\n query: InvoicesRepairPdfQuery;\n body: InvoicesRepairPdfBody;\n response: InvoicesRepairPdfResponse;\n responseData: InvoicesRepairPdfResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { CustomerCompany, Invoice, PaginatedResult } from \"../../frontend-types\";\n\nexport type InvoicesPaymentEvidenceExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesPaymentEvidenceExternalQuery = undefined;\nexport type InvoicesPaymentEvidenceExternalBody = undefined;\nexport type InvoicesPaymentEvidenceExternalResponseData = {\n invoiceId: number;\n invoiceNumber: string;\n currency: string;\n invoiceStatus: string;\n paidSource: string | null;\n receivingAccountId: number | null;\n invoiceAmount: string;\n bankReceivedAmount: string;\n bankRefundedAmount: string;\n bankNetAmount: string;\n nonCashSettlementAmount: string;\n outstandingBankAmount: string;\n overpaidBankAmount: string;\n state: \"unpaid\" | \"partial\" | \"covered\" | \"overpaid\" | \"review_required\" | \"ineligible\";\n bankPaymentConfirmed: boolean;\n issues: Array<\"missing_receiving_account\" | \"invalid_invoice_amount\" | \"ineligible_invoice\" | \"missing_payment\" | \"wrong_account\" | \"currency_mismatch\" | \"invalid_amount\" | \"unsupported_source\" | \"invalid_direction\" | \"payment_overallocated\" | \"non_cash_settlement\" | \"status_without_bank_evidence\" | \"negative_bank_balance\">;\n bankAllocationIds: Array<number>;\n excludedAllocationIds: Array<number>;\n reversedAllocationCount: number;\n revision: string;\n observedAt: string;\n};\nexport type InvoicesPaymentEvidenceExternalResponse = import(\"../types\").ApiEnvelope<InvoicesPaymentEvidenceExternalResponseData>;\n\nexport type InvoicesSearchExternalParams = undefined;\nexport type InvoicesSearchExternalQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n status?: string;\n companyId?: number;\n documentType?: string;\n invoiceDateFrom?: string;\n invoiceDateTo?: string;\n dueDateFrom?: string;\n dueDateTo?: string;\n minTotal?: string;\n maxTotal?: string;\n currency?: string;\n sortBy?: \"createdAt\" | \"invoiceDate\" | \"dueDate\" | \"totalAmount\";\n sortDir?: \"asc\" | \"desc\";\n};\nexport type InvoicesSearchExternalBody = undefined;\nexport type InvoicesSearchExternalResponseData = PaginatedResult<Invoice>;\nexport type InvoicesSearchExternalResponse = import(\"../types\").ApiEnvelope<InvoicesSearchExternalResponseData>;\n\nexport type InvoicesPendingExternalParams = undefined;\nexport type InvoicesPendingExternalQuery = {\n\n};\nexport type InvoicesPendingExternalBody = undefined;\nexport type InvoicesPendingExternalResponseData = { total: number; invoices: Array<{ invoice: Invoice; company: CustomerCompany | null }> };\nexport type InvoicesPendingExternalResponse = import(\"../types\").ApiEnvelope<InvoicesPendingExternalResponseData>;\n\nexport type InvoicesOverdueExternalParams = undefined;\nexport type InvoicesOverdueExternalQuery = {\n\n};\nexport type InvoicesOverdueExternalBody = undefined;\nexport type InvoicesOverdueExternalResponseData = { total: number; invoices: Array<{ invoice: Invoice; company: CustomerCompany | null; daysOverdue: number }> };\nexport type InvoicesOverdueExternalResponse = import(\"../types\").ApiEnvelope<InvoicesOverdueExternalResponseData>;\n\nexport type InvoicesGetByIdExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesGetByIdExternalQuery = undefined;\nexport type InvoicesGetByIdExternalBody = undefined;\nexport type InvoicesGetByIdExternalResponseData = Invoice;\nexport type InvoicesGetByIdExternalResponse = import(\"../types\").ApiEnvelope<InvoicesGetByIdExternalResponseData>;\n\nexport type InvoicesStatusPolicyExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesStatusPolicyExternalQuery = undefined;\nexport type InvoicesStatusPolicyExternalBody = undefined;\nexport type InvoicesStatusPolicyExternalResponseData = {\n invoiceId: number;\n documentType: \"invoice\" | \"credit_note\" | \"cancellation\";\n currentStatus: \"draft\" | \"issued\" | \"paid\" | \"overdue\" | \"cancelled\";\n allowedNextStatuses: Array<\"draft\" | \"issued\" | \"paid\" | \"overdue\" | \"cancelled\">;\n locked: boolean;\n lockReason?: string | null;\n flags: {\n hasAnyCorrection: boolean;\n hasCancellation: boolean;\n};\n actions: {\n canSetDraft: boolean;\n canSetIssued: boolean;\n canSetPaid: boolean;\n canSetOverdue: boolean;\n canSetCancelled: boolean;\n};\n};\nexport type InvoicesStatusPolicyExternalResponse = import(\"../types\").ApiEnvelope<InvoicesStatusPolicyExternalResponseData>;\n\nexport type InvoicesViewPdfExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesViewPdfExternalQuery = undefined;\nexport type InvoicesViewPdfExternalBody = undefined;\nexport type InvoicesViewPdfExternalResponseData = Blob;\nexport type InvoicesViewPdfExternalResponse = Blob;\n\nexport type InvoicesDownloadPdfExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesDownloadPdfExternalQuery = undefined;\nexport type InvoicesDownloadPdfExternalBody = undefined;\nexport type InvoicesDownloadPdfExternalResponseData = Blob;\nexport type InvoicesDownloadPdfExternalResponse = Blob;\n\nexport type InvoicesCreateExternalParams = undefined;\nexport type InvoicesCreateExternalQuery = undefined;\nexport type InvoicesCreateExternalBody = {\n companyId?: number | null;\n costCenterId?: number | null;\n paymentAccountId?: number | null;\n bankFallbackAccountId?: number | null;\n customerName?: string | null;\n customerStreet?: string | null;\n customerStreetNr?: string | null;\n customerZip?: string | null;\n customerCity?: string | null;\n customerCountry?: string | null;\n customerEmail?: string | null;\n customerPhone?: string | null;\n customerUstId?: string | null;\n invoiceDate: string;\n dueDate: string;\n performedAt?: string | null;\n currency: string;\n notes?: string | null;\n paymentTermsDays?: number | null;\n paymentTermsText?: string | null;\n earlyPaymentDiscountPercent?: number | null;\n earlyPaymentDiscountDays?: number | null;\n paymentMethod?: string | null;\n paymentProvider?: string | null;\n paidAt?: string | null;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n customVatRate?: number;\n vatOverrideReason?: string;\n lineItems: Array<{\n title: string;\n description?: string | null;\n quantity: number;\n unitPriceNet: string;\n itemType?: string | null;\n sortOrder?: number;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n taxRate?: number;\n}>;\n language?: string;\n issueImmediately?: boolean;\n generatePdf?: boolean;\n quoteHash?: string;\n quoteVersion?: string;\n};\nexport type InvoicesCreateExternalResponseData = { invoice: Invoice; documentId: number | null; pdfUrl: string | null };\nexport type InvoicesCreateExternalResponse = import(\"../types\").ApiEnvelope<InvoicesCreateExternalResponseData>;\n\nexport type InvoicesUpdateStatusExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesUpdateStatusExternalQuery = undefined;\nexport type InvoicesUpdateStatusExternalBody = {\n status: \"draft\" | \"issued\" | \"paid\" | \"overdue\" | \"cancelled\";\n source?: \"api\" | \"sync\" | \"webhook\";\n paymentReference?: string;\n};\nexport type InvoicesUpdateStatusExternalResponseData = Invoice;\nexport type InvoicesUpdateStatusExternalResponse = import(\"../types\").ApiEnvelope<InvoicesUpdateStatusExternalResponseData>;\n\nexport type InvoicesCreditNotePreviewExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesCreditNotePreviewExternalQuery = undefined;\nexport type InvoicesCreditNotePreviewExternalBody = {\n mode?: \"full\" | \"partial\";\n reason: string;\n issueDate?: string;\n documentType?: \"credit_note\" | \"cancellation\";\n lineItems?: Array<{\n title: string;\n description?: string | null;\n quantity: number;\n unitPriceNet: string;\n itemType?: string | null;\n sortOrder?: number;\n}>;\n};\nexport type InvoicesCreditNotePreviewExternalResponseData = {\n documentType: \"credit_note\" | \"cancellation\";\n invoice: {\n managingCompanyId: number;\n costCenterId: number | null;\n companyId: number | null;\n invoiceDate: string;\n dueDate: string;\n performedAt: string | null;\n currency: string;\n netAmount: string;\n taxAmount: string;\n taxRate: string | null;\n totalAmount: string;\n vatTreatment: any;\n vatLegalRef: string | null;\n vatNote: string | null;\n vatCustom: any;\n notes: string | null;\n correctionReason: string;\n correctsInvoiceId: number;\n};\n lineItems: Array<{\n itemType: string;\n title: string;\n description: string | null;\n unitPriceNet: string;\n quantity: number;\n lineNetAmount: string;\n lineGrossAmount: string;\n taxRate: string;\n lineTaxAmount: string;\n sortOrder?: number | null;\n}>;\n originalInvoice: {\n id: number;\n invoiceNumber: string;\n invoiceDate: string;\n totalAmount: string;\n currency: string;\n status: string;\n};\n};\nexport type InvoicesCreditNotePreviewExternalResponse = import(\"../types\").ApiEnvelope<InvoicesCreditNotePreviewExternalResponseData>;\n\nexport type InvoicesCreditNoteIssueExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesCreditNoteIssueExternalQuery = undefined;\nexport type InvoicesCreditNoteIssueExternalBody = {\n mode?: \"full\" | \"partial\";\n reason: string;\n issueDate?: string;\n documentType?: \"credit_note\" | \"cancellation\";\n lineItems?: Array<{\n title: string;\n description?: string | null;\n quantity: number;\n unitPriceNet: string;\n itemType?: string | null;\n sortOrder?: number;\n}>;\n};\nexport type InvoicesCreditNoteIssueExternalResponseData = { invoice: Invoice; documentId: number; pdfUrl: string; originalInvoiceId: number };\nexport type InvoicesCreditNoteIssueExternalResponse = import(\"../types\").ApiEnvelope<InvoicesCreditNoteIssueExternalResponseData>;\n\nexport type InvoicesSendEmailExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesSendEmailExternalQuery = undefined;\nexport type InvoicesSendEmailExternalBody = {\n to: string;\n subject?: string;\n body?: string;\n replyTo?: string;\n};\nexport type InvoicesSendEmailExternalResponseData = { messageId: string; invoiceNumber: string; recipient: string; sentAt: string };\nexport type InvoicesSendEmailExternalResponse = import(\"../types\").ApiEnvelope<InvoicesSendEmailExternalResponseData>;\n\nexport type InvoicesDeleteExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesDeleteExternalQuery = undefined;\nexport type InvoicesDeleteExternalBody = undefined;\nexport type InvoicesDeleteExternalResponseData = null;\nexport type InvoicesDeleteExternalResponse = import(\"../types\").ApiEnvelope<InvoicesDeleteExternalResponseData>;\n\nexport const apiRoutes_invoices_external = {\n // Contract source: explicit\n \"invoices_payment_evidence_external\": {\n method: \"GET\",\n path: \"/invoices/external/:invoiceId/payment-evidence\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Read bank payment evidence for an invoice\",\n description: \"Consistent read-only snapshot of imported bank payments and refunds. Separates cash from discounts, writeoffs and manual paid marks. Decimal amounts are strings. bankPaymentConfirmed requires full matching-account/currency bank coverage without unresolved issues. revision is a content digest, not an ordered event version. No bank import or payment is initiated.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesPaymentEvidenceExternalParams;\n query: InvoicesPaymentEvidenceExternalQuery;\n body: InvoicesPaymentEvidenceExternalBody;\n response: InvoicesPaymentEvidenceExternalResponse;\n responseData: InvoicesPaymentEvidenceExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_search_external\": {\n method: \"GET\",\n path: \"/invoices/external\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Search invoices (external API)\",\n description: \"Paginated search over invoices. Cost center filtering is applied per token permissions. managingCompanyId is derived from the auth token.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesSearchExternalParams;\n query: InvoicesSearchExternalQuery;\n body: InvoicesSearchExternalBody;\n response: InvoicesSearchExternalResponse;\n responseData: InvoicesSearchExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_pending_external\": {\n method: \"GET\",\n path: \"/invoices/external/pending\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"List pending invoices (external API)\",\n description: \"Returns a list of open/pending invoices with optional company information. Useful for monitoring outstanding receivables.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesPendingExternalParams;\n query: InvoicesPendingExternalQuery;\n body: InvoicesPendingExternalBody;\n response: InvoicesPendingExternalResponse;\n responseData: InvoicesPendingExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_overdue_external\": {\n method: \"GET\",\n path: \"/invoices/external/overdue\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"List overdue invoices (external API)\",\n description: \"Returns overdue invoices sorted by days overdue (most overdue first). Includes daysOverdue calculation and optional company information. Essential for dunning workflows.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesOverdueExternalParams;\n query: InvoicesOverdueExternalQuery;\n body: InvoicesOverdueExternalBody;\n response: InvoicesOverdueExternalResponse;\n responseData: InvoicesOverdueExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_get_by_id_external\": {\n method: \"GET\",\n path: \"/invoices/external/:invoiceId\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Get invoice by ID (external API)\",\n description: \"Returns a single invoice by ID. Cost center access is validated against the token permissions.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesGetByIdExternalParams;\n query: InvoicesGetByIdExternalQuery;\n body: InvoicesGetByIdExternalBody;\n response: InvoicesGetByIdExternalResponse;\n responseData: InvoicesGetByIdExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_status_policy_external\": {\n method: \"GET\",\n path: \"/invoices/external/:invoiceId/status-policy\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Get allowed status transitions (external API)\",\n description: \"Returns the state machine for allowed invoice status changes. Useful for external apps to know which transitions are valid before calling the status update endpoint.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesStatusPolicyExternalParams;\n query: InvoicesStatusPolicyExternalQuery;\n body: InvoicesStatusPolicyExternalBody;\n response: InvoicesStatusPolicyExternalResponse;\n responseData: InvoicesStatusPolicyExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_view_pdf_external\": {\n method: \"GET\",\n path: \"/invoices/external/:invoiceId/pdf\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"View invoice PDF (external API)\",\n description: \"Streams the invoice PDF inline (Content-Type: application/pdf). Auth-protected via API Key or OAuth2 – no public share token needed.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesViewPdfExternalParams;\n query: InvoicesViewPdfExternalQuery;\n body: InvoicesViewPdfExternalBody;\n response: InvoicesViewPdfExternalResponse;\n responseData: InvoicesViewPdfExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_download_pdf_external\": {\n method: \"GET\",\n path: \"/invoices/external/:invoiceId/download\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Download invoice PDF (external API)\",\n description: \"Downloads the invoice PDF as attachment (Content-Disposition: attachment). Auth-protected via API Key or OAuth2.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesDownloadPdfExternalParams;\n query: InvoicesDownloadPdfExternalQuery;\n body: InvoicesDownloadPdfExternalBody;\n response: InvoicesDownloadPdfExternalResponse;\n responseData: InvoicesDownloadPdfExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_create_external\": {\n method: \"POST\",\n path: \"/invoices/external\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"invoices:write\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Create invoice (external API)\",\n description: \"Creates a new invoice via API Key or OAuth2. managingCompanyId is derived from the auth token. Includes full line item support, VAT calculation, and optional PDF generation.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoicesCreateExternalParams;\n query: InvoicesCreateExternalQuery;\n body: InvoicesCreateExternalBody;\n response: InvoicesCreateExternalResponse;\n responseData: InvoicesCreateExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_update_status_external\": {\n method: \"PUT\",\n path: \"/invoices/external/:invoiceId/status\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"invoices:write\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Update invoice status (external API)\",\n description: \"Changes invoice status (e.g., mark as paid). State machine rules are enforced server-side. GoBD-safe: issued invoices cannot be cancelled directly; use credit note/cancellation endpoints instead.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoicesUpdateStatusExternalParams;\n query: InvoicesUpdateStatusExternalQuery;\n body: InvoicesUpdateStatusExternalBody;\n response: InvoicesUpdateStatusExternalResponse;\n responseData: InvoicesUpdateStatusExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_credit_note_preview_external\": {\n method: \"POST\",\n path: \"/invoices/external/:invoiceId/credit-note/preview\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"invoices:write\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Preview credit note (external API)\",\n description: \"GoBD-compliant credit note preview. Returns computed amounts without persisting. Use this before issuing to validate the correction.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoicesCreditNotePreviewExternalParams;\n query: InvoicesCreditNotePreviewExternalQuery;\n body: InvoicesCreditNotePreviewExternalBody;\n response: InvoicesCreditNotePreviewExternalResponse;\n responseData: InvoicesCreditNotePreviewExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_credit_note_issue_external\": {\n method: \"POST\",\n path: \"/invoices/external/:invoiceId/credit-note/issue\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"invoices:publish\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Issue credit note (external API)\",\n description: \"Issues a GoBD-compliant credit note or cancellation invoice. Generates PDF and creates an immutable document. Returns the new correction invoice.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoicesCreditNoteIssueExternalParams;\n query: InvoicesCreditNoteIssueExternalQuery;\n body: InvoicesCreditNoteIssueExternalBody;\n response: InvoicesCreditNoteIssueExternalResponse;\n responseData: InvoicesCreditNoteIssueExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_send_email_external\": {\n method: \"POST\",\n path: \"/invoices/external/:invoiceId/send-email\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"invoices:write\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Send invoice via email (external API)\",\n description: \"Sends the invoice PDF as email attachment to the specified recipient. Invoice must be in 'issued' status and have a generated PDF. Reply-To defaults to the managing company's email address (multi-company safe). Subject/body support placeholders: {{invoiceNumber}}, {{dueDate}}, {{totalAmount}}, {{currency}}, {{customerName}}.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoicesSendEmailExternalParams;\n query: InvoicesSendEmailExternalQuery;\n body: InvoicesSendEmailExternalBody;\n response: InvoicesSendEmailExternalResponse;\n responseData: InvoicesSendEmailExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_delete_external\": {\n method: \"DELETE\",\n path: \"/invoices/external/:invoiceId\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"admin\",\"scopes\":[\"invoices:delete\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Delete invoice (external API)\",\n description: \"Deletes a draft invoice and its associated documents. Only invoices in 'draft' status can be deleted. Issued/paid invoices must be corrected via credit note/cancellation.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesDeleteExternalParams;\n query: InvoicesDeleteExternalQuery;\n body: InvoicesDeleteExternalBody;\n response: InvoicesDeleteExternalResponse;\n responseData: InvoicesDeleteExternalResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { AppLog, PaginatedResult } from \"../../frontend-types\";\n\nexport type LogsSearchParams = undefined;\nexport type LogsSearchQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n level?: \"debug\" | \"info\" | \"warn\" | \"error\";\n dateFrom?: string;\n dateTo?: string;\n};\nexport type LogsSearchBody = undefined;\nexport type LogsSearchResponseData = { logs: PaginatedResult<AppLog>; canDelete: boolean };\nexport type LogsSearchResponse = import(\"../types\").ApiEnvelope<LogsSearchResponseData>;\n\nexport type LogsDeleteParams = {\n logId: number;\n};\nexport type LogsDeleteQuery = undefined;\nexport type LogsDeleteBody = undefined;\nexport type LogsDeleteResponseData = null;\nexport type LogsDeleteResponse = import(\"../types\").ApiEnvelope<LogsDeleteResponseData>;\n\nexport type LogsDeleteBulkParams = {\n logIds: string;\n};\nexport type LogsDeleteBulkQuery = undefined;\nexport type LogsDeleteBulkBody = undefined;\nexport type LogsDeleteBulkResponseData = null;\nexport type LogsDeleteBulkResponse = import(\"../types\").ApiEnvelope<LogsDeleteBulkResponseData>;\n\nexport const apiRoutes_logs = {\n // Contract source: explicit\n \"logs_search\": {\n method: \"GET\",\n path: \"/app-logs/search\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"log_view\"},\n meta: {\n tags: [\"logs\"],\n summary: \"Search logs\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: LogsSearchParams;\n query: LogsSearchQuery;\n body: LogsSearchBody;\n response: LogsSearchResponse;\n responseData: LogsSearchResponseData;\n },\n },\n // Contract source: explicit\n \"logs_delete\": {\n method: \"DELETE\",\n path: \"/app-logs/delete/:logId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"log_delete\"},\n meta: {\n tags: [\"logs\"],\n summary: \"Delete one log\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: LogsDeleteParams;\n query: LogsDeleteQuery;\n body: LogsDeleteBody;\n response: LogsDeleteResponse;\n responseData: LogsDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"logs_delete_bulk\": {\n method: \"DELETE\",\n path: \"/app-logs/delete/mass/:logIds\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"log_delete\"},\n meta: {\n tags: [\"logs\"],\n summary: \"Delete multiple logs\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: LogsDeleteBulkParams;\n query: LogsDeleteBulkQuery;\n body: LogsDeleteBulkBody;\n response: LogsDeleteBulkResponse;\n responseData: LogsDeleteBulkResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { CompanyCostCenter, CompanyUserAssignment, CompanyUserInvite, FullSelectedCompany, ManagingCompany, PaginatedResult, UnsensitiveCompanyApiKey, UserSelectedCompany, VatSettings } from \"../../frontend-types\";\n\nexport type ManagingCompaniesUserAssignmentsAssignParams = undefined;\nexport type ManagingCompaniesUserAssignmentsAssignQuery = undefined;\nexport type ManagingCompaniesUserAssignmentsAssignBody = {\n companyId: number;\n email: string;\n validFrom?: string;\n validTo?: string | null;\n role: \"admin\" | \"editor\" | \"viewer\";\n companyRole?: string | null;\n costCenters?: Array<number>;\n};\nexport type ManagingCompaniesUserAssignmentsAssignResponseData = { type: \"invite\"; inviteId: number };\nexport type ManagingCompaniesUserAssignmentsAssignResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesUserAssignmentsAssignResponseData>;\n\nexport type ManagingCompaniesUserAssignmentsRevokeParams = undefined;\nexport type ManagingCompaniesUserAssignmentsRevokeQuery = undefined;\nexport type ManagingCompaniesUserAssignmentsRevokeBody = {\n userId: number;\n companyId: number;\n};\nexport type ManagingCompaniesUserAssignmentsRevokeResponseData = CompanyUserAssignment | null;\nexport type ManagingCompaniesUserAssignmentsRevokeResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesUserAssignmentsRevokeResponseData>;\n\nexport type ManagingCompaniesUserAssignmentsUpdateParams = {\n assignmentId: number;\n};\nexport type ManagingCompaniesUserAssignmentsUpdateQuery = undefined;\nexport type ManagingCompaniesUserAssignmentsUpdateBody = {\n validTo?: string | null;\n companyRole?: string | null;\n role?: \"admin\" | \"editor\" | \"viewer\";\n};\nexport type ManagingCompaniesUserAssignmentsUpdateResponseData = CompanyUserAssignment | null;\nexport type ManagingCompaniesUserAssignmentsUpdateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesUserAssignmentsUpdateResponseData>;\n\nexport type ManagingCompaniesUserAssignmentsCostCentersAddParams = undefined;\nexport type ManagingCompaniesUserAssignmentsCostCentersAddQuery = undefined;\nexport type ManagingCompaniesUserAssignmentsCostCentersAddBody = {\n userId: number;\n companyId: number;\n costCenterIds: Array<number> | number;\n};\nexport type ManagingCompaniesUserAssignmentsCostCentersAddResponseData = Array<CompanyUserAssignment>;\nexport type ManagingCompaniesUserAssignmentsCostCentersAddResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesUserAssignmentsCostCentersAddResponseData>;\n\nexport type ManagingCompaniesUserAssignmentsCostCentersRemoveParams = undefined;\nexport type ManagingCompaniesUserAssignmentsCostCentersRemoveQuery = undefined;\nexport type ManagingCompaniesUserAssignmentsCostCentersRemoveBody = {\n userId: number;\n companyId: number;\n costCenterIds: Array<number> | number;\n};\nexport type ManagingCompaniesUserAssignmentsCostCentersRemoveResponseData = Array<CompanyUserAssignment>;\nexport type ManagingCompaniesUserAssignmentsCostCentersRemoveResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesUserAssignmentsCostCentersRemoveResponseData>;\n\nexport type ManagingCompaniesUserAssignmentsListParams = {\n companyId: number;\n};\nexport type ManagingCompaniesUserAssignmentsListQuery = {\n active?: boolean;\n search?: string;\n page?: number;\n pageSize?: number;\n};\nexport type ManagingCompaniesUserAssignmentsListBody = undefined;\nexport type ManagingCompaniesUserAssignmentsListResponseData = PaginatedResult<CompanyUserAssignment & { user?: { firstName: string | null; lastName: string | null; email: string | null } }>;\nexport type ManagingCompaniesUserAssignmentsListResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesUserAssignmentsListResponseData>;\n\nexport type ManagingCompaniesCostCentersCreateParams = undefined;\nexport type ManagingCompaniesCostCentersCreateQuery = undefined;\nexport type ManagingCompaniesCostCentersCreateBody = {\n managingCompanyId: number;\n name: string;\n description?: string | null;\n code: string;\n isArchived?: boolean;\n colour?: string | null;\n icon?: string | null;\n invoiceLayoutVariant?: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\" | null;\n sortOrder?: number | null;\n sortByOrder?: boolean;\n};\nexport type ManagingCompaniesCostCentersCreateResponseData = CompanyCostCenter;\nexport type ManagingCompaniesCostCentersCreateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersCreateResponseData>;\n\nexport type ManagingCompaniesCostCentersMyParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesCostCentersMyQuery = undefined;\nexport type ManagingCompaniesCostCentersMyBody = undefined;\nexport type ManagingCompaniesCostCentersMyResponseData = Array<CompanyCostCenter>;\nexport type ManagingCompaniesCostCentersMyResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersMyResponseData>;\n\nexport type ManagingCompaniesCostCentersByIdParams = {\n id: number;\n};\nexport type ManagingCompaniesCostCentersByIdQuery = undefined;\nexport type ManagingCompaniesCostCentersByIdBody = undefined;\nexport type ManagingCompaniesCostCentersByIdResponseData = CompanyCostCenter;\nexport type ManagingCompaniesCostCentersByIdResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersByIdResponseData>;\n\nexport type ManagingCompaniesCostCentersLogosSettingsParams = {\n id: number;\n};\nexport type ManagingCompaniesCostCentersLogosSettingsQuery = undefined;\nexport type ManagingCompaniesCostCentersLogosSettingsBody = undefined;\nexport type ManagingCompaniesCostCentersLogosSettingsResponseData = {\n whiteLogoKey: string | null;\n darkLogoKey: string | null;\n invoiceLogoMode: string;\n companyInvoiceLayoutVariant: string;\n costCenterInvoiceLayoutVariant: string | null;\n effectiveInvoiceLayoutVariant: string;\n};\nexport type ManagingCompaniesCostCentersLogosSettingsResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersLogosSettingsResponseData>;\n\nexport type ManagingCompaniesCostCentersLogosUploadParams = {\n id: number;\n mode: \"white\" | \"dark\";\n};\nexport type ManagingCompaniesCostCentersLogosUploadQuery = undefined;\nexport type ManagingCompaniesCostCentersLogosUploadBody = undefined;\nexport type ManagingCompaniesCostCentersLogosUploadResponseData = {\n whiteLogoKey: string | null;\n darkLogoKey: string | null;\n invoiceLogoMode: string;\n companyInvoiceLayoutVariant: string;\n costCenterInvoiceLayoutVariant: string | null;\n effectiveInvoiceLayoutVariant: string;\n};\nexport type ManagingCompaniesCostCentersLogosUploadResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersLogosUploadResponseData>;\n\nexport type ManagingCompaniesCostCentersLogosDeleteParams = {\n id: number;\n mode: \"white\" | \"dark\";\n};\nexport type ManagingCompaniesCostCentersLogosDeleteQuery = undefined;\nexport type ManagingCompaniesCostCentersLogosDeleteBody = undefined;\nexport type ManagingCompaniesCostCentersLogosDeleteResponseData = {\n whiteLogoKey: string | null;\n darkLogoKey: string | null;\n invoiceLogoMode: string;\n companyInvoiceLayoutVariant: string;\n costCenterInvoiceLayoutVariant: string | null;\n effectiveInvoiceLayoutVariant: string;\n};\nexport type ManagingCompaniesCostCentersLogosDeleteResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersLogosDeleteResponseData>;\n\nexport type ManagingCompaniesCostCentersLogosUrlsParams = {\n id: number;\n};\nexport type ManagingCompaniesCostCentersLogosUrlsQuery = undefined;\nexport type ManagingCompaniesCostCentersLogosUrlsBody = undefined;\nexport type ManagingCompaniesCostCentersLogosUrlsResponseData = {\n whiteLogoUrl: string | null;\n darkLogoUrl: string | null;\n invoiceLogoMode: string;\n companyInvoiceLayoutVariant: string;\n costCenterInvoiceLayoutVariant: string | null;\n effectiveInvoiceLayoutVariant: string;\n};\nexport type ManagingCompaniesCostCentersLogosUrlsResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersLogosUrlsResponseData>;\n\nexport type ManagingCompaniesCostCentersByIdsParams = undefined;\nexport type ManagingCompaniesCostCentersByIdsQuery = {\n costCenterIds: Array<number>;\n};\nexport type ManagingCompaniesCostCentersByIdsBody = undefined;\nexport type ManagingCompaniesCostCentersByIdsResponseData = Array<CompanyCostCenter>;\nexport type ManagingCompaniesCostCentersByIdsResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersByIdsResponseData>;\n\nexport type ManagingCompaniesCostCentersUpdateParams = {\n id: number;\n};\nexport type ManagingCompaniesCostCentersUpdateQuery = undefined;\nexport type ManagingCompaniesCostCentersUpdateBody = {\n name?: string;\n description?: string | null;\n code?: string;\n isArchived?: boolean;\n colour?: string | null;\n icon?: string | null;\n invoiceLayoutVariant?: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\" | null;\n sortOrder?: number | null;\n sortByOrder?: boolean;\n};\nexport type ManagingCompaniesCostCentersUpdateResponseData = CompanyCostCenter;\nexport type ManagingCompaniesCostCentersUpdateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersUpdateResponseData>;\n\nexport type ManagingCompaniesCostCentersDeleteParams = {\n id: number;\n};\nexport type ManagingCompaniesCostCentersDeleteQuery = undefined;\nexport type ManagingCompaniesCostCentersDeleteBody = undefined;\nexport type ManagingCompaniesCostCentersDeleteResponseData = null;\nexport type ManagingCompaniesCostCentersDeleteResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersDeleteResponseData>;\n\nexport type ManagingCompaniesCostCentersListParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesCostCentersListQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n isArchived?: boolean;\n};\nexport type ManagingCompaniesCostCentersListBody = undefined;\nexport type ManagingCompaniesCostCentersListResponseData = PaginatedResult<CompanyCostCenter>;\nexport type ManagingCompaniesCostCentersListResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersListResponseData>;\n\nexport type ManagingCompaniesSelectedSetParams = {\n companyId: number;\n};\nexport type ManagingCompaniesSelectedSetQuery = undefined;\nexport type ManagingCompaniesSelectedSetBody = undefined;\nexport type ManagingCompaniesSelectedSetResponseData = UserSelectedCompany;\nexport type ManagingCompaniesSelectedSetResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesSelectedSetResponseData>;\n\nexport type ManagingCompaniesSelectedCurrentParams = undefined;\nexport type ManagingCompaniesSelectedCurrentQuery = {\n\n};\nexport type ManagingCompaniesSelectedCurrentBody = undefined;\nexport type ManagingCompaniesSelectedCurrentResponseData = FullSelectedCompany | null;\nexport type ManagingCompaniesSelectedCurrentResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesSelectedCurrentResponseData>;\n\nexport type ManagingCompaniesVatSettingsGetParams = {\n companyId: number;\n};\nexport type ManagingCompaniesVatSettingsGetQuery = undefined;\nexport type ManagingCompaniesVatSettingsGetBody = undefined;\nexport type ManagingCompaniesVatSettingsGetResponseData = VatSettings | null;\nexport type ManagingCompaniesVatSettingsGetResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesVatSettingsGetResponseData>;\n\nexport type ManagingCompaniesVatSettingsUpsertParams = {\n companyId: number;\n};\nexport type ManagingCompaniesVatSettingsUpsertQuery = undefined;\nexport type ManagingCompaniesVatSettingsUpsertBody = {\n managingCompanyId?: number;\n /** Besteuerungsverfahren: SOLL = Soll-Versteuerung (Rechnungsdatum), IST = Ist-Versteuerung (Zahlungseingang). Aenderung nur wenn steuerlich abgestimmt – hat Auswirkung auf UStVA-Zeitraum. */\n accountingMethod?: \"SOLL\" | \"IST\";\n /** UStVA-Meldepraeferenz: auto = vom System ermittelt, monthly/quarterly/annual = manuell festgelegt, none = keine automatische Meldung. */\n ustvaFilingPreference?: \"auto\" | \"monthly\" | \"quarterly\" | \"annual\" | \"none\";\n /** Freie Map fuer Steuerentscheidungen – NICHT direkt beschreiben, stattdessen PUT /decisions/:decisionKey nutzen. Dieser Weg ist unauditiert und ueberschreibt alle vorherigen Entscheidungen auf einmal. */\n taxDecisions?: Record<string, any>;\n};\nexport type ManagingCompaniesVatSettingsUpsertResponseData = VatSettings;\nexport type ManagingCompaniesVatSettingsUpsertResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesVatSettingsUpsertResponseData>;\n\nexport type ManagingCompaniesVatSettingsDecisionUpsertParams = {\n companyId: number;\n /** Eindeutiger Entscheidungsschluessel. Erlaubte Keys (Allowlist): 'vat.regime' (Werte: 'kleinunternehmer' | 'regelbesteuert'), 'vat.regime.auto_switch_consent' (Wert: { enabled: boolean } – opt-in fuer automatische Regime-Umstellung bei Grenz */\n decisionKey: string;\n};\nexport type ManagingCompaniesVatSettingsDecisionUpsertQuery = undefined;\nexport type ManagingCompaniesVatSettingsDecisionUpsertBody = {\n /** Der Entscheidungswert. Haengt vom decisionKey ab: vat.regime → { regime: 'kleinunternehmer' | 'regelbesteuert' } | vat.regime.auto_switch_consent → { enabled: true | false } (true = System darf bei §19-Grenzwert-Ueberschreitung automatisch */\n value: any;\n /** Optionale Begruendung/Notiz zur Entscheidung (z.B. 'Steuerberater-Empfehlung vom 01.01.2025'). Wird im Audit-Log gespeichert. */\n note?: string;\n /** ISO-Zeitstempel ab wann die Entscheidung gelten soll. Wenn nicht angegeben: sofort (Server-Zeitpunkt). Nur relevant fuer vat.regime – bestimmt ab welchem Datum das neue Regime im Buchungssystem gilt. */\n effectiveFrom?: string;\n /** Optionale strukturierte Zusatzdaten (z.B. { source: 'user_alert_click', alertKey: 'vat.threshold_exceeded' }). Nuetzlich fuer Analytics / Traceability woher die Entscheidung kam. */\n metadata?: Record<string, any>;\n};\nexport type ManagingCompaniesVatSettingsDecisionUpsertResponseData = { settings: VatSettings; decision: any; appliedRegimePeriod?: any };\nexport type ManagingCompaniesVatSettingsDecisionUpsertResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesVatSettingsDecisionUpsertResponseData>;\n\nexport type ManagingCompaniesVatSettingsTaxAlertsParams = {\n companyId: number;\n};\nexport type ManagingCompaniesVatSettingsTaxAlertsQuery = undefined;\nexport type ManagingCompaniesVatSettingsTaxAlertsBody = undefined;\nexport type ManagingCompaniesVatSettingsTaxAlertsResponseData = { activeCount: number; alerts: Array<{ key: string; severity: 'info'|'warning'|'critical'; title: string; message: string; active: boolean; triggerAmount?: number; requiredDecision: { decisionKey: string; currentValue: string; suggestedValue: string; endpoint: string } | null; metadata: Record<string, unknown> }> };\nexport type ManagingCompaniesVatSettingsTaxAlertsResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesVatSettingsTaxAlertsResponseData>;\n\nexport type ManagingCompaniesInvitesPendingUserParams = undefined;\nexport type ManagingCompaniesInvitesPendingUserQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n};\nexport type ManagingCompaniesInvitesPendingUserBody = undefined;\nexport type ManagingCompaniesInvitesPendingUserResponseData = PaginatedResult<CompanyUserInvite & { company: { id: number; companyName: string }; invitedByUser: { firstName: string | null; lastName: string | null; email: string | null } }>;\nexport type ManagingCompaniesInvitesPendingUserResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvitesPendingUserResponseData>;\n\nexport type ManagingCompaniesInvitesPendingCompanyParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvitesPendingCompanyQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n};\nexport type ManagingCompaniesInvitesPendingCompanyBody = undefined;\nexport type ManagingCompaniesInvitesPendingCompanyResponseData = PaginatedResult<CompanyUserInvite>;\nexport type ManagingCompaniesInvitesPendingCompanyResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvitesPendingCompanyResponseData>;\n\nexport type ManagingCompaniesInvitesPendingCompanyPreviewParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvitesPendingCompanyPreviewQuery = {\n token: string;\n};\nexport type ManagingCompaniesInvitesPendingCompanyPreviewBody = undefined;\nexport type ManagingCompaniesInvitesPendingCompanyPreviewResponseData = {\n companyName: string;\n companyLegalForm?: any | null;\n companyStreet?: string | null;\n companyStreetNr?: string | null;\n companyZip?: string | null;\n companyCity?: string | null;\n companyCountry?: string | null;\n companyEmail?: string | null;\n companyPhone?: string | null;\n companyWebsite?: string | null;\n companyManagingDirector?: string | null;\n};\nexport type ManagingCompaniesInvitesPendingCompanyPreviewResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvitesPendingCompanyPreviewResponseData>;\n\nexport type ManagingCompaniesInvitesAcceptParams = {\n token: string;\n};\nexport type ManagingCompaniesInvitesAcceptQuery = undefined;\nexport type ManagingCompaniesInvitesAcceptBody = undefined;\nexport type ManagingCompaniesInvitesAcceptResponseData = {\n success: boolean;\n assignmentId?: number;\n};\nexport type ManagingCompaniesInvitesAcceptResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvitesAcceptResponseData>;\n\nexport type ManagingCompaniesInvitesRejectParams = {\n token: string;\n};\nexport type ManagingCompaniesInvitesRejectQuery = undefined;\nexport type ManagingCompaniesInvitesRejectBody = undefined;\nexport type ManagingCompaniesInvitesRejectResponseData = null;\nexport type ManagingCompaniesInvitesRejectResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvitesRejectResponseData>;\n\nexport type ManagingCompaniesInvitesCancelParams = {\n inviteId: number;\n};\nexport type ManagingCompaniesInvitesCancelQuery = undefined;\nexport type ManagingCompaniesInvitesCancelBody = {\n companyId: number;\n};\nexport type ManagingCompaniesInvitesCancelResponseData = null;\nexport type ManagingCompaniesInvitesCancelResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvitesCancelResponseData>;\n\nexport type ManagingCompaniesApiKeysCreateParams = undefined;\nexport type ManagingCompaniesApiKeysCreateQuery = undefined;\nexport type ManagingCompaniesApiKeysCreateBody = {\n name: string;\n role: \"viewer\" | \"editor\" | \"admin\";\n defaultCostCenter?: number;\n availableCostCenters?: Array<number>;\n validFrom?: string;\n validTo?: string | null;\n};\nexport type ManagingCompaniesApiKeysCreateResponseData = { apiKey: UnsensitiveCompanyApiKey; plainTextKey: string };\nexport type ManagingCompaniesApiKeysCreateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesApiKeysCreateResponseData>;\n\nexport type ManagingCompaniesApiKeysUpdateParams = {\n apiKeyId: number;\n};\nexport type ManagingCompaniesApiKeysUpdateQuery = undefined;\nexport type ManagingCompaniesApiKeysUpdateBody = {\n name?: string;\n role?: \"viewer\" | \"editor\" | \"admin\";\n defaultCostCenter?: number;\n availableCostCenters?: Array<number>;\n validFrom?: string;\n validTo?: string | null;\n};\nexport type ManagingCompaniesApiKeysUpdateResponseData = UnsensitiveCompanyApiKey;\nexport type ManagingCompaniesApiKeysUpdateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesApiKeysUpdateResponseData>;\n\nexport type ManagingCompaniesApiKeysDeleteParams = {\n apiKeyId: number;\n};\nexport type ManagingCompaniesApiKeysDeleteQuery = undefined;\nexport type ManagingCompaniesApiKeysDeleteBody = undefined;\nexport type ManagingCompaniesApiKeysDeleteResponseData = null;\nexport type ManagingCompaniesApiKeysDeleteResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesApiKeysDeleteResponseData>;\n\nexport type ManagingCompaniesApiKeysRevokeParams = {\n apiKeyId: number;\n};\nexport type ManagingCompaniesApiKeysRevokeQuery = undefined;\nexport type ManagingCompaniesApiKeysRevokeBody = undefined;\nexport type ManagingCompaniesApiKeysRevokeResponseData = null;\nexport type ManagingCompaniesApiKeysRevokeResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesApiKeysRevokeResponseData>;\n\nexport type ManagingCompaniesApiKeysByIdParams = {\n apiKeyId: number;\n};\nexport type ManagingCompaniesApiKeysByIdQuery = undefined;\nexport type ManagingCompaniesApiKeysByIdBody = undefined;\nexport type ManagingCompaniesApiKeysByIdResponseData = UnsensitiveCompanyApiKey;\nexport type ManagingCompaniesApiKeysByIdResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesApiKeysByIdResponseData>;\n\nexport type ManagingCompaniesApiKeysListParams = undefined;\nexport type ManagingCompaniesApiKeysListQuery = {\n page?: number;\n pageSize?: number;\n};\nexport type ManagingCompaniesApiKeysListBody = undefined;\nexport type ManagingCompaniesApiKeysListResponseData = PaginatedResult<UnsensitiveCompanyApiKey>;\nexport type ManagingCompaniesApiKeysListResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesApiKeysListResponseData>;\n\nexport type ManagingCompaniesInvoiceLayoutsCatalogParams = undefined;\nexport type ManagingCompaniesInvoiceLayoutsCatalogQuery = {\n costCenterId?: number;\n};\nexport type ManagingCompaniesInvoiceLayoutsCatalogBody = undefined;\nexport type ManagingCompaniesInvoiceLayoutsCatalogResponseData = {\n defaultVariant: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n effectiveVariant: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n source: \"cost_center\" | \"company\" | \"system_default\";\n costCenterId: number | null;\n variants: Array<{\n id: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n name: string;\n previewTitle: string;\n description: string;\n preview: {\n accentColor: string;\n fontFamily: string;\n density: \"compact\" | \"comfortable\";\n visualStyle: string;\n};\n technical: {\n paperStandard: \"DIN 5008\";\n pageFormat: \"A4\";\n windowEnvelopeCompatible: boolean;\n renderEngine: \"@react-pdf/renderer\";\n eInvoice: {\n format: \"ZUGFeRD\";\n profileSupport: string;\n embedding: string;\n};\n};\n}>;\n eInvoice: {\n enabled: boolean;\n format: \"zugferd\" | null;\n defaultProfile: string | null;\n};\n};\nexport type ManagingCompaniesInvoiceLayoutsCatalogResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceLayoutsCatalogResponseData>;\n\nexport type ManagingCompaniesInvoiceLayoutsEffectiveParams = undefined;\nexport type ManagingCompaniesInvoiceLayoutsEffectiveQuery = {\n costCenterId?: number;\n};\nexport type ManagingCompaniesInvoiceLayoutsEffectiveBody = undefined;\nexport type ManagingCompaniesInvoiceLayoutsEffectiveResponseData = {\n managingCompanyId: number;\n costCenterId: number | null;\n companyVariant: string | null;\n costCenterVariant: string | null;\n effectiveVariant: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n source: \"cost_center\" | \"company\" | \"system_default\";\n layout: {\n id: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n name: string;\n previewTitle: string;\n description: string;\n preview: {\n accentColor: string;\n fontFamily: string;\n density: \"compact\" | \"comfortable\";\n visualStyle: string;\n};\n technical: {\n paperStandard: \"DIN 5008\";\n pageFormat: \"A4\";\n windowEnvelopeCompatible: boolean;\n renderEngine: \"@react-pdf/renderer\";\n eInvoice: {\n format: \"ZUGFeRD\";\n profileSupport: string;\n embedding: string;\n};\n};\n};\n eInvoice: {\n enabled: boolean;\n format: \"zugferd\" | null;\n defaultProfile: string | null;\n};\n};\nexport type ManagingCompaniesInvoiceLayoutsEffectiveResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceLayoutsEffectiveResponseData>;\n\nexport type ManagingCompaniesInvoiceLayoutsPreviewParams = undefined;\nexport type ManagingCompaniesInvoiceLayoutsPreviewQuery = {\n layoutVariant?: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n costCenterId?: number;\n language?: \"de\" | \"en\";\n};\nexport type ManagingCompaniesInvoiceLayoutsPreviewBody = undefined;\nexport type ManagingCompaniesInvoiceLayoutsPreviewResponseData = {\n requestedVariant: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n effectiveVariant: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n source: \"cost_center\" | \"company\" | \"system_default\";\n language: \"de\" | \"en\";\n s3Key: string;\n url: string;\n cached: boolean;\n expiresInSeconds: number;\n generatedAt: string;\n};\nexport type ManagingCompaniesInvoiceLayoutsPreviewResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceLayoutsPreviewResponseData>;\n\nexport type ManagingCompaniesInvoiceLayoutsPreviewsParams = undefined;\nexport type ManagingCompaniesInvoiceLayoutsPreviewsQuery = {\n costCenterId?: number;\n language?: \"de\" | \"en\";\n};\nexport type ManagingCompaniesInvoiceLayoutsPreviewsBody = undefined;\nexport type ManagingCompaniesInvoiceLayoutsPreviewsResponseData = {\n items: Array<{\n requestedVariant: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n effectiveVariant: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n source: \"cost_center\" | \"company\" | \"system_default\";\n language: \"de\" | \"en\";\n s3Key: string;\n url: string;\n cached: boolean;\n expiresInSeconds: number;\n generatedAt: string;\n}>;\n};\nexport type ManagingCompaniesInvoiceLayoutsPreviewsResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceLayoutsPreviewsResponseData>;\n\nexport type ManagingCompaniesInvoiceTransparencyContextParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvoiceTransparencyContextQuery = undefined;\nexport type ManagingCompaniesInvoiceTransparencyContextBody = undefined;\nexport type ManagingCompaniesInvoiceTransparencyContextResponseData = {\n asOf: string;\n managingCompany: {\n id: number;\n companyName: string;\n companyCountry: string | null;\n baseCurrency: string | null;\n};\n taxation: {\n regime: string | null;\n regimeValidFrom: string | null;\n regimeValidTo: string | null;\n regimeReason: string | null;\n decisionRequired: boolean;\n explicitRegimeDecision: any | null;\n shouldShowVatOnInvoices: boolean;\n defaultVatTreatmentHint: string | null;\n legalVatHint: {\n key: string;\n defaultMessage: string;\n params?: Record<string, string | number | boolean | null>;\n};\n thresholds: {\n kleinunternehmerGraceAmount: number;\n kleinunternehmerMaxAmount: number;\n};\n revenue: {\n currentYear: {\n year: number;\n amount: number;\n};\n previousYear: {\n year: number;\n amount: number;\n};\n};\n alerts: {\n activeCount: number;\n warnings: Array<{\n code: string;\n severity: \"info\" | \"warning\" | \"critical\";\n title: {\n key: string;\n defaultMessage: string;\n params?: Record<string, string | number | boolean | null>;\n};\n message: {\n key: string;\n defaultMessage: string;\n params?: Record<string, string | number | boolean | null>;\n};\n recommendation?: {\n key: string;\n defaultMessage: string;\n params?: Record<string, string | number | boolean | null>;\n} | null;\n metadata?: Record<string, any>;\n}>;\n};\n};\n invoiceDefaults: {\n defaultPaymentAccountId: number | null;\n defaultPaymentTermsDays: number | null;\n defaultPaymentTermsText: string | null;\n defaultEarlyPaymentDiscountPercent: number | null;\n defaultEarlyPaymentDiscountDays: number | null;\n availableProductTypes: Array<\"standard\" | \"reduced\" | \"custom\">;\n availableItemTypes: Array<{\n value: string;\n label: {\n key: string;\n defaultMessage: string;\n params?: Record<string, string | number | boolean | null>;\n};\n defaultProductType: \"standard\" | \"reduced\" | \"custom\";\n isSystem: boolean;\n}>;\n quotePolicy: {\n requiredOnManualCreate: boolean;\n supportedQuoteVersion: string;\n staleProtectionMode: \"strict\";\n};\n};\n};\nexport type ManagingCompaniesInvoiceTransparencyContextResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceTransparencyContextResponseData>;\n\nexport type ManagingCompaniesInvoiceTransparencyQuoteParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvoiceTransparencyQuoteQuery = undefined;\nexport type ManagingCompaniesInvoiceTransparencyQuoteBody = {\n companyId?: number | null;\n costCenterId?: number | null;\n paymentAccountId?: number | null;\n bankFallbackAccountId?: number | null;\n customerName?: string | null;\n customerStreet?: string | null;\n customerStreetNr?: string | null;\n customerZip?: string | null;\n customerCity?: string | null;\n customerCountry?: string | null;\n customerEmail?: string | null;\n customerPhone?: string | null;\n customerUstId?: string | null;\n invoiceDate: string;\n dueDate: string;\n performedAt?: string | null;\n currency: string;\n notes?: string | null;\n paymentTermsDays?: number | null;\n paymentTermsText?: string | null;\n earlyPaymentDiscountPercent?: number | null;\n earlyPaymentDiscountDays?: number | null;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n customVatRate?: number;\n vatOverrideReason?: string;\n lineItems: Array<{\n title: string;\n description?: string | null;\n quantity: number;\n unitPriceNet: string;\n itemType?: string | null;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n taxRate?: number;\n}>;\n language?: string;\n issueImmediately?: boolean;\n generatePdf?: boolean;\n quoteHash?: string;\n quoteVersion?: string;\n};\nexport type ManagingCompaniesInvoiceTransparencyQuoteResponseData = {\n quoteVersion: string;\n quoteHash: string;\n computedAt: string;\n totals: {\n net: number;\n tax: number;\n gross: number;\n currency: string;\n};\n vat: {\n requestedProductType: \"standard\" | \"reduced\" | \"custom\";\n effectiveTreatment: string;\n effectiveRate: number;\n legalReference: string | null;\n note: string | null;\n isMixedRates: boolean;\n};\n lineItems: Array<{\n index: number;\n title: string;\n quantity: number;\n unitPriceNet: number;\n netAmount: number;\n effectiveTaxRate: number;\n taxAmount: number;\n grossAmount: number;\n taxSource: {\n mode: \"invoice_default\" | \"line_item_standard\" | \"line_item_reduced\" | \"line_item_custom\" | \"kleinunternehmer_override\";\n reason: {\n key: string;\n defaultMessage: string;\n params?: Record<string, string | number | boolean | null>;\n};\n};\n}>;\n paymentResolution: {\n paymentAccountId: number | null;\n paymentAccountSource: \"input\" | \"cost_center\" | \"company_default\" | \"account_default\" | \"sole_active\" | \"none\";\n paymentTermsDays: number | null;\n paymentTermsText: string | null;\n earlyPaymentDiscountPercent: number | null;\n earlyPaymentDiscountDays: number | null;\n};\n warnings: Array<{\n code: string;\n severity: \"info\" | \"warning\" | \"critical\";\n title: {\n key: string;\n defaultMessage: string;\n params?: Record<string, string | number | boolean | null>;\n};\n message: {\n key: string;\n defaultMessage: string;\n params?: Record<string, string | number | boolean | null>;\n};\n recommendation?: {\n key: string;\n defaultMessage: string;\n params?: Record<string, string | number | boolean | null>;\n} | null;\n metadata?: Record<string, any>;\n}>;\n};\nexport type ManagingCompaniesInvoiceTransparencyQuoteResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceTransparencyQuoteResponseData>;\n\nexport type ManagingCompaniesItemTypeConfigsCreateParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesItemTypeConfigsCreateQuery = undefined;\nexport type ManagingCompaniesItemTypeConfigsCreateBody = {\n value: string;\n label: string;\n defaultProductType?: \"standard\" | \"reduced\" | \"custom\";\n sortOrder?: number;\n};\nexport type ManagingCompaniesItemTypeConfigsCreateResponseData = {\n id: number;\n managingCompanyId: number;\n value: string;\n label: string;\n defaultProductType: string;\n sortOrder: number;\n isArchived: boolean;\n createdAt: string;\n createdBy: number | null;\n};\nexport type ManagingCompaniesItemTypeConfigsCreateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesItemTypeConfigsCreateResponseData>;\n\nexport type ManagingCompaniesItemTypeConfigsUpdateParams = {\n managingCompanyId: number;\n value: string;\n};\nexport type ManagingCompaniesItemTypeConfigsUpdateQuery = undefined;\nexport type ManagingCompaniesItemTypeConfigsUpdateBody = {\n label?: string;\n defaultProductType?: \"standard\" | \"reduced\" | \"custom\";\n sortOrder?: number;\n};\nexport type ManagingCompaniesItemTypeConfigsUpdateResponseData = {\n id: number;\n managingCompanyId: number;\n value: string;\n label: string;\n defaultProductType: string;\n sortOrder: number;\n isArchived: boolean;\n createdAt: string;\n createdBy: number | null;\n};\nexport type ManagingCompaniesItemTypeConfigsUpdateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesItemTypeConfigsUpdateResponseData>;\n\nexport type ManagingCompaniesItemTypeConfigsArchiveParams = {\n managingCompanyId: number;\n value: string;\n};\nexport type ManagingCompaniesItemTypeConfigsArchiveQuery = undefined;\nexport type ManagingCompaniesItemTypeConfigsArchiveBody = undefined;\nexport type ManagingCompaniesItemTypeConfigsArchiveResponseData = {\n id: number;\n managingCompanyId: number;\n value: string;\n label: string;\n defaultProductType: string;\n sortOrder: number;\n isArchived: boolean;\n createdAt: string;\n createdBy: number | null;\n};\nexport type ManagingCompaniesItemTypeConfigsArchiveResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesItemTypeConfigsArchiveResponseData>;\n\nexport type ManagingCompaniesInvoiceTemplatesListParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvoiceTemplatesListQuery = {\n includeArchived?: boolean;\n search?: string;\n companyId?: number;\n page?: number;\n pageSize?: number;\n};\nexport type ManagingCompaniesInvoiceTemplatesListBody = undefined;\nexport type ManagingCompaniesInvoiceTemplatesListResponseData = {\n items: Array<{\n id: number;\n managingCompanyId: number;\n name: string;\n description: string | null;\n companyId: number | null;\n costCenterId: number | null;\n paymentAccountId: number | null;\n currency: string;\n language: string;\n productType: string;\n customVatRate: string | null;\n paymentTermsDays: number | null;\n paymentTermsText: string | null;\n earlyPaymentDiscountPercent: string | null;\n earlyPaymentDiscountDays: number | null;\n notes: string | null;\n lineItems: Array<{\n title: string;\n description?: string | null;\n unitPriceNet: string;\n defaultQuantity: number;\n itemType: string;\n productType: string;\n taxRate?: number;\n sortOrder: number;\n}>;\n isArchived: boolean;\n sortOrder: number;\n lastUsedAt: string | null;\n usageCount: number;\n createdAt: string;\n createdBy: number | null;\n updatedAt: string | null;\n updatedBy: number | null;\n}>;\n page: number;\n pageSize: number;\n total: number;\n totalPages: number;\n hasNextPage: boolean;\n hasPrevPage: boolean;\n};\nexport type ManagingCompaniesInvoiceTemplatesListResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceTemplatesListResponseData>;\n\nexport type ManagingCompaniesInvoiceTemplatesGetParams = {\n templateId: number;\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvoiceTemplatesGetQuery = undefined;\nexport type ManagingCompaniesInvoiceTemplatesGetBody = undefined;\nexport type ManagingCompaniesInvoiceTemplatesGetResponseData = {\n id: number;\n managingCompanyId: number;\n name: string;\n description: string | null;\n companyId: number | null;\n costCenterId: number | null;\n paymentAccountId: number | null;\n currency: string;\n language: string;\n productType: string;\n customVatRate: string | null;\n paymentTermsDays: number | null;\n paymentTermsText: string | null;\n earlyPaymentDiscountPercent: string | null;\n earlyPaymentDiscountDays: number | null;\n notes: string | null;\n lineItems: Array<{\n title: string;\n description?: string | null;\n unitPriceNet: string;\n defaultQuantity: number;\n itemType: string;\n productType: string;\n taxRate?: number;\n sortOrder: number;\n}>;\n isArchived: boolean;\n sortOrder: number;\n lastUsedAt: string | null;\n usageCount: number;\n createdAt: string;\n createdBy: number | null;\n updatedAt: string | null;\n updatedBy: number | null;\n};\nexport type ManagingCompaniesInvoiceTemplatesGetResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceTemplatesGetResponseData>;\n\nexport type ManagingCompaniesInvoiceTemplatesCreateParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvoiceTemplatesCreateQuery = undefined;\nexport type ManagingCompaniesInvoiceTemplatesCreateBody = {\n name: string;\n description?: string | null;\n companyId?: number | null;\n costCenterId?: number | null;\n paymentAccountId?: number | null;\n currency?: string;\n language?: string;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n customVatRate?: number | null;\n paymentTermsDays?: number | null;\n paymentTermsText?: string | null;\n earlyPaymentDiscountPercent?: number | null;\n earlyPaymentDiscountDays?: number | null;\n notes?: string | null;\n lineItems: Array<{\n title: string;\n description?: string | null;\n unitPriceNet: string;\n defaultQuantity?: number;\n itemType?: string;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n taxRate?: number;\n sortOrder?: number;\n}>;\n sortOrder?: number;\n};\nexport type ManagingCompaniesInvoiceTemplatesCreateResponseData = {\n id: number;\n managingCompanyId: number;\n name: string;\n description: string | null;\n companyId: number | null;\n costCenterId: number | null;\n paymentAccountId: number | null;\n currency: string;\n language: string;\n productType: string;\n customVatRate: string | null;\n paymentTermsDays: number | null;\n paymentTermsText: string | null;\n earlyPaymentDiscountPercent: string | null;\n earlyPaymentDiscountDays: number | null;\n notes: string | null;\n lineItems: Array<{\n title: string;\n description?: string | null;\n unitPriceNet: string;\n defaultQuantity: number;\n itemType: string;\n productType: string;\n taxRate?: number;\n sortOrder: number;\n}>;\n isArchived: boolean;\n sortOrder: number;\n lastUsedAt: string | null;\n usageCount: number;\n createdAt: string;\n createdBy: number | null;\n updatedAt: string | null;\n updatedBy: number | null;\n};\nexport type ManagingCompaniesInvoiceTemplatesCreateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceTemplatesCreateResponseData>;\n\nexport type ManagingCompaniesInvoiceTemplatesFromInvoiceParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvoiceTemplatesFromInvoiceQuery = undefined;\nexport type ManagingCompaniesInvoiceTemplatesFromInvoiceBody = {\n invoiceId: number;\n name: string;\n description?: string | null;\n};\nexport type ManagingCompaniesInvoiceTemplatesFromInvoiceResponseData = {\n id: number;\n managingCompanyId: number;\n name: string;\n description: string | null;\n companyId: number | null;\n costCenterId: number | null;\n paymentAccountId: number | null;\n currency: string;\n language: string;\n productType: string;\n customVatRate: string | null;\n paymentTermsDays: number | null;\n paymentTermsText: string | null;\n earlyPaymentDiscountPercent: string | null;\n earlyPaymentDiscountDays: number | null;\n notes: string | null;\n lineItems: Array<{\n title: string;\n description?: string | null;\n unitPriceNet: string;\n defaultQuantity: number;\n itemType: string;\n productType: string;\n taxRate?: number;\n sortOrder: number;\n}>;\n isArchived: boolean;\n sortOrder: number;\n lastUsedAt: string | null;\n usageCount: number;\n createdAt: string;\n createdBy: number | null;\n updatedAt: string | null;\n updatedBy: number | null;\n};\nexport type ManagingCompaniesInvoiceTemplatesFromInvoiceResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceTemplatesFromInvoiceResponseData>;\n\nexport type ManagingCompaniesInvoiceTemplatesUpdateParams = {\n templateId: number;\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvoiceTemplatesUpdateQuery = undefined;\nexport type ManagingCompaniesInvoiceTemplatesUpdateBody = {\n name?: string;\n description?: string | null;\n companyId?: number | null;\n costCenterId?: number | null;\n paymentAccountId?: number | null;\n currency?: string;\n language?: string;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n customVatRate?: number | null;\n paymentTermsDays?: number | null;\n paymentTermsText?: string | null;\n earlyPaymentDiscountPercent?: number | null;\n earlyPaymentDiscountDays?: number | null;\n notes?: string | null;\n lineItems?: Array<{\n title: string;\n description?: string | null;\n unitPriceNet: string;\n defaultQuantity?: number;\n itemType?: string;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n taxRate?: number;\n sortOrder?: number;\n}>;\n sortOrder?: number;\n isArchived?: boolean;\n};\nexport type ManagingCompaniesInvoiceTemplatesUpdateResponseData = {\n id: number;\n managingCompanyId: number;\n name: string;\n description: string | null;\n companyId: number | null;\n costCenterId: number | null;\n paymentAccountId: number | null;\n currency: string;\n language: string;\n productType: string;\n customVatRate: string | null;\n paymentTermsDays: number | null;\n paymentTermsText: string | null;\n earlyPaymentDiscountPercent: string | null;\n earlyPaymentDiscountDays: number | null;\n notes: string | null;\n lineItems: Array<{\n title: string;\n description?: string | null;\n unitPriceNet: string;\n defaultQuantity: number;\n itemType: string;\n productType: string;\n taxRate?: number;\n sortOrder: number;\n}>;\n isArchived: boolean;\n sortOrder: number;\n lastUsedAt: string | null;\n usageCount: number;\n createdAt: string;\n createdBy: number | null;\n updatedAt: string | null;\n updatedBy: number | null;\n};\nexport type ManagingCompaniesInvoiceTemplatesUpdateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceTemplatesUpdateResponseData>;\n\nexport type ManagingCompaniesInvoiceTemplatesArchiveParams = {\n templateId: number;\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvoiceTemplatesArchiveQuery = undefined;\nexport type ManagingCompaniesInvoiceTemplatesArchiveBody = undefined;\nexport type ManagingCompaniesInvoiceTemplatesArchiveResponseData = {\n id: number;\n managingCompanyId: number;\n name: string;\n description: string | null;\n companyId: number | null;\n costCenterId: number | null;\n paymentAccountId: number | null;\n currency: string;\n language: string;\n productType: string;\n customVatRate: string | null;\n paymentTermsDays: number | null;\n paymentTermsText: string | null;\n earlyPaymentDiscountPercent: string | null;\n earlyPaymentDiscountDays: number | null;\n notes: string | null;\n lineItems: Array<{\n title: string;\n description?: string | null;\n unitPriceNet: string;\n defaultQuantity: number;\n itemType: string;\n productType: string;\n taxRate?: number;\n sortOrder: number;\n}>;\n isArchived: boolean;\n sortOrder: number;\n lastUsedAt: string | null;\n usageCount: number;\n createdAt: string;\n createdBy: number | null;\n updatedAt: string | null;\n updatedBy: number | null;\n};\nexport type ManagingCompaniesInvoiceTemplatesArchiveResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceTemplatesArchiveResponseData>;\n\nexport type ManagingCompaniesInvoiceTemplatesDuplicateParams = {\n templateId: number;\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvoiceTemplatesDuplicateQuery = undefined;\nexport type ManagingCompaniesInvoiceTemplatesDuplicateBody = {\n name: string;\n};\nexport type ManagingCompaniesInvoiceTemplatesDuplicateResponseData = {\n id: number;\n managingCompanyId: number;\n name: string;\n description: string | null;\n companyId: number | null;\n costCenterId: number | null;\n paymentAccountId: number | null;\n currency: string;\n language: string;\n productType: string;\n customVatRate: string | null;\n paymentTermsDays: number | null;\n paymentTermsText: string | null;\n earlyPaymentDiscountPercent: string | null;\n earlyPaymentDiscountDays: number | null;\n notes: string | null;\n lineItems: Array<{\n title: string;\n description?: string | null;\n unitPriceNet: string;\n defaultQuantity: number;\n itemType: string;\n productType: string;\n taxRate?: number;\n sortOrder: number;\n}>;\n isArchived: boolean;\n sortOrder: number;\n lastUsedAt: string | null;\n usageCount: number;\n createdAt: string;\n createdBy: number | null;\n updatedAt: string | null;\n updatedBy: number | null;\n};\nexport type ManagingCompaniesInvoiceTemplatesDuplicateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceTemplatesDuplicateResponseData>;\n\nexport type ManagingCompaniesCreateParams = undefined;\nexport type ManagingCompaniesCreateQuery = undefined;\nexport type ManagingCompaniesCreateBody = {\n companyName: string;\n companyLegalForm?: \"Einzelunternehmen\" | \"Freiberufler\" | \"GbR\" | \"UG\" | \"GmbH\" | \"AG\" | \"KG\" | \"OHG\" | \"PartG\" | \"eK\" | null;\n companyManagingDirector?: string | null;\n companyStreet?: string | null;\n companyStreetNr?: string | null;\n companyZip?: string | null;\n companyCity?: string | null;\n companyCountry?: string | null;\n companyEmail?: string | null;\n companyPhone?: string | null;\n companyWebsite?: string | null;\n companyCommercialRegister?: string | null;\n companyRegistrationCourt?: string | null;\n companyTaxId?: string | null;\n companyVatId?: string | null;\n zugferdEnable?: boolean;\n zugferdDefaultProfile?: \"MINIMUM\" | \"BASIC_WL\" | \"BASIC\" | \"EN16931\" | \"EXTENDED\" | \"XRECHNUNG\";\n baseCurrency?: \"EUR\" | \"USD\" | \"GBP\" | \"JPY\" | \"CHF\" | \"CAD\" | \"AUD\" | \"CNY\" | \"SEK\" | \"NOK\" | \"DKK\" | \"PLN\" | \"CZK\" | \"HUF\" | \"RON\" | \"BGN\" | \"KRW\" | \"SGD\" | \"HKD\" | \"NZD\" | \"INR\" | \"THB\" | \"MYR\" | \"IDR\" | \"PHP\" | \"BRL\" | \"MXN\" | \"ARS\" | \"CLP\" | \"COP\" | \"AED\" | \"SAR\" | \"ILS\" | \"ZAR\" | \"EGP\" | \"TRY\" | \"RUB\";\n invoiceLayoutVariant?: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n bookkeepingBasis?: \"eur\" | \"accrual\";\n};\nexport type ManagingCompaniesCreateResponseData = ManagingCompany;\nexport type ManagingCompaniesCreateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCreateResponseData>;\n\nexport type ManagingCompaniesListParams = undefined;\nexport type ManagingCompaniesListQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n};\nexport type ManagingCompaniesListBody = undefined;\nexport type ManagingCompaniesListResponseData = PaginatedResult<ManagingCompany>;\nexport type ManagingCompaniesListResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesListResponseData>;\n\nexport type ManagingCompaniesGetByIdParams = {\n id: number;\n};\nexport type ManagingCompaniesGetByIdQuery = undefined;\nexport type ManagingCompaniesGetByIdBody = undefined;\nexport type ManagingCompaniesGetByIdResponseData = ManagingCompany;\nexport type ManagingCompaniesGetByIdResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesGetByIdResponseData>;\n\nexport type ManagingCompaniesUpdateParams = {\n id: number;\n};\nexport type ManagingCompaniesUpdateQuery = undefined;\nexport type ManagingCompaniesUpdateBody = {\n companyName?: string;\n companyLegalForm?: \"Einzelunternehmen\" | \"Freiberufler\" | \"GbR\" | \"UG\" | \"GmbH\" | \"AG\" | \"KG\" | \"OHG\" | \"PartG\" | \"eK\" | null;\n companyManagingDirector?: string | null;\n companyStreet?: string | null;\n companyStreetNr?: string | null;\n companyZip?: string | null;\n companyCity?: string | null;\n companyCountry?: string | null;\n companyEmail?: string | null;\n companyPhone?: string | null;\n companyWebsite?: string | null;\n companyCommercialRegister?: string | null;\n companyRegistrationCourt?: string | null;\n companyTaxId?: string | null;\n companyVatId?: string | null;\n zugferdEnable?: boolean;\n zugferdDefaultProfile?: \"MINIMUM\" | \"BASIC_WL\" | \"BASIC\" | \"EN16931\" | \"EXTENDED\" | \"XRECHNUNG\";\n baseCurrency?: \"EUR\" | \"USD\" | \"GBP\" | \"JPY\" | \"CHF\" | \"CAD\" | \"AUD\" | \"CNY\" | \"SEK\" | \"NOK\" | \"DKK\" | \"PLN\" | \"CZK\" | \"HUF\" | \"RON\" | \"BGN\" | \"KRW\" | \"SGD\" | \"HKD\" | \"NZD\" | \"INR\" | \"THB\" | \"MYR\" | \"IDR\" | \"PHP\" | \"BRL\" | \"MXN\" | \"ARS\" | \"CLP\" | \"COP\" | \"AED\" | \"SAR\" | \"ILS\" | \"ZAR\" | \"EGP\" | \"TRY\" | \"RUB\";\n invoiceLayoutVariant?: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n bookkeepingBasis?: \"eur\" | \"accrual\";\n};\nexport type ManagingCompaniesUpdateResponseData = ManagingCompany;\nexport type ManagingCompaniesUpdateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesUpdateResponseData>;\n\nexport type ManagingCompaniesDeleteParams = {\n id: number;\n};\nexport type ManagingCompaniesDeleteQuery = undefined;\nexport type ManagingCompaniesDeleteBody = undefined;\nexport type ManagingCompaniesDeleteResponseData = null;\nexport type ManagingCompaniesDeleteResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesDeleteResponseData>;\n\nexport const apiRoutes_managing_companies = {\n // Contract source: explicit\n \"managing_companies_user_assignments_assign\": {\n method: \"POST\",\n path: \"/managing-companies/user-assignments/assign\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"user-assignments\"],\n summary: \"Benutzer zu Unternehmen einladen/zuweisen\",\n description: \"Weist einen Benutzer einem Unternehmen zu (oder erstellt eine Invite, falls nötig). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesUserAssignmentsAssignParams;\n query: ManagingCompaniesUserAssignmentsAssignQuery;\n body: ManagingCompaniesUserAssignmentsAssignBody;\n response: ManagingCompaniesUserAssignmentsAssignResponse;\n responseData: ManagingCompaniesUserAssignmentsAssignResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_user_assignments_revoke\": {\n method: \"POST\",\n path: \"/managing-companies/user-assignments/revoke\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"user-assignments\"],\n summary: \"Benutzer-Zuweisung widerrufen\",\n description: \"Entfernt einen Benutzer aus einem Unternehmen (Zuweisung widerrufen). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesUserAssignmentsRevokeParams;\n query: ManagingCompaniesUserAssignmentsRevokeQuery;\n body: ManagingCompaniesUserAssignmentsRevokeBody;\n response: ManagingCompaniesUserAssignmentsRevokeResponse;\n responseData: ManagingCompaniesUserAssignmentsRevokeResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_user_assignments_update\": {\n method: \"PUT\",\n path: \"/managing-companies/user-assignments/update/:assignmentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"user-assignments\"],\n summary: \"Benutzer-Zuweisung aktualisieren\",\n description: \"Ändert Rolle/Gültigkeit/CompanyRole einer bestehenden Zuweisung. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesUserAssignmentsUpdateParams;\n query: ManagingCompaniesUserAssignmentsUpdateQuery;\n body: ManagingCompaniesUserAssignmentsUpdateBody;\n response: ManagingCompaniesUserAssignmentsUpdateResponse;\n responseData: ManagingCompaniesUserAssignmentsUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_user_assignments_cost_centers_add\": {\n method: \"POST\",\n path: \"/managing-companies/user-assignments/cost-centers/add\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"user-assignments\"],\n summary: \"Cost Center zu Zuweisung hinzufügen\",\n description: \"Fügt einer Benutzer-Zuweisung zusätzliche Cost Center hinzu. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesUserAssignmentsCostCentersAddParams;\n query: ManagingCompaniesUserAssignmentsCostCentersAddQuery;\n body: ManagingCompaniesUserAssignmentsCostCentersAddBody;\n response: ManagingCompaniesUserAssignmentsCostCentersAddResponse;\n responseData: ManagingCompaniesUserAssignmentsCostCentersAddResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_user_assignments_cost_centers_remove\": {\n method: \"POST\",\n path: \"/managing-companies/user-assignments/cost-centers/remove\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"user-assignments\"],\n summary: \"Cost Center von Zuweisung entfernen\",\n description: \"Entfernt Cost Center von einer Benutzer-Zuweisung. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesUserAssignmentsCostCentersRemoveParams;\n query: ManagingCompaniesUserAssignmentsCostCentersRemoveQuery;\n body: ManagingCompaniesUserAssignmentsCostCentersRemoveBody;\n response: ManagingCompaniesUserAssignmentsCostCentersRemoveResponse;\n responseData: ManagingCompaniesUserAssignmentsCostCentersRemoveResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_user_assignments_list\": {\n method: \"GET\",\n path: \"/managing-companies/user-assignments/list/:companyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"user-assignments\"],\n summary: \"Benutzer-Zuweisungen listen\",\n description: \"Listet Benutzer-Zuweisungen eines Unternehmens paginiert (inkl. optionaler User-Infos). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesUserAssignmentsListParams;\n query: ManagingCompaniesUserAssignmentsListQuery;\n body: ManagingCompaniesUserAssignmentsListBody;\n response: ManagingCompaniesUserAssignmentsListResponse;\n responseData: ManagingCompaniesUserAssignmentsListResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_create\": {\n method: \"POST\",\n path: \"/managing-companies/cost-centers/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost Center erstellen\",\n description: \"Erstellt einen Cost Center für ein Managing Company. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersCreateParams;\n query: ManagingCompaniesCostCentersCreateQuery;\n body: ManagingCompaniesCostCentersCreateBody;\n response: ManagingCompaniesCostCentersCreateResponse;\n responseData: ManagingCompaniesCostCentersCreateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_my\": {\n method: \"GET\",\n path: \"/managing-companies/cost-centers/my/:managingCompanyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Meine Cost Center\",\n description: \"Lädt alle Cost Center für das angegebene Managing Company (nicht paginiert). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersMyParams;\n query: ManagingCompaniesCostCentersMyQuery;\n body: ManagingCompaniesCostCentersMyBody;\n response: ManagingCompaniesCostCentersMyResponse;\n responseData: ManagingCompaniesCostCentersMyResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_by_id\": {\n method: \"GET\",\n path: \"/managing-companies/cost-centers/byId/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost Center nach ID\",\n description: \"Lädt einen Cost Center per ID. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersByIdParams;\n query: ManagingCompaniesCostCentersByIdQuery;\n body: ManagingCompaniesCostCentersByIdBody;\n response: ManagingCompaniesCostCentersByIdResponse;\n responseData: ManagingCompaniesCostCentersByIdResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_logos_settings\": {\n method: \"GET\",\n path: \"/managing-companies/cost-centers/logos/settings/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost-Center Logo-Settings\",\n description: \"Lädt die aktuell hinterlegten white/dark Logo-Keys eines Cost Centers inklusive aktivem Invoice-Logo-Modus der Company.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersLogosSettingsParams;\n query: ManagingCompaniesCostCentersLogosSettingsQuery;\n body: ManagingCompaniesCostCentersLogosSettingsBody;\n response: ManagingCompaniesCostCentersLogosSettingsResponse;\n responseData: ManagingCompaniesCostCentersLogosSettingsResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_logos_upload\": {\n method: \"POST\",\n path: \"/managing-companies/cost-centers/logos/upload/:id/:mode\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost-Center Logo hochladen\",\n description: \"Lädt ein White- oder Dark-Logo für ein Cost Center hoch (PNG/JPEG/SVG, max 5MB) und ersetzt das bestehende Logo in diesem Modus.\",\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersLogosUploadParams;\n query: ManagingCompaniesCostCentersLogosUploadQuery;\n body: ManagingCompaniesCostCentersLogosUploadBody;\n response: ManagingCompaniesCostCentersLogosUploadResponse;\n responseData: ManagingCompaniesCostCentersLogosUploadResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_logos_delete\": {\n method: \"DELETE\",\n path: \"/managing-companies/cost-centers/logos/delete/:id/:mode\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost-Center Logo löschen\",\n description: \"Löscht das White- oder Dark-Logo eines Cost Centers und entfernt den zugehörigen Key.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersLogosDeleteParams;\n query: ManagingCompaniesCostCentersLogosDeleteQuery;\n body: ManagingCompaniesCostCentersLogosDeleteBody;\n response: ManagingCompaniesCostCentersLogosDeleteResponse;\n responseData: ManagingCompaniesCostCentersLogosDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_logos_urls\": {\n method: \"GET\",\n path: \"/managing-companies/cost-centers/logos/urls/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost-Center Logo-URLs\",\n description: \"Lädt presigned Download-URLs (1h) für White-/Dark-Logo eines Cost Centers.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersLogosUrlsParams;\n query: ManagingCompaniesCostCentersLogosUrlsQuery;\n body: ManagingCompaniesCostCentersLogosUrlsBody;\n response: ManagingCompaniesCostCentersLogosUrlsResponse;\n responseData: ManagingCompaniesCostCentersLogosUrlsResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_by_ids\": {\n method: \"GET\",\n path: \"/managing-companies/cost-centers/by-ids\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost Center per IDs\",\n description: \"Lädt mehrere Cost Center anhand einer Liste von IDs. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersByIdsParams;\n query: ManagingCompaniesCostCentersByIdsQuery;\n body: ManagingCompaniesCostCentersByIdsBody;\n response: ManagingCompaniesCostCentersByIdsResponse;\n responseData: ManagingCompaniesCostCentersByIdsResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_update\": {\n method: \"PUT\",\n path: \"/managing-companies/cost-centers/update/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost Center aktualisieren\",\n description: \"Aktualisiert Felder eines Cost Centers (Name, Code, Archiviert, Sortierung, …). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersUpdateParams;\n query: ManagingCompaniesCostCentersUpdateQuery;\n body: ManagingCompaniesCostCentersUpdateBody;\n response: ManagingCompaniesCostCentersUpdateResponse;\n responseData: ManagingCompaniesCostCentersUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_delete\": {\n method: \"DELETE\",\n path: \"/managing-companies/cost-centers/delete/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost Center löschen\",\n description: \"Löscht einen Cost Center. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersDeleteParams;\n query: ManagingCompaniesCostCentersDeleteQuery;\n body: ManagingCompaniesCostCentersDeleteBody;\n response: ManagingCompaniesCostCentersDeleteResponse;\n responseData: ManagingCompaniesCostCentersDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_list\": {\n method: \"GET\",\n path: \"/managing-companies/cost-centers/list/:managingCompanyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost Center listen (pagininiert)\",\n description: \"Listet Cost Center eines Managing Company paginiert (Filter via Query). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersListParams;\n query: ManagingCompaniesCostCentersListQuery;\n body: ManagingCompaniesCostCentersListBody;\n response: ManagingCompaniesCostCentersListResponse;\n responseData: ManagingCompaniesCostCentersListResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_selected_set\": {\n method: \"POST\",\n path: \"/managing-companies/selected/set/:companyId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"selected-company\"],\n summary: \"Ausgewähltes Unternehmen setzen\",\n description: \"Setzt das aktuell ausgewählte Managing Company (Mandant) für den Benutzer. Auth: Bearer.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesSelectedSetParams;\n query: ManagingCompaniesSelectedSetQuery;\n body: ManagingCompaniesSelectedSetBody;\n response: ManagingCompaniesSelectedSetResponse;\n responseData: ManagingCompaniesSelectedSetResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_selected_current\": {\n method: \"GET\",\n path: \"/managing-companies/selected/current\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"selected-company\"],\n summary: \"Ausgewähltes Unternehmen abrufen\",\n description: \"Gibt das aktuell ausgewählte Managing Company (inkl. FullSelectedCompany) zurück oder `null`, falls keines gesetzt ist. Auth: Bearer.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesSelectedCurrentParams;\n query: ManagingCompaniesSelectedCurrentQuery;\n body: ManagingCompaniesSelectedCurrentBody;\n response: ManagingCompaniesSelectedCurrentResponse;\n responseData: ManagingCompaniesSelectedCurrentResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_vat_settings_get\": {\n method: \"GET\",\n path: \"/managing-companies/vat-settings/:companyId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"vat-settings\"],\n summary: \"USt-Einstellungen lesen\",\n description: \"Lädt die aktuellen USt-Einstellungen inklusive erweiterbarer Steuerentscheidungen (taxDecisions) für ein Managing Company. Gibt null zurück falls noch keine Einstellungen vorhanden. Auth: Bearer.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesVatSettingsGetParams;\n query: ManagingCompaniesVatSettingsGetQuery;\n body: ManagingCompaniesVatSettingsGetBody;\n response: ManagingCompaniesVatSettingsGetResponse;\n responseData: ManagingCompaniesVatSettingsGetResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_vat_settings_upsert\": {\n method: \"POST\",\n path: \"/managing-companies/vat-settings/:companyId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"vat-settings\"],\n summary: \"USt-Einstellungen speichern\",\n description: \"Ändert Besteuerungsverfahren (SOLL/IST), UStVA-Anmeldepräferenz und optional taxDecisions (erweiterbare Steuerentscheidungsmap) für ein Managing Company (Upsert). Für eine vollständig auditierte Änderung mit Historieneinträgen nutze stattdessen PUT /admin/vat/company/:id/settings. Auth: Bearer.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesVatSettingsUpsertParams;\n query: ManagingCompaniesVatSettingsUpsertQuery;\n body: ManagingCompaniesVatSettingsUpsertBody;\n response: ManagingCompaniesVatSettingsUpsertResponse;\n responseData: ManagingCompaniesVatSettingsUpsertResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_vat_settings_decision_upsert\": {\n method: \"PUT\",\n path: \"/managing-companies/vat-settings/:companyId/decisions/:decisionKey\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"vat-settings\"],\n summary: \"Steuerentscheidung aktiv setzen\",\n description: \"Speichert eine explizite Steuerentscheidung des Users unter einem frei erweiterbaren Entscheidungsschluessel. Das System trifft KEINE automatischen Steuerentscheidungen – dieser Endpoint ist immer eine bewusste User-Aktion. Bekannte Keys: 'vat.regime' → value: { regime: 'kleinunternehmer' | 'regelbesteuert' } – setzt das USt-Regime. Typischer Flow: User sieht Alert (GET /tax-alerts activeCount > 0), klickt 'Jetzt umstellen', Frontend sendet diesen Call. 'vat.regime.auto_switch_consent' → value: { enabled: true|false } – opt-in: System darf bei §19-Grenzwert-Ueberschreitung automatisch umstellen. effectiveFrom: ISO-Datetime ab wann die Entscheidung gilt (default: jetzt). note: Begruendung / Notiz fuer Audit-Log. Response appliedRegimePeriod ist gesetzt wenn ein Regime-Zeitraum angelegt wurde.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesVatSettingsDecisionUpsertParams;\n query: ManagingCompaniesVatSettingsDecisionUpsertQuery;\n body: ManagingCompaniesVatSettingsDecisionUpsertBody;\n response: ManagingCompaniesVatSettingsDecisionUpsertResponse;\n responseData: ManagingCompaniesVatSettingsDecisionUpsertResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_vat_settings_tax_alerts\": {\n method: \"GET\",\n path: \"/managing-companies/vat-settings/:companyId/tax-alerts\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"vat-settings\"],\n summary: \"Steuerliche Handlungshinweise abrufen\",\n description: \"Gibt alle aktiven (und aufgeloesten) Steuerhinweise zurueck, die eine explizite User-Entscheidung erfordern. Das System trifft KEINE automatischen Steuerentscheidungen – Alerts signalisieren nur, dass der User handeln muss. Frontend-Flow: (1) activeCount > 0 → Badge/Banner anzeigen. (2) Jeden Alert mit active=true anzeigen: title + message direkt verwendbar als Benachrichtigungstext. (3) Hat ein Alert requiredDecision != null → 'Jetzt entscheiden'-Button anzeigen: requiredDecision.endpoint = exakter API-Pfad fuer PUT /decisions/:decisionKey, requiredDecision.suggestedValue = empfohlener value-Wert (direkt uebergeben), requiredDecision.currentValue = aktuell gesetzter Wert. (4) Nach User-Klick: PUT /managing-companies/vat-settings/:companyId/decisions/:decisionKey aufrufen, dann diesen Endpoint erneut aufrufen um Badge zu aktualisieren. Aktuell implementierte Alerts: • vat.regime.current_year_exceeded – §19 UStG laufendes Jahr >= 100k → sofortige Umstellung auf regelbesteuert erforderlich. • vat.regime.previous_year_exceeded – §19 UStG Vorjahr > 25k → Umstellung auf regelbesteuert empfohlen. metadata.autoSwitchEnabled zeigt ob User auto_switch_consent bereits aktiviert hat. activeCount = Anzahl noch ungeloester aktiver Alerts (sinnvoll fuer Badge/Dot im Frontend).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesVatSettingsTaxAlertsParams;\n query: ManagingCompaniesVatSettingsTaxAlertsQuery;\n body: ManagingCompaniesVatSettingsTaxAlertsBody;\n response: ManagingCompaniesVatSettingsTaxAlertsResponse;\n responseData: ManagingCompaniesVatSettingsTaxAlertsResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invites_pending_user\": {\n method: \"GET\",\n path: \"/managing-companies/invites/pending/user\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"invites\"],\n summary: \"Eigene offene Einladungen\",\n description: \"Listet offene Einladungen für den aktuell eingeloggten Benutzer (pagininiert). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvitesPendingUserParams;\n query: ManagingCompaniesInvitesPendingUserQuery;\n body: ManagingCompaniesInvitesPendingUserBody;\n response: ManagingCompaniesInvitesPendingUserResponse;\n responseData: ManagingCompaniesInvitesPendingUserResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invites_pending_company\": {\n method: \"GET\",\n path: \"/managing-companies/invites/pending/company/:managingCompanyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"invites\"],\n summary: \"Offene Einladungen eines Unternehmens\",\n description: \"Listet offene Einladungen für ein Managing Company (pagininiert). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvitesPendingCompanyParams;\n query: ManagingCompaniesInvitesPendingCompanyQuery;\n body: ManagingCompaniesInvitesPendingCompanyBody;\n response: ManagingCompaniesInvitesPendingCompanyResponse;\n responseData: ManagingCompaniesInvitesPendingCompanyResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invites_pending_company_preview\": {\n method: \"GET\",\n path: \"/managing-companies/invites/pending/company/:managingCompanyId/preview\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invites\"],\n summary: \"Invite-Preview (Unternehmensdaten)\",\n description: \"Preview von Unternehmensdaten zu einem Invite-Token (z.B. zur Anzeige vor Annahme). Auth: Bearer.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvitesPendingCompanyPreviewParams;\n query: ManagingCompaniesInvitesPendingCompanyPreviewQuery;\n body: ManagingCompaniesInvitesPendingCompanyPreviewBody;\n response: ManagingCompaniesInvitesPendingCompanyPreviewResponse;\n responseData: ManagingCompaniesInvitesPendingCompanyPreviewResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invites_accept\": {\n method: \"POST\",\n path: \"/managing-companies/invites/accept/:token\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invites\"],\n summary: \"Einladung annehmen\",\n description: \"Nimmt eine Einladung per Token an und legt/aktiviert die Zuweisung. Auth: Bearer.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvitesAcceptParams;\n query: ManagingCompaniesInvitesAcceptQuery;\n body: ManagingCompaniesInvitesAcceptBody;\n response: ManagingCompaniesInvitesAcceptResponse;\n responseData: ManagingCompaniesInvitesAcceptResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invites_reject\": {\n method: \"POST\",\n path: \"/managing-companies/invites/reject/:token\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invites\"],\n summary: \"Einladung ablehnen\",\n description: \"Lehnt eine Einladung per Token ab. Auth: Bearer.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvitesRejectParams;\n query: ManagingCompaniesInvitesRejectQuery;\n body: ManagingCompaniesInvitesRejectBody;\n response: ManagingCompaniesInvitesRejectResponse;\n responseData: ManagingCompaniesInvitesRejectResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invites_cancel\": {\n method: \"DELETE\",\n path: \"/managing-companies/invites/cancel/:inviteId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invites\"],\n summary: \"Einladung stornieren\",\n description: \"Storniert eine ausstehende Einladung (i.d.R. durch Admin/Editor). Auth: Bearer.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvitesCancelParams;\n query: ManagingCompaniesInvitesCancelQuery;\n body: ManagingCompaniesInvitesCancelBody;\n response: ManagingCompaniesInvitesCancelResponse;\n responseData: ManagingCompaniesInvitesCancelResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_api_keys_create\": {\n method: \"POST\",\n path: \"/managing-companies/api-keys/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"api-keys\"],\n summary: \"API-Key erstellen\",\n description: \"Erstellt einen neuen API-Key für das ausgewählte Unternehmen (inkl. Klartext-Key in der Response). Cost-Center-Regeln: Für `role=admin` ist der Key immer unbeschränkt (`availableCostCenters = null`). Für `viewer`/`editor` ist `availableCostCenters` eine Whitelist (wenn nicht gesetzt => leere Liste). `defaultCostCenter` muss zur Company gehören und bei Nicht-Admin in der Whitelist enthalten sein.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesApiKeysCreateParams;\n query: ManagingCompaniesApiKeysCreateQuery;\n body: ManagingCompaniesApiKeysCreateBody;\n response: ManagingCompaniesApiKeysCreateResponse;\n responseData: ManagingCompaniesApiKeysCreateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_api_keys_update\": {\n method: \"PUT\",\n path: \"/managing-companies/api-keys/update/:apiKeyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"api-keys\"],\n summary: \"API-Key aktualisieren\",\n description: \"Ändert Name/Rolle/Gültigkeit/Cost-Center-Zuordnung eines API-Keys. Cost-Center-Regeln: Nicht-Admin-Keys sind whitelist-basiert (`availableCostCenters`), Admin-Keys werden auf unbeschränkt gesetzt (`availableCostCenters = null`).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesApiKeysUpdateParams;\n query: ManagingCompaniesApiKeysUpdateQuery;\n body: ManagingCompaniesApiKeysUpdateBody;\n response: ManagingCompaniesApiKeysUpdateResponse;\n responseData: ManagingCompaniesApiKeysUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_api_keys_delete\": {\n method: \"DELETE\",\n path: \"/managing-companies/api-keys/delete/:apiKeyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"api-keys\"],\n summary: \"API-Key löschen\",\n description: \"Löscht einen API-Key. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesApiKeysDeleteParams;\n query: ManagingCompaniesApiKeysDeleteQuery;\n body: ManagingCompaniesApiKeysDeleteBody;\n response: ManagingCompaniesApiKeysDeleteResponse;\n responseData: ManagingCompaniesApiKeysDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_api_keys_revoke\": {\n method: \"POST\",\n path: \"/managing-companies/api-keys/revoke/:apiKeyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"api-keys\"],\n summary: \"API-Key sperren (revoke)\",\n description: \"Setzt einen API-Key außer Kraft, ohne ihn zwingend zu löschen. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesApiKeysRevokeParams;\n query: ManagingCompaniesApiKeysRevokeQuery;\n body: ManagingCompaniesApiKeysRevokeBody;\n response: ManagingCompaniesApiKeysRevokeResponse;\n responseData: ManagingCompaniesApiKeysRevokeResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_api_keys_by_id\": {\n method: \"GET\",\n path: \"/managing-companies/api-keys/byId/:apiKeyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"api-keys\"],\n summary: \"API-Key nach ID\",\n description: \"Lädt einen API-Key (ohne Klartext). `availableCostCenters` wird normalisiert zurückgegeben (Array für whitelist-basierte Keys, `null` für unbeschränkte Admin-Keys).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesApiKeysByIdParams;\n query: ManagingCompaniesApiKeysByIdQuery;\n body: ManagingCompaniesApiKeysByIdBody;\n response: ManagingCompaniesApiKeysByIdResponse;\n responseData: ManagingCompaniesApiKeysByIdResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_api_keys_list\": {\n method: \"GET\",\n path: \"/managing-companies/api-keys/list\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"api-keys\"],\n summary: \"API-Keys listen\",\n description: \"Listet API-Keys paginiert. `availableCostCenters` ist immer normalisiert (Array für whitelist-basierte Keys, `null` für unbeschränkte Admin-Keys).\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesApiKeysListParams;\n query: ManagingCompaniesApiKeysListQuery;\n body: ManagingCompaniesApiKeysListBody;\n response: ManagingCompaniesApiKeysListResponse;\n responseData: ManagingCompaniesApiKeysListResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_layouts_catalog\": {\n method: \"GET\",\n path: \"/managing-companies/invoice-layouts/catalog\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-layouts\"],\n summary: \"Rechnungslayout-Katalog\",\n description: \"Liefert 5 verfügbare Rechnungslayouts inkl. technischer Details, Preview-Metadaten und E-Rechnungs-Infos.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceLayoutsCatalogParams;\n query: ManagingCompaniesInvoiceLayoutsCatalogQuery;\n body: ManagingCompaniesInvoiceLayoutsCatalogBody;\n response: ManagingCompaniesInvoiceLayoutsCatalogResponse;\n responseData: ManagingCompaniesInvoiceLayoutsCatalogResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_layouts_effective\": {\n method: \"GET\",\n path: \"/managing-companies/invoice-layouts/effective\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-layouts\"],\n summary: \"Effektives Rechnungslayout\",\n description: \"Liefert das effektiv verwendete Layout (Company-Default mit optionalem Cost-Center-Override) inkl. technischem Profil.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceLayoutsEffectiveParams;\n query: ManagingCompaniesInvoiceLayoutsEffectiveQuery;\n body: ManagingCompaniesInvoiceLayoutsEffectiveBody;\n response: ManagingCompaniesInvoiceLayoutsEffectiveResponse;\n responseData: ManagingCompaniesInvoiceLayoutsEffectiveResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_layouts_preview\": {\n method: \"GET\",\n path: \"/managing-companies/invoice-layouts/preview\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-layouts\"],\n summary: \"Layout-PDF-Preview\",\n description: \"Liefert eine echte PDF-Preview-URL für ein Layout. Die Preview wird per Cache-Key nur bei Änderungen neu erzeugt.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceLayoutsPreviewParams;\n query: ManagingCompaniesInvoiceLayoutsPreviewQuery;\n body: ManagingCompaniesInvoiceLayoutsPreviewBody;\n response: ManagingCompaniesInvoiceLayoutsPreviewResponse;\n responseData: ManagingCompaniesInvoiceLayoutsPreviewResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_layouts_previews\": {\n method: \"GET\",\n path: \"/managing-companies/invoice-layouts/previews\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-layouts\"],\n summary: \"Alle Layout-PDF-Previews\",\n description: \"Liefert für alle 5 Layouts echte PDF-Preview-URLs (gecacht, nur bei Änderungen neu gerendert).\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceLayoutsPreviewsParams;\n query: ManagingCompaniesInvoiceLayoutsPreviewsQuery;\n body: ManagingCompaniesInvoiceLayoutsPreviewsBody;\n response: ManagingCompaniesInvoiceLayoutsPreviewsResponse;\n responseData: ManagingCompaniesInvoiceLayoutsPreviewsResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_transparency_context\": {\n method: \"GET\",\n path: \"/managing-companies/invoice-transparency/:managingCompanyId/context\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-transparency\"],\n summary: \"Invoice-Transparenz-Kontext laden\",\n description: \"Liefert den aktuellen steuerlichen Kontext einer Managing Company inkl. Grenzwerten, Regime, aktiven Warnungen und relevanten Invoice-Defaults.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceTransparencyContextParams;\n query: ManagingCompaniesInvoiceTransparencyContextQuery;\n body: ManagingCompaniesInvoiceTransparencyContextBody;\n response: ManagingCompaniesInvoiceTransparencyContextResponse;\n responseData: ManagingCompaniesInvoiceTransparencyContextResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_transparency_quote\": {\n method: \"POST\",\n path: \"/managing-companies/invoice-transparency/:managingCompanyId/quote\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-transparency\"],\n summary: \"Rechnungsberechnung transparent vorschauen\",\n description: \"Berechnet eine Rechnung ohne Persistenz und liefert exakte Zahlen inkl. Steuerauflösung pro Position, i18n-faehigen Warnungsobjekten und quoteHash fuer stale-sichere Erstellung.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceTransparencyQuoteParams;\n query: ManagingCompaniesInvoiceTransparencyQuoteQuery;\n body: ManagingCompaniesInvoiceTransparencyQuoteBody;\n response: ManagingCompaniesInvoiceTransparencyQuoteResponse;\n responseData: ManagingCompaniesInvoiceTransparencyQuoteResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_item_type_configs_create\": {\n method: \"POST\",\n path: \"/managing-companies/invoice-transparency/:managingCompanyId/item-type-configs\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-transparency\"],\n summary: \"Eigene Positionskategorie erstellen\",\n description: \"Erstellt eine firmenspezifische Positionskategorie (z.B. 'Montage', 'Anfahrt'). Diese erscheint zusätzlich zu den Standardkategorien im Rechnungsformular. Der 'value'-Schlüssel muss pro Firma eindeutig sein (Kleinbuchstaben, Zahlen, Unterstriche).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesItemTypeConfigsCreateParams;\n query: ManagingCompaniesItemTypeConfigsCreateQuery;\n body: ManagingCompaniesItemTypeConfigsCreateBody;\n response: ManagingCompaniesItemTypeConfigsCreateResponse;\n responseData: ManagingCompaniesItemTypeConfigsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_item_type_configs_update\": {\n method: \"PUT\",\n path: \"/managing-companies/invoice-transparency/:managingCompanyId/item-type-configs/:value\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-transparency\"],\n summary: \"Positionskategorie aktualisieren\",\n description: \"Aktualisiert den Anzeigenamen oder den Standard-Steuermodus einer firmenspezifischen Positionskategorie.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesItemTypeConfigsUpdateParams;\n query: ManagingCompaniesItemTypeConfigsUpdateQuery;\n body: ManagingCompaniesItemTypeConfigsUpdateBody;\n response: ManagingCompaniesItemTypeConfigsUpdateResponse;\n responseData: ManagingCompaniesItemTypeConfigsUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_item_type_configs_archive\": {\n method: \"POST\",\n path: \"/managing-companies/invoice-transparency/:managingCompanyId/item-type-configs/:value/archive\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-transparency\"],\n summary: \"Positionskategorie archivieren\",\n description: \"Archiviert eine firmenspezifische Positionskategorie (Soft-Delete). Bereits verwendete Positionen behalten ihren Typ — die Kategorie wird nur aus der Auswahl entfernt.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesItemTypeConfigsArchiveParams;\n query: ManagingCompaniesItemTypeConfigsArchiveQuery;\n body: ManagingCompaniesItemTypeConfigsArchiveBody;\n response: ManagingCompaniesItemTypeConfigsArchiveResponse;\n responseData: ManagingCompaniesItemTypeConfigsArchiveResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_templates_list\": {\n method: \"GET\",\n path: \"/managing-companies/invoice-templates/:managingCompanyId/list\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-templates\"],\n summary: \"Rechnungsvorlagen auflisten\",\n description: \"Gibt eine paginierte Liste aller Rechnungsvorlagen zurück. Sortiert nach zuletzt verwendet und Nutzungshäufigkeit. Optional filterbar nach Suchbegriff, Kunde und Archivierungsstatus.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceTemplatesListParams;\n query: ManagingCompaniesInvoiceTemplatesListQuery;\n body: ManagingCompaniesInvoiceTemplatesListBody;\n response: ManagingCompaniesInvoiceTemplatesListResponse;\n responseData: ManagingCompaniesInvoiceTemplatesListResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_templates_get\": {\n method: \"GET\",\n path: \"/managing-companies/invoice-templates/:managingCompanyId/:templateId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-templates\"],\n summary: \"Rechnungsvorlage laden\",\n description: \"Lädt eine einzelne Rechnungsvorlage mit allen Details und Positionen.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceTemplatesGetParams;\n query: ManagingCompaniesInvoiceTemplatesGetQuery;\n body: ManagingCompaniesInvoiceTemplatesGetBody;\n response: ManagingCompaniesInvoiceTemplatesGetResponse;\n responseData: ManagingCompaniesInvoiceTemplatesGetResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_templates_create\": {\n method: \"POST\",\n path: \"/managing-companies/invoice-templates/:managingCompanyId/create\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-templates\"],\n summary: \"Rechnungsvorlage erstellen\",\n description: \"Erstellt eine neue Rechnungsvorlage mit Positionen, Zahlungsbedingungen und optionaler Kundenbindung.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceTemplatesCreateParams;\n query: ManagingCompaniesInvoiceTemplatesCreateQuery;\n body: ManagingCompaniesInvoiceTemplatesCreateBody;\n response: ManagingCompaniesInvoiceTemplatesCreateResponse;\n responseData: ManagingCompaniesInvoiceTemplatesCreateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_templates_from_invoice\": {\n method: \"POST\",\n path: \"/managing-companies/invoice-templates/:managingCompanyId/from-invoice\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-templates\"],\n summary: \"Vorlage aus bestehender Rechnung erstellen\",\n description: \"Erstellt eine Rechnungsvorlage basierend auf einer bestehenden Rechnung. Übernimmt Positionen, Kunde, Zahlungsbedingungen und Einstellungen. Rechnungsspezifische Daten (Nummer, Datum, Status) werden entfernt.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceTemplatesFromInvoiceParams;\n query: ManagingCompaniesInvoiceTemplatesFromInvoiceQuery;\n body: ManagingCompaniesInvoiceTemplatesFromInvoiceBody;\n response: ManagingCompaniesInvoiceTemplatesFromInvoiceResponse;\n responseData: ManagingCompaniesInvoiceTemplatesFromInvoiceResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_templates_update\": {\n method: \"PUT\",\n path: \"/managing-companies/invoice-templates/:managingCompanyId/:templateId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-templates\"],\n summary: \"Rechnungsvorlage aktualisieren\",\n description: \"Aktualisiert eine bestehende Rechnungsvorlage (Name, Positionen, Einstellungen).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceTemplatesUpdateParams;\n query: ManagingCompaniesInvoiceTemplatesUpdateQuery;\n body: ManagingCompaniesInvoiceTemplatesUpdateBody;\n response: ManagingCompaniesInvoiceTemplatesUpdateResponse;\n responseData: ManagingCompaniesInvoiceTemplatesUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_templates_archive\": {\n method: \"POST\",\n path: \"/managing-companies/invoice-templates/:managingCompanyId/:templateId/archive\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-templates\"],\n summary: \"Rechnungsvorlage archivieren\",\n description: \"Archiviert eine Rechnungsvorlage (Soft-Delete). Die Vorlage bleibt für Audit-Zwecke erhalten, wird aber nicht mehr in der Standard-Liste angezeigt.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceTemplatesArchiveParams;\n query: ManagingCompaniesInvoiceTemplatesArchiveQuery;\n body: ManagingCompaniesInvoiceTemplatesArchiveBody;\n response: ManagingCompaniesInvoiceTemplatesArchiveResponse;\n responseData: ManagingCompaniesInvoiceTemplatesArchiveResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_templates_duplicate\": {\n method: \"POST\",\n path: \"/managing-companies/invoice-templates/:managingCompanyId/:templateId/duplicate\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-templates\"],\n summary: \"Rechnungsvorlage duplizieren\",\n description: \"Erstellt eine Kopie einer bestehenden Rechnungsvorlage unter neuem Namen. Nutzungsstatistiken werden zurückgesetzt.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceTemplatesDuplicateParams;\n query: ManagingCompaniesInvoiceTemplatesDuplicateQuery;\n body: ManagingCompaniesInvoiceTemplatesDuplicateBody;\n response: ManagingCompaniesInvoiceTemplatesDuplicateResponse;\n responseData: ManagingCompaniesInvoiceTemplatesDuplicateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_create\": {\n method: \"POST\",\n path: \"/managing-companies\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\"],\n summary: \"Verwaltendes Unternehmen anlegen\",\n description: \"Erstellt ein neues Managing Company (Mandant) inkl. Grunddaten. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesCreateParams;\n query: ManagingCompaniesCreateQuery;\n body: ManagingCompaniesCreateBody;\n response: ManagingCompaniesCreateResponse;\n responseData: ManagingCompaniesCreateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_list\": {\n method: \"GET\",\n path: \"/managing-companies\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\"],\n summary: \"Verwaltende Unternehmen listen\",\n description: \"Gibt die Managing Companies zurück, auf die der Benutzer Zugriff hat (paginierte Liste). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesListParams;\n query: ManagingCompaniesListQuery;\n body: ManagingCompaniesListBody;\n response: ManagingCompaniesListResponse;\n responseData: ManagingCompaniesListResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_get_by_id\": {\n method: \"GET\",\n path: \"/managing-companies/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\"],\n summary: \"Verwaltendes Unternehmen nach ID\",\n description: \"Lädt eine Managing Company per ID. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesGetByIdParams;\n query: ManagingCompaniesGetByIdQuery;\n body: ManagingCompaniesGetByIdBody;\n response: ManagingCompaniesGetByIdResponse;\n responseData: ManagingCompaniesGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_update\": {\n method: \"PUT\",\n path: \"/managing-companies/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\"],\n summary: \"Verwaltendes Unternehmen aktualisieren\",\n description: \"Aktualisiert Stammdaten/Settings einer Managing Company (z.B. ZUGFeRD Settings). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesUpdateParams;\n query: ManagingCompaniesUpdateQuery;\n body: ManagingCompaniesUpdateBody;\n response: ManagingCompaniesUpdateResponse;\n responseData: ManagingCompaniesUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_delete\": {\n method: \"DELETE\",\n path: \"/managing-companies/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\"],\n summary: \"Verwaltendes Unternehmen löschen\",\n description: \"Löscht eine Managing Company (nur wenn serverseitige Regeln es erlauben). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesDeleteParams;\n query: ManagingCompaniesDeleteQuery;\n body: ManagingCompaniesDeleteBody;\n response: ManagingCompaniesDeleteResponse;\n responseData: ManagingCompaniesDeleteResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type ManagingCompaniesCurrentExternalParams = undefined;\nexport type ManagingCompaniesCurrentExternalQuery = {\n\n};\nexport type ManagingCompaniesCurrentExternalBody = undefined;\nexport type ManagingCompaniesCurrentExternalResponseData = {\n managingCompany: {\n id: number;\n companyName: string;\n companyCountry?: string | null;\n baseCurrency?: string | null;\n companyVatId?: string | null;\n companyTaxId?: string | null;\n};\n taxation: {\n asOf: string;\n regime: string | null;\n regimeReason: string | null;\n regimeValidFrom: string | null;\n regimeValidTo: string | null;\n accountingMethod: string;\n ustvaFilingPreference: string | null;\n shouldShowVatOnInvoices: boolean;\n defaultVatTreatmentHint: \"DE_STANDARD_19\" | \"KLEINUNTERNEHMER_0\";\n legalVatHint: string;\n thresholds: {\n kleinunternehmerGraceAmount: number;\n kleinunternehmerMaxAmount: number;\n};\n};\n auth: {\n authType: \"oauth2\" | \"apikey\";\n role: \"viewer\" | \"editor\" | \"admin\" | null;\n oauth2ClientId: string | null;\n apiKeyId: number | null;\n costCenters: Array<number> | null;\n defaultCostCenter: number | null;\n};\n};\nexport type ManagingCompaniesCurrentExternalResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCurrentExternalResponseData>;\n\nexport const apiRoutes_managing_companies_external = {\n // Contract source: explicit\n \"managing_companies_current_external\": {\n method: \"GET\",\n path: \"/managing-companies/external/current\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"companies:read\"]},\n meta: {\n tags: [\"managing-companies-external\"],\n summary: \"Get current managing company context (external API)\",\n description: \"Returns the managing company of the current API credential plus VAT context (regime, accounting method, display hints) for external pricing/tax logic.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCurrentExternalParams;\n query: ManagingCompaniesCurrentExternalQuery;\n body: ManagingCompaniesCurrentExternalBody;\n response: ManagingCompaniesCurrentExternalResponse;\n responseData: ManagingCompaniesCurrentExternalResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type ManagingCompaniesLogosSettingsParams = undefined;\nexport type ManagingCompaniesLogosSettingsQuery = {\n\n};\nexport type ManagingCompaniesLogosSettingsBody = undefined;\nexport type ManagingCompaniesLogosSettingsResponseData = {\n whiteLogoKey: string | null;\n darkLogoKey: string | null;\n invoiceLogoMode: string;\n};\nexport type ManagingCompaniesLogosSettingsResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesLogosSettingsResponseData>;\n\nexport type ManagingCompaniesLogosUrlsParams = undefined;\nexport type ManagingCompaniesLogosUrlsQuery = {\n\n};\nexport type ManagingCompaniesLogosUrlsBody = undefined;\nexport type ManagingCompaniesLogosUrlsResponseData = {\n whiteLogoUrl: string | null;\n darkLogoUrl: string | null;\n invoiceLogoMode: string;\n};\nexport type ManagingCompaniesLogosUrlsResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesLogosUrlsResponseData>;\n\nexport type ManagingCompaniesLogosSetModeParams = undefined;\nexport type ManagingCompaniesLogosSetModeQuery = undefined;\nexport type ManagingCompaniesLogosSetModeBody = {\n mode: \"white\" | \"dark\";\n};\nexport type ManagingCompaniesLogosSetModeResponseData = {\n invoiceLogoMode: string;\n};\nexport type ManagingCompaniesLogosSetModeResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesLogosSetModeResponseData>;\n\nexport type ManagingCompaniesLogosUploadParams = {\n mode: \"white\" | \"dark\";\n};\nexport type ManagingCompaniesLogosUploadQuery = undefined;\nexport type ManagingCompaniesLogosUploadBody = undefined;\nexport type ManagingCompaniesLogosUploadResponseData = {\n invoiceLogoMode: string;\n};\nexport type ManagingCompaniesLogosUploadResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesLogosUploadResponseData>;\n\nexport type ManagingCompaniesLogosDeleteParams = {\n mode: \"white\" | \"dark\";\n};\nexport type ManagingCompaniesLogosDeleteQuery = undefined;\nexport type ManagingCompaniesLogosDeleteBody = undefined;\nexport type ManagingCompaniesLogosDeleteResponseData = null;\nexport type ManagingCompaniesLogosDeleteResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesLogosDeleteResponseData>;\n\nexport const apiRoutes_managing_company_logos = {\n // Contract source: explicit\n \"managing_companies_logos_settings\": {\n method: \"GET\",\n path: \"/managing-companies/logos/settings\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-company-logos\"],\n summary: \"Logo-Settings abrufen\",\n description: \"Gibt die aktuellen Logo-Einstellungen (S3-Keys + Modus) der ausgewaehlten Managing Company zurueck.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesLogosSettingsParams;\n query: ManagingCompaniesLogosSettingsQuery;\n body: ManagingCompaniesLogosSettingsBody;\n response: ManagingCompaniesLogosSettingsResponse;\n responseData: ManagingCompaniesLogosSettingsResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_logos_urls\": {\n method: \"GET\",\n path: \"/managing-companies/logos/urls\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-company-logos\"],\n summary: \"Logo-Download-URLs abrufen\",\n description: \"Gibt presigned Download-URLs (1h gueltig) fuer beide Logos zurueck. Null wenn kein Logo hochgeladen.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesLogosUrlsParams;\n query: ManagingCompaniesLogosUrlsQuery;\n body: ManagingCompaniesLogosUrlsBody;\n response: ManagingCompaniesLogosUrlsResponse;\n responseData: ManagingCompaniesLogosUrlsResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_logos_set_mode\": {\n method: \"PUT\",\n path: \"/managing-companies/logos/mode\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-company-logos\"],\n summary: \"Logo-Modus setzen\",\n description: \"Setzt den Standard-Logo-Modus fuer Rechnungen (white oder dark). Bestimmt welches Logo auf PDFs verwendet wird.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesLogosSetModeParams;\n query: ManagingCompaniesLogosSetModeQuery;\n body: ManagingCompaniesLogosSetModeBody;\n response: ManagingCompaniesLogosSetModeResponse;\n responseData: ManagingCompaniesLogosSetModeResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_logos_upload\": {\n method: \"POST\",\n path: \"/managing-companies/logos/upload/:mode\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-company-logos\"],\n summary: \"Logo hochladen\",\n description: \"Laedt ein Logo (white oder dark) fuer die Managing Company hoch. Erlaubte Formate: PNG, JPEG, SVG. Max 5MB. Ersetzt ein eventuell vorhandenes Logo.\",\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesLogosUploadParams;\n query: ManagingCompaniesLogosUploadQuery;\n body: ManagingCompaniesLogosUploadBody;\n response: ManagingCompaniesLogosUploadResponse;\n responseData: ManagingCompaniesLogosUploadResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_logos_delete\": {\n method: \"DELETE\",\n path: \"/managing-companies/logos/delete/:mode\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-company-logos\"],\n summary: \"Logo loeschen\",\n description: \"Loescht das Logo (white oder dark) der Managing Company aus S3 und setzt den DB-Eintrag zurueck.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesLogosDeleteParams;\n query: ManagingCompaniesLogosDeleteQuery;\n body: ManagingCompaniesLogosDeleteBody;\n response: ManagingCompaniesLogosDeleteResponse;\n responseData: ManagingCompaniesLogosDeleteResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { OAuth2AuditLog, PaginatedResult, UnsensitiveOAuth2Client } from \"../../frontend-types\";\n\nexport type Oauth2TokenParams = undefined;\nexport type Oauth2TokenQuery = undefined;\nexport type Oauth2TokenBody = {\n grant_type: \"client_credentials\" | \"refresh_token\";\n client_id: string;\n client_secret: string;\n scope?: string;\n refresh_token?: string;\n};\nexport type Oauth2TokenResponseData = {\n access_token: string;\n refresh_token?: string;\n token_type: string;\n expires_in: number;\n scope?: string;\n};\nexport type Oauth2TokenResponse = Oauth2TokenResponseData;\n\nexport type Oauth2RevokeParams = undefined;\nexport type Oauth2RevokeQuery = undefined;\nexport type Oauth2RevokeBody = {\n token: string;\n client_id: string;\n client_secret: string;\n token_type_hint?: \"refresh_token\" | \"access_token\";\n};\nexport type Oauth2RevokeResponseData = {\n status: \"ok\";\n};\nexport type Oauth2RevokeResponse = Oauth2RevokeResponseData;\n\nexport type Oauth2ClientsCreateParams = undefined;\nexport type Oauth2ClientsCreateQuery = undefined;\nexport type Oauth2ClientsCreateBody = {\n name: string;\n description?: string;\n role: \"viewer\" | \"editor\" | \"admin\";\n scopes?: Array<string>;\n defaultCostCenter?: number;\n availableCostCenters?: Array<number>;\n accessTokenTtl?: number;\n refreshTokenTtl?: number;\n allowedIps?: Array<string>;\n rateLimitPerMinute?: number;\n rateLimitPerHour?: number;\n validTo?: string;\n};\nexport type Oauth2ClientsCreateResponseData = { client: UnsensitiveOAuth2Client; credentials: { client_id: string; client_secret: string; warning: string } };\nexport type Oauth2ClientsCreateResponse = import(\"../types\").ApiEnvelope<Oauth2ClientsCreateResponseData>;\n\nexport type Oauth2ClientsListParams = undefined;\nexport type Oauth2ClientsListQuery = {\n page?: number;\n pageSize?: number;\n};\nexport type Oauth2ClientsListBody = undefined;\nexport type Oauth2ClientsListResponseData = PaginatedResult<UnsensitiveOAuth2Client>;\nexport type Oauth2ClientsListResponse = import(\"../types\").ApiEnvelope<Oauth2ClientsListResponseData>;\n\nexport type Oauth2ClientsRevokeParams = {\n id: number;\n};\nexport type Oauth2ClientsRevokeQuery = undefined;\nexport type Oauth2ClientsRevokeBody = undefined;\nexport type Oauth2ClientsRevokeResponseData = null;\nexport type Oauth2ClientsRevokeResponse = import(\"../types\").ApiEnvelope<Oauth2ClientsRevokeResponseData>;\n\nexport type Oauth2ClientsAuditParams = {\n id: number;\n};\nexport type Oauth2ClientsAuditQuery = {\n page?: number;\n pageSize?: number;\n};\nexport type Oauth2ClientsAuditBody = undefined;\nexport type Oauth2ClientsAuditResponseData = PaginatedResult<OAuth2AuditLog>;\nexport type Oauth2ClientsAuditResponse = import(\"../types\").ApiEnvelope<Oauth2ClientsAuditResponseData>;\n\nexport type Oauth2ClientsUpdateParams = {\n id: number;\n};\nexport type Oauth2ClientsUpdateQuery = undefined;\nexport type Oauth2ClientsUpdateBody = {\n name?: string;\n description?: string;\n role?: \"viewer\" | \"editor\" | \"admin\";\n scopes?: Array<string>;\n defaultCostCenter?: number;\n availableCostCenters?: Array<number>;\n accessTokenTtl?: number;\n refreshTokenTtl?: number;\n allowedIps?: Array<string>;\n rateLimitPerMinute?: number;\n rateLimitPerHour?: number;\n validTo?: string;\n};\nexport type Oauth2ClientsUpdateResponseData = UnsensitiveOAuth2Client;\nexport type Oauth2ClientsUpdateResponse = import(\"../types\").ApiEnvelope<Oauth2ClientsUpdateResponseData>;\n\nexport type Oauth2ScopesListParams = undefined;\nexport type Oauth2ScopesListQuery = {\n\n};\nexport type Oauth2ScopesListBody = undefined;\nexport type Oauth2ScopesListResponseData = Record<string, Array<string>>;\nexport type Oauth2ScopesListResponse = import(\"../types\").ApiEnvelope<Oauth2ScopesListResponseData>;\n\nexport const apiRoutes_oauth2 = {\n // Contract source: explicit\n \"oauth2_token\": {\n method: \"POST\",\n path: \"/oauth/token\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"oauth2\"],\n bodyContentType: \"application/x-www-form-urlencoded\",\n },\n types: null as unknown as {\n params: Oauth2TokenParams;\n query: Oauth2TokenQuery;\n body: Oauth2TokenBody;\n response: Oauth2TokenResponse;\n responseData: Oauth2TokenResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_revoke\": {\n method: \"POST\",\n path: \"/oauth/revoke\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"oauth2\"],\n bodyContentType: \"application/x-www-form-urlencoded\",\n },\n types: null as unknown as {\n params: Oauth2RevokeParams;\n query: Oauth2RevokeQuery;\n body: Oauth2RevokeBody;\n response: Oauth2RevokeResponse;\n responseData: Oauth2RevokeResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_clients_create\": {\n method: \"POST\",\n path: \"/oauth/clients/create\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"oauth2\"],\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: Oauth2ClientsCreateParams;\n query: Oauth2ClientsCreateQuery;\n body: Oauth2ClientsCreateBody;\n response: Oauth2ClientsCreateResponse;\n responseData: Oauth2ClientsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_clients_list\": {\n method: \"GET\",\n path: \"/oauth/clients/list\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"oauth2\"],\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ClientsListParams;\n query: Oauth2ClientsListQuery;\n body: Oauth2ClientsListBody;\n response: Oauth2ClientsListResponse;\n responseData: Oauth2ClientsListResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_clients_revoke\": {\n method: \"DELETE\",\n path: \"/oauth/clients/revoke/:id\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"oauth2\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ClientsRevokeParams;\n query: Oauth2ClientsRevokeQuery;\n body: Oauth2ClientsRevokeBody;\n response: Oauth2ClientsRevokeResponse;\n responseData: Oauth2ClientsRevokeResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_clients_audit\": {\n method: \"GET\",\n path: \"/oauth/clients/audit/:id\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"oauth2\"],\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ClientsAuditParams;\n query: Oauth2ClientsAuditQuery;\n body: Oauth2ClientsAuditBody;\n response: Oauth2ClientsAuditResponse;\n responseData: Oauth2ClientsAuditResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_clients_update\": {\n method: \"PUT\",\n path: \"/oauth/clients/update/:id\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"oauth2\"],\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: Oauth2ClientsUpdateParams;\n query: Oauth2ClientsUpdateQuery;\n body: Oauth2ClientsUpdateBody;\n response: Oauth2ClientsUpdateResponse;\n responseData: Oauth2ClientsUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_scopes_list\": {\n method: \"GET\",\n path: \"/oauth/scopes\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"oauth2\"],\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ScopesListParams;\n query: Oauth2ScopesListQuery;\n body: Oauth2ScopesListBody;\n response: Oauth2ScopesListResponse;\n responseData: Oauth2ScopesListResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { PaginatedResult, UnsensitiveOAuth2Client } from \"../../frontend-types\";\n\nexport type Oauth2ExternalClientsListParams = undefined;\nexport type Oauth2ExternalClientsListQuery = {\n page?: number;\n pageSize?: number;\n search?: string;\n isActive?: boolean;\n role?: \"viewer\" | \"editor\" | \"admin\";\n managingCompanyId?: number;\n};\nexport type Oauth2ExternalClientsListBody = undefined;\nexport type Oauth2ExternalClientsListResponseData = PaginatedResult<UnsensitiveOAuth2Client>;\nexport type Oauth2ExternalClientsListResponse = import(\"../types\").ApiEnvelope<Oauth2ExternalClientsListResponseData>;\n\nexport type Oauth2ExternalClientsGetParams = {\n idOrClientId: string;\n};\nexport type Oauth2ExternalClientsGetQuery = undefined;\nexport type Oauth2ExternalClientsGetBody = undefined;\nexport type Oauth2ExternalClientsGetResponseData = {\n id: number;\n clientId: string;\n name: string;\n description?: string | null;\n managingCompanyId: number;\n defaultCostCenter?: number | null;\n availableCostCenters?: string | null;\n role: string;\n scopes?: string | null;\n accessTokenTtl: number;\n refreshTokenTtl: number;\n maxTokensPerClient: number;\n allowedIps?: string | null;\n allowedOrigins?: string | null;\n rateLimitPerMinute: number;\n rateLimitPerHour: number;\n isActive: boolean;\n revokedAt?: string | null;\n validFrom: string;\n validTo?: string | null;\n createdBy: number;\n createdAt: string;\n updatedAt?: string | null;\n lastUsedAt?: string | null;\n lastRotatedAt?: string | null;\n supersededAt?: string | null;\n hasPreviousSecret?: boolean;\n};\nexport type Oauth2ExternalClientsGetResponse = import(\"../types\").ApiEnvelope<Oauth2ExternalClientsGetResponseData>;\n\nexport type Oauth2ExternalClientsCreateParams = undefined;\nexport type Oauth2ExternalClientsCreateQuery = undefined;\nexport type Oauth2ExternalClientsCreateBody = {\n name: string;\n description?: string;\n role?: \"viewer\" | \"editor\" | \"admin\";\n scopes?: Array<string>;\n managingCompanyId?: number;\n defaultCostCenter?: number;\n availableCostCenters?: Array<number>;\n accessTokenTtl?: number;\n refreshTokenTtl?: number;\n allowedIps?: Array<string>;\n rateLimitPerMinute?: number;\n rateLimitPerHour?: number;\n validTo?: string;\n};\nexport type Oauth2ExternalClientsCreateResponseData = {\n client: {\n id: number;\n clientId: string;\n name: string;\n description?: string | null;\n managingCompanyId: number;\n defaultCostCenter?: number | null;\n availableCostCenters?: string | null;\n role: string;\n scopes?: string | null;\n accessTokenTtl: number;\n refreshTokenTtl: number;\n maxTokensPerClient: number;\n allowedIps?: string | null;\n allowedOrigins?: string | null;\n rateLimitPerMinute: number;\n rateLimitPerHour: number;\n isActive: boolean;\n revokedAt?: string | null;\n validFrom: string;\n validTo?: string | null;\n createdBy: number;\n createdAt: string;\n updatedAt?: string | null;\n lastUsedAt?: string | null;\n lastRotatedAt?: string | null;\n supersededAt?: string | null;\n hasPreviousSecret?: boolean;\n};\n credentials: {\n client_id: string;\n client_secret: string;\n warning: string;\n};\n};\nexport type Oauth2ExternalClientsCreateResponse = import(\"../types\").ApiEnvelope<Oauth2ExternalClientsCreateResponseData>;\n\nexport type Oauth2ExternalClientsUpdateParams = {\n idOrClientId: string;\n};\nexport type Oauth2ExternalClientsUpdateQuery = undefined;\nexport type Oauth2ExternalClientsUpdateBody = {\n name?: string;\n description?: string;\n role?: \"viewer\" | \"editor\" | \"admin\";\n scopes?: Array<string>;\n managingCompanyId?: number;\n defaultCostCenter?: number;\n availableCostCenters?: Array<number>;\n accessTokenTtl?: number;\n refreshTokenTtl?: number;\n allowedIps?: Array<string>;\n rateLimitPerMinute?: number;\n rateLimitPerHour?: number;\n validTo?: string;\n isActive?: boolean;\n};\nexport type Oauth2ExternalClientsUpdateResponseData = {\n id: number;\n clientId: string;\n name: string;\n description?: string | null;\n managingCompanyId: number;\n defaultCostCenter?: number | null;\n availableCostCenters?: string | null;\n role: string;\n scopes?: string | null;\n accessTokenTtl: number;\n refreshTokenTtl: number;\n maxTokensPerClient: number;\n allowedIps?: string | null;\n allowedOrigins?: string | null;\n rateLimitPerMinute: number;\n rateLimitPerHour: number;\n isActive: boolean;\n revokedAt?: string | null;\n validFrom: string;\n validTo?: string | null;\n createdBy: number;\n createdAt: string;\n updatedAt?: string | null;\n lastUsedAt?: string | null;\n lastRotatedAt?: string | null;\n supersededAt?: string | null;\n hasPreviousSecret?: boolean;\n};\nexport type Oauth2ExternalClientsUpdateResponse = import(\"../types\").ApiEnvelope<Oauth2ExternalClientsUpdateResponseData>;\n\nexport type Oauth2ExternalClientsRotateParams = {\n idOrClientId: string;\n};\nexport type Oauth2ExternalClientsRotateQuery = undefined;\nexport type Oauth2ExternalClientsRotateBody = undefined;\nexport type Oauth2ExternalClientsRotateResponseData = {\n client: {\n id: number;\n clientId: string;\n name: string;\n description?: string | null;\n managingCompanyId: number;\n defaultCostCenter?: number | null;\n availableCostCenters?: string | null;\n role: string;\n scopes?: string | null;\n accessTokenTtl: number;\n refreshTokenTtl: number;\n maxTokensPerClient: number;\n allowedIps?: string | null;\n allowedOrigins?: string | null;\n rateLimitPerMinute: number;\n rateLimitPerHour: number;\n isActive: boolean;\n revokedAt?: string | null;\n validFrom: string;\n validTo?: string | null;\n createdBy: number;\n createdAt: string;\n updatedAt?: string | null;\n lastUsedAt?: string | null;\n lastRotatedAt?: string | null;\n supersededAt?: string | null;\n hasPreviousSecret?: boolean;\n};\n credentials: {\n client_id: string;\n client_secret: string;\n warning: string;\n};\n lastRotatedAt: string;\n};\nexport type Oauth2ExternalClientsRotateResponse = import(\"../types\").ApiEnvelope<Oauth2ExternalClientsRotateResponseData>;\n\nexport type Oauth2ExternalClientsRetireParams = {\n idOrClientId: string;\n};\nexport type Oauth2ExternalClientsRetireQuery = undefined;\nexport type Oauth2ExternalClientsRetireBody = undefined;\nexport type Oauth2ExternalClientsRetireResponseData = {\n client: {\n id: number;\n clientId: string;\n name: string;\n description?: string | null;\n managingCompanyId: number;\n defaultCostCenter?: number | null;\n availableCostCenters?: string | null;\n role: string;\n scopes?: string | null;\n accessTokenTtl: number;\n refreshTokenTtl: number;\n maxTokensPerClient: number;\n allowedIps?: string | null;\n allowedOrigins?: string | null;\n rateLimitPerMinute: number;\n rateLimitPerHour: number;\n isActive: boolean;\n revokedAt?: string | null;\n validFrom: string;\n validTo?: string | null;\n createdBy: number;\n createdAt: string;\n updatedAt?: string | null;\n lastUsedAt?: string | null;\n lastRotatedAt?: string | null;\n supersededAt?: string | null;\n hasPreviousSecret?: boolean;\n};\n retired: boolean;\n};\nexport type Oauth2ExternalClientsRetireResponse = import(\"../types\").ApiEnvelope<Oauth2ExternalClientsRetireResponseData>;\n\nexport type Oauth2ExternalClientsRollbackParams = {\n idOrClientId: string;\n};\nexport type Oauth2ExternalClientsRollbackQuery = undefined;\nexport type Oauth2ExternalClientsRollbackBody = undefined;\nexport type Oauth2ExternalClientsRollbackResponseData = {\n client: {\n id: number;\n clientId: string;\n name: string;\n description?: string | null;\n managingCompanyId: number;\n defaultCostCenter?: number | null;\n availableCostCenters?: string | null;\n role: string;\n scopes?: string | null;\n accessTokenTtl: number;\n refreshTokenTtl: number;\n maxTokensPerClient: number;\n allowedIps?: string | null;\n allowedOrigins?: string | null;\n rateLimitPerMinute: number;\n rateLimitPerHour: number;\n isActive: boolean;\n revokedAt?: string | null;\n validFrom: string;\n validTo?: string | null;\n createdBy: number;\n createdAt: string;\n updatedAt?: string | null;\n lastUsedAt?: string | null;\n lastRotatedAt?: string | null;\n supersededAt?: string | null;\n hasPreviousSecret?: boolean;\n};\n retired: boolean;\n};\nexport type Oauth2ExternalClientsRollbackResponse = import(\"../types\").ApiEnvelope<Oauth2ExternalClientsRollbackResponseData>;\n\nexport type Oauth2ExternalClientsRevokeParams = {\n idOrClientId: string;\n};\nexport type Oauth2ExternalClientsRevokeQuery = undefined;\nexport type Oauth2ExternalClientsRevokeBody = undefined;\nexport type Oauth2ExternalClientsRevokeResponseData = null;\nexport type Oauth2ExternalClientsRevokeResponse = import(\"../types\").ApiEnvelope<Oauth2ExternalClientsRevokeResponseData>;\n\nexport type Oauth2ExternalClientsDeleteParams = {\n idOrClientId: string;\n};\nexport type Oauth2ExternalClientsDeleteQuery = undefined;\nexport type Oauth2ExternalClientsDeleteBody = undefined;\nexport type Oauth2ExternalClientsDeleteResponseData = null;\nexport type Oauth2ExternalClientsDeleteResponse = import(\"../types\").ApiEnvelope<Oauth2ExternalClientsDeleteResponseData>;\n\nexport const apiRoutes_oauth2_external = {\n // Contract source: explicit\n \"oauth2_external_clients_list\": {\n method: \"GET\",\n path: \"/oauth/clients/external/list\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"oauth2-external\"],\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ExternalClientsListParams;\n query: Oauth2ExternalClientsListQuery;\n body: Oauth2ExternalClientsListBody;\n response: Oauth2ExternalClientsListResponse;\n responseData: Oauth2ExternalClientsListResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_external_clients_get\": {\n method: \"GET\",\n path: \"/oauth/clients/external/:idOrClientId\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"oauth2-external\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ExternalClientsGetParams;\n query: Oauth2ExternalClientsGetQuery;\n body: Oauth2ExternalClientsGetBody;\n response: Oauth2ExternalClientsGetResponse;\n responseData: Oauth2ExternalClientsGetResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_external_clients_create\": {\n method: \"POST\",\n path: \"/oauth/clients/external\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"oauth2-external\"],\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: Oauth2ExternalClientsCreateParams;\n query: Oauth2ExternalClientsCreateQuery;\n body: Oauth2ExternalClientsCreateBody;\n response: Oauth2ExternalClientsCreateResponse;\n responseData: Oauth2ExternalClientsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_external_clients_update\": {\n method: \"PUT\",\n path: \"/oauth/clients/external/:idOrClientId\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"oauth2-external\"],\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: Oauth2ExternalClientsUpdateParams;\n query: Oauth2ExternalClientsUpdateQuery;\n body: Oauth2ExternalClientsUpdateBody;\n response: Oauth2ExternalClientsUpdateResponse;\n responseData: Oauth2ExternalClientsUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_external_clients_rotate\": {\n method: \"POST\",\n path: \"/oauth/clients/external/:idOrClientId/rotate\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"oauth2-external\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ExternalClientsRotateParams;\n query: Oauth2ExternalClientsRotateQuery;\n body: Oauth2ExternalClientsRotateBody;\n response: Oauth2ExternalClientsRotateResponse;\n responseData: Oauth2ExternalClientsRotateResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_external_clients_retire\": {\n method: \"POST\",\n path: \"/oauth/clients/external/:idOrClientId/retire\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"oauth2-external\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ExternalClientsRetireParams;\n query: Oauth2ExternalClientsRetireQuery;\n body: Oauth2ExternalClientsRetireBody;\n response: Oauth2ExternalClientsRetireResponse;\n responseData: Oauth2ExternalClientsRetireResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_external_clients_rollback\": {\n method: \"POST\",\n path: \"/oauth/clients/external/:idOrClientId/rollback\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"oauth2-external\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ExternalClientsRollbackParams;\n query: Oauth2ExternalClientsRollbackQuery;\n body: Oauth2ExternalClientsRollbackBody;\n response: Oauth2ExternalClientsRollbackResponse;\n responseData: Oauth2ExternalClientsRollbackResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_external_clients_revoke\": {\n method: \"POST\",\n path: \"/oauth/clients/external/:idOrClientId/revoke\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"oauth2-external\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ExternalClientsRevokeParams;\n query: Oauth2ExternalClientsRevokeQuery;\n body: Oauth2ExternalClientsRevokeBody;\n response: Oauth2ExternalClientsRevokeResponse;\n responseData: Oauth2ExternalClientsRevokeResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_external_clients_delete\": {\n method: \"DELETE\",\n path: \"/oauth/clients/external/:idOrClientId\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"oauth2-external\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ExternalClientsDeleteParams;\n query: Oauth2ExternalClientsDeleteQuery;\n body: Oauth2ExternalClientsDeleteBody;\n response: Oauth2ExternalClientsDeleteResponse;\n responseData: Oauth2ExternalClientsDeleteResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { Permission, RolePermission } from \"../../frontend-types\";\n\nexport type PermissionsCreateParams = undefined;\nexport type PermissionsCreateQuery = undefined;\nexport type PermissionsCreateBody = {\n name: string;\n description: string;\n};\nexport type PermissionsCreateResponseData = Permission;\nexport type PermissionsCreateResponse = import(\"../types\").ApiEnvelope<PermissionsCreateResponseData>;\n\nexport type PermissionsSyncParams = undefined;\nexport type PermissionsSyncQuery = {\n\n};\nexport type PermissionsSyncBody = undefined;\nexport type PermissionsSyncResponseData = { created: Permission[]; existing: Permission[]; total: number };\nexport type PermissionsSyncResponse = import(\"../types\").ApiEnvelope<PermissionsSyncResponseData>;\n\nexport type PermissionsListParams = undefined;\nexport type PermissionsListQuery = {\n\n};\nexport type PermissionsListBody = undefined;\nexport type PermissionsListResponseData = Permission[];\nexport type PermissionsListResponse = import(\"../types\").ApiEnvelope<PermissionsListResponseData>;\n\nexport type PermissionsAssignToRoleParams = {\n roleId: number;\n permissionId: number;\n};\nexport type PermissionsAssignToRoleQuery = undefined;\nexport type PermissionsAssignToRoleBody = undefined;\nexport type PermissionsAssignToRoleResponseData = null;\nexport type PermissionsAssignToRoleResponse = import(\"../types\").ApiEnvelope<PermissionsAssignToRoleResponseData>;\n\nexport type PermissionsUnassignFromRoleParams = {\n roleId: number;\n permissionId: number;\n};\nexport type PermissionsUnassignFromRoleQuery = undefined;\nexport type PermissionsUnassignFromRoleBody = undefined;\nexport type PermissionsUnassignFromRoleResponseData = null;\nexport type PermissionsUnassignFromRoleResponse = import(\"../types\").ApiEnvelope<PermissionsUnassignFromRoleResponseData>;\n\nexport type PermissionsAssignmentsListParams = undefined;\nexport type PermissionsAssignmentsListQuery = {\n\n};\nexport type PermissionsAssignmentsListBody = undefined;\nexport type PermissionsAssignmentsListResponseData = RolePermission[];\nexport type PermissionsAssignmentsListResponse = import(\"../types\").ApiEnvelope<PermissionsAssignmentsListResponseData>;\n\nexport const apiRoutes_permissions = {\n // Contract source: explicit\n \"permissions_create\": {\n method: \"POST\",\n path: \"/permissions/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"permissions_manage\"},\n meta: {\n tags: [\"permissions\"],\n summary: \"Create permission\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PermissionsCreateParams;\n query: PermissionsCreateQuery;\n body: PermissionsCreateBody;\n response: PermissionsCreateResponse;\n responseData: PermissionsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"permissions_sync\": {\n method: \"POST\",\n path: \"/permissions/sync\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"permissions_manage\"},\n meta: {\n tags: [\"permissions\"],\n summary: \"Sync default permissions\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PermissionsSyncParams;\n query: PermissionsSyncQuery;\n body: PermissionsSyncBody;\n response: PermissionsSyncResponse;\n responseData: PermissionsSyncResponseData;\n },\n },\n // Contract source: explicit\n \"permissions_list\": {\n method: \"GET\",\n path: \"/permissions/getAll\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"permissions_manage\"},\n meta: {\n tags: [\"permissions\"],\n summary: \"List permissions\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PermissionsListParams;\n query: PermissionsListQuery;\n body: PermissionsListBody;\n response: PermissionsListResponse;\n responseData: PermissionsListResponseData;\n },\n },\n // Contract source: explicit\n \"permissions_assign_to_role\": {\n method: \"POST\",\n path: \"/permissions/assign/:roleId/:permissionId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"permissions_manage\"},\n meta: {\n tags: [\"permissions\"],\n summary: \"Assign permission to role\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PermissionsAssignToRoleParams;\n query: PermissionsAssignToRoleQuery;\n body: PermissionsAssignToRoleBody;\n response: PermissionsAssignToRoleResponse;\n responseData: PermissionsAssignToRoleResponseData;\n },\n },\n // Contract source: explicit\n \"permissions_unassign_from_role\": {\n method: \"DELETE\",\n path: \"/permissions/unassign/:roleId/:permissionId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"permissions_manage\"},\n meta: {\n tags: [\"permissions\"],\n summary: \"Unassign permission from role\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PermissionsUnassignFromRoleParams;\n query: PermissionsUnassignFromRoleQuery;\n body: PermissionsUnassignFromRoleBody;\n response: PermissionsUnassignFromRoleResponse;\n responseData: PermissionsUnassignFromRoleResponseData;\n },\n },\n // Contract source: explicit\n \"permissions_assignments_list\": {\n method: \"GET\",\n path: \"/permissions/getAssignments\",\n auth: {\"type\":\"composite_and\",\"items\":[{\"type\":\"frontend_permission_http\",\"permission\":\"permissions_manage\"},{\"type\":\"frontend_permission_http\",\"permission\":\"permissions_history_view\"}]},\n meta: {\n tags: [\"permissions\"],\n summary: \"List role-permission assignments\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PermissionsAssignmentsListParams;\n query: PermissionsAssignmentsListQuery;\n body: PermissionsAssignmentsListBody;\n response: PermissionsAssignmentsListResponse;\n responseData: PermissionsAssignmentsListResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { Permission, Role, RoleAssignment, RolePermission } from \"../../frontend-types\";\n\nexport type RolesCreateParams = undefined;\nexport type RolesCreateQuery = undefined;\nexport type RolesCreateBody = {\n name: string;\n description: string;\n isSellable?: boolean;\n};\nexport type RolesCreateResponseData = null;\nexport type RolesCreateResponse = import(\"../types\").ApiEnvelope<RolesCreateResponseData>;\n\nexport type RolesDeleteParams = {\n roleId: number;\n};\nexport type RolesDeleteQuery = undefined;\nexport type RolesDeleteBody = undefined;\nexport type RolesDeleteResponseData = Role;\nexport type RolesDeleteResponse = import(\"../types\").ApiEnvelope<RolesDeleteResponseData>;\n\nexport type RolesUpdateParams = {\n roleId: number;\n};\nexport type RolesUpdateQuery = undefined;\nexport type RolesUpdateBody = {\n name: string;\n description: string;\n};\nexport type RolesUpdateResponseData = Role;\nexport type RolesUpdateResponse = import(\"../types\").ApiEnvelope<RolesUpdateResponseData>;\n\nexport type RolesGetByIdParams = {\n roleId: number;\n};\nexport type RolesGetByIdQuery = undefined;\nexport type RolesGetByIdBody = undefined;\nexport type RolesGetByIdResponseData = Role;\nexport type RolesGetByIdResponse = import(\"../types\").ApiEnvelope<RolesGetByIdResponseData>;\n\nexport type RolesListParams = undefined;\nexport type RolesListQuery = {\n\n};\nexport type RolesListBody = undefined;\nexport type RolesListResponseData = { roles: Role[]; roleAssignments: RoleAssignment[]; permissions: Permission[]; rolePermissions: RolePermission[]; canSeeHistory: boolean };\nexport type RolesListResponse = import(\"../types\").ApiEnvelope<RolesListResponseData>;\n\nexport type RoleAssignmentsCreateParams = {\n userId: number;\n roleId: number;\n};\nexport type RoleAssignmentsCreateQuery = undefined;\nexport type RoleAssignmentsCreateBody = {\n validFrom?: string;\n};\nexport type RoleAssignmentsCreateResponseData = RoleAssignment;\nexport type RoleAssignmentsCreateResponse = import(\"../types\").ApiEnvelope<RoleAssignmentsCreateResponseData>;\n\nexport type RoleAssignmentsRevokeParams = {\n userId: number;\n roleId: number;\n};\nexport type RoleAssignmentsRevokeQuery = undefined;\nexport type RoleAssignmentsRevokeBody = undefined;\nexport type RoleAssignmentsRevokeResponseData = null;\nexport type RoleAssignmentsRevokeResponse = import(\"../types\").ApiEnvelope<RoleAssignmentsRevokeResponseData>;\n\nexport type RoleAssignmentsListParams = undefined;\nexport type RoleAssignmentsListQuery = {\n\n};\nexport type RoleAssignmentsListBody = undefined;\nexport type RoleAssignmentsListResponseData = RoleAssignment[];\nexport type RoleAssignmentsListResponse = import(\"../types\").ApiEnvelope<RoleAssignmentsListResponseData>;\n\nexport type RoleAssignmentsGetUserAssignmentsParams = {\n userId: number;\n};\nexport type RoleAssignmentsGetUserAssignmentsQuery = undefined;\nexport type RoleAssignmentsGetUserAssignmentsBody = undefined;\nexport type RoleAssignmentsGetUserAssignmentsResponseData = RoleAssignment[];\nexport type RoleAssignmentsGetUserAssignmentsResponse = import(\"../types\").ApiEnvelope<RoleAssignmentsGetUserAssignmentsResponseData>;\n\nexport const apiRoutes_roles = {\n // Contract source: explicit\n \"roles_create\": {\n method: \"POST\",\n path: \"/roles/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"roles_manage\"},\n meta: {\n tags: [\"roles\"],\n summary: \"Create role\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: RolesCreateParams;\n query: RolesCreateQuery;\n body: RolesCreateBody;\n response: RolesCreateResponse;\n responseData: RolesCreateResponseData;\n },\n },\n // Contract source: explicit\n \"roles_delete\": {\n method: \"DELETE\",\n path: \"/roles/delete/:roleId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"roles_manage\"},\n meta: {\n tags: [\"roles\"],\n summary: \"Delete role\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: RolesDeleteParams;\n query: RolesDeleteQuery;\n body: RolesDeleteBody;\n response: RolesDeleteResponse;\n responseData: RolesDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"roles_update\": {\n method: \"PUT\",\n path: \"/roles/update/:roleId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"roles_manage\"},\n meta: {\n tags: [\"roles\"],\n summary: \"Update role\",\n bodyContentType: \"application/json\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: RolesUpdateParams;\n query: RolesUpdateQuery;\n body: RolesUpdateBody;\n response: RolesUpdateResponse;\n responseData: RolesUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"roles_get_by_id\": {\n method: \"GET\",\n path: \"/roles/getById/:roleId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"roles_manage\"},\n meta: {\n tags: [\"roles\"],\n summary: \"Get role by id\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: RolesGetByIdParams;\n query: RolesGetByIdQuery;\n body: RolesGetByIdBody;\n response: RolesGetByIdResponse;\n responseData: RolesGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"roles_list\": {\n method: \"GET\",\n path: \"/roles/getAll\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"roles_manage\"},\n meta: {\n tags: [\"roles\"],\n summary: \"Get role base data\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: RolesListParams;\n query: RolesListQuery;\n body: RolesListBody;\n response: RolesListResponse;\n responseData: RolesListResponseData;\n },\n },\n // Contract source: explicit\n \"role_assignments_create\": {\n method: \"POST\",\n path: \"/role-assignments/create/:userId/:roleId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"roles_manage\"},\n meta: {\n tags: [\"roles\",\"role-assignments\"],\n summary: \"Assign role to user\",\n bodyContentType: \"application/json\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: RoleAssignmentsCreateParams;\n query: RoleAssignmentsCreateQuery;\n body: RoleAssignmentsCreateBody;\n response: RoleAssignmentsCreateResponse;\n responseData: RoleAssignmentsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"role_assignments_revoke\": {\n method: \"DELETE\",\n path: \"/role-assignments/delete/:userId/:roleId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"roles_manage\"},\n meta: {\n tags: [\"roles\",\"role-assignments\"],\n summary: \"Revoke role from user\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: RoleAssignmentsRevokeParams;\n query: RoleAssignmentsRevokeQuery;\n body: RoleAssignmentsRevokeBody;\n response: RoleAssignmentsRevokeResponse;\n responseData: RoleAssignmentsRevokeResponseData;\n },\n },\n // Contract source: explicit\n \"role_assignments_list\": {\n method: \"GET\",\n path: \"/role-assignments/getAll\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"roles_history_view\"},\n meta: {\n tags: [\"roles\",\"role-assignments\"],\n summary: \"List all role assignments\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: RoleAssignmentsListParams;\n query: RoleAssignmentsListQuery;\n body: RoleAssignmentsListBody;\n response: RoleAssignmentsListResponse;\n responseData: RoleAssignmentsListResponseData;\n },\n },\n // Contract source: explicit\n \"role_assignments_get_user_assignments\": {\n method: \"GET\",\n path: \"/role-assignments/getUserAssignments/:userId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"roles_manage\"},\n meta: {\n tags: [\"roles\",\"role-assignments\"],\n summary: \"List active role assignments for one user\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: RoleAssignmentsGetUserAssignmentsParams;\n query: RoleAssignmentsGetUserAssignmentsQuery;\n body: RoleAssignmentsGetUserAssignmentsBody;\n response: RoleAssignmentsGetUserAssignmentsResponse;\n responseData: RoleAssignmentsGetUserAssignmentsResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type GETSecurityPublicParams = undefined;\nexport type GETSecurityPublicQuery = undefined;\nexport type GETSecurityPublicBody = undefined;\nexport type GETSecurityPublicResponseData = { schemaVersion: 2; appId: string; revision: number; publishedAt: string | null; researchers: Array<{ id: string; name: string; headline?: string; company?: string; country?: string; avatar?: string; links: { linkedin?: string; github?: string; x?: string; website?: string } }>; credits: Array<{ id: string; researcherId: string; title: { de?: string; en?: string }; summary: { de?: string; en?: string }; category: string; severity: string; acknowledgedAt: string; reportedAt?: string; fixedAt?: string }> };\nexport type GETSecurityPublicResponse = import(\"../types\").ApiEnvelope<GETSecurityPublicResponseData>;\n\nexport const apiRoutes_security = {\n // Contract source: explicit\n \"GET__security_public\": {\n method: \"GET\",\n path: \"/security/public\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"security\"],\n summary: \"Published security credits for the authenticated frontend edge\",\n description: \"The x-api-key must identify a frontend in FRONTEND_KEYS; a supplied app ID cannot select another frontend.\",\n validated: {\"params\":false,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: GETSecurityPublicParams;\n query: GETSecurityPublicQuery;\n body: GETSecurityPublicBody;\n response: GETSecurityPublicResponse;\n responseData: GETSecurityPublicResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { AppSettings } from \"../../frontend-types\";\n\nexport type SettingsListParams = undefined;\nexport type SettingsListQuery = {\n\n};\nexport type SettingsListBody = undefined;\nexport type SettingsListResponseData = { settings: AppSettings[]; canEdit: boolean };\nexport type SettingsListResponse = import(\"../types\").ApiEnvelope<SettingsListResponseData>;\n\nexport type SettingsUpdateParams = {\n settingId: number;\n key: \"application_name\" | \"billing_plan_limit_managing_companies_base\" | \"billing_plan_limit_managing_companies_premium\" | \"billing_plan_limit_managing_companies_enterprise\" | \"billing_plan_limit_managing_companies_legacy\" | \"billing_plan_limit_document_storage_gb_base\" | \"billing_plan_limit_document_storage_gb_premium\" | \"billing_plan_limit_document_storage_gb_enterprise\" | \"billing_plan_limit_document_storage_gb_legacy\" | \"billing_storage_provider_cost_eur_per_gb\" | \"billing_storage_customer_price_eur_per_gb\" | \"billing_storage_hard_limit_gb_per_company\" | \"billing_overage_currency\" | \"billing_overage_price_eur_per_managing_company\" | \"billing_overage_price_eur_per_document_storage_gb\" | \"billing_overage_negative_corrections_enabled\" | \"billing_overage_pull_default_lookback_days\" | \"billing_overage_pull_max_events\" | \"dunning_global_base_rate_bgb_247\" | \"dunning_payment_reminder_enabled\" | \"dunning_payment_reminder_after_days\";\n};\nexport type SettingsUpdateQuery = undefined;\nexport type SettingsUpdateBody = {\n value: string | number | boolean | Array<any> | Record<string, any> | null;\n};\nexport type SettingsUpdateResponseData = AppSettings;\nexport type SettingsUpdateResponse = import(\"../types\").ApiEnvelope<SettingsUpdateResponseData>;\n\nexport const apiRoutes_settings = {\n // Contract source: explicit\n \"settings_list\": {\n method: \"GET\",\n path: \"/settings/getAll\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"settings\"],\n summary: \"List app settings\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: SettingsListParams;\n query: SettingsListQuery;\n body: SettingsListBody;\n response: SettingsListResponse;\n responseData: SettingsListResponseData;\n },\n },\n // Contract source: explicit\n \"settings_update\": {\n method: \"PUT\",\n path: \"/settings/update/:settingId/:key\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"settings_edit\"},\n meta: {\n tags: [\"settings\"],\n summary: \"Update one app setting\",\n bodyContentType: \"application/json\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: SettingsUpdateParams;\n query: SettingsUpdateQuery;\n body: SettingsUpdateBody;\n response: SettingsUpdateResponse;\n responseData: SettingsUpdateResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { NodeBillUser, UserWithStats } from \"../../frontend-types\";\n\nexport type UserActivityUsersStatsListParams = undefined;\nexport type UserActivityUsersStatsListQuery = {\n\n};\nexport type UserActivityUsersStatsListBody = undefined;\nexport type UserActivityUsersStatsListResponseData = UserWithStats[];\nexport type UserActivityUsersStatsListResponse = import(\"../types\").ApiEnvelope<UserActivityUsersStatsListResponseData>;\n\nexport type UserActivityOverviewGetParams = {\n userId: number;\n};\nexport type UserActivityOverviewGetQuery = undefined;\nexport type UserActivityOverviewGetBody = {\n search?: string;\n page?: number;\n resultsPerPage?: number;\n statusCodes?: Array<number>;\n date?: string;\n startDate?: string;\n endDate?: string;\n days?: number;\n};\nexport type UserActivityOverviewGetResponseData = { data: Array<{ user: NodeBillUser; activityOverview: any }>; pagination: { page: number; resultsPerPage: number; totalPages: number; totalResults: number; availableStatusCodes: number[] } };\nexport type UserActivityOverviewGetResponse = import(\"../types\").ApiEnvelope<UserActivityOverviewGetResponseData>;\n\nexport const apiRoutes_user_activity = {\n // Contract source: explicit\n \"user_activity_users_stats_list\": {\n method: \"GET\",\n path: \"/user-activity/users\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"users_view\"},\n meta: {\n tags: [\"user-activity\"],\n summary: \"List users with activity stats\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: UserActivityUsersStatsListParams;\n query: UserActivityUsersStatsListQuery;\n body: UserActivityUsersStatsListBody;\n response: UserActivityUsersStatsListResponse;\n responseData: UserActivityUsersStatsListResponseData;\n },\n },\n // Contract source: explicit\n \"user_activity_overview_get\": {\n method: \"POST\",\n path: \"/user-activity/user/:userId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"users_view\"},\n meta: {\n tags: [\"user-activity\"],\n summary: \"Get detailed activity overview for a user\",\n bodyContentType: \"application/json\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: UserActivityOverviewGetParams;\n query: UserActivityOverviewGetQuery;\n body: UserActivityOverviewGetBody;\n response: UserActivityOverviewGetResponse;\n responseData: UserActivityOverviewGetResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { NodeBillUser, PaginatedResult } from \"../../frontend-types\";\n\nexport type UsersCreateParams = undefined;\nexport type UsersCreateQuery = undefined;\nexport type UsersCreateBody = {\n externalUserId: string;\n email?: string;\n firstName?: string;\n lastName?: string;\n};\nexport type UsersCreateResponseData = NodeBillUser;\nexport type UsersCreateResponse = import(\"../types\").ApiEnvelope<UsersCreateResponseData>;\n\nexport type UsersDeleteExternalParams = {\n frontendUserId: number;\n};\nexport type UsersDeleteExternalQuery = undefined;\nexport type UsersDeleteExternalBody = undefined;\nexport type UsersDeleteExternalResponseData = NodeBillUser;\nexport type UsersDeleteExternalResponse = import(\"../types\").ApiEnvelope<UsersDeleteExternalResponseData>;\n\nexport type UsersUpdateExternalParams = {\n frontendUserId: number;\n};\nexport type UsersUpdateExternalQuery = undefined;\nexport type UsersUpdateExternalBody = {\n firstName?: string;\n lastName?: string;\n avatarStyle?: {\n seed?: string;\n hue?: number;\n shape?: \"round\" | \"organic\" | \"boxy\" | \"nub\" | \"cloud\" | \"sun\" | \"capsule\" | \"triangle\" | \"hexagon\" | \"droplet\";\n expression?: \"idle\" | \"happy\" | \"sad\" | \"mad\" | \"surprised\" | \"wink\" | \"sleepy\" | \"smug\" | \"unsure\" | \"scared\" | \"love\" | \"shy\" | \"sick\" | \"thinking\";\n background?: \"none\" | \"squircle\" | \"circle\";\n} | null;\n};\nexport type UsersUpdateExternalResponseData = NodeBillUser;\nexport type UsersUpdateExternalResponse = import(\"../types\").ApiEnvelope<UsersUpdateExternalResponseData>;\n\nexport type UsersDeleteParams = {\n userId: number;\n};\nexport type UsersDeleteQuery = undefined;\nexport type UsersDeleteBody = undefined;\nexport type UsersDeleteResponseData = NodeBillUser;\nexport type UsersDeleteResponse = import(\"../types\").ApiEnvelope<UsersDeleteResponseData>;\n\nexport type UsersListParams = undefined;\nexport type UsersListQuery = {\n\n};\nexport type UsersListBody = undefined;\nexport type UsersListResponseData = NodeBillUser[];\nexport type UsersListResponse = import(\"../types\").ApiEnvelope<UsersListResponseData>;\n\nexport type UsersGetByEmailParams = {\n email: string;\n};\nexport type UsersGetByEmailQuery = undefined;\nexport type UsersGetByEmailBody = undefined;\nexport type UsersGetByEmailResponseData = NodeBillUser;\nexport type UsersGetByEmailResponse = import(\"../types\").ApiEnvelope<UsersGetByEmailResponseData>;\n\nexport type UsersGetByExternalUserIdParams = {\n externalUserId: number;\n};\nexport type UsersGetByExternalUserIdQuery = undefined;\nexport type UsersGetByExternalUserIdBody = undefined;\nexport type UsersGetByExternalUserIdResponseData = NodeBillUser;\nexport type UsersGetByExternalUserIdResponse = import(\"../types\").ApiEnvelope<UsersGetByExternalUserIdResponseData>;\n\nexport type UsersGetByIdParams = {\n userId: number;\n};\nexport type UsersGetByIdQuery = {\n\n};\nexport type UsersGetByIdBody = undefined;\nexport type UsersGetByIdResponseData = NodeBillUser;\nexport type UsersGetByIdResponse = import(\"../types\").ApiEnvelope<UsersGetByIdResponseData>;\n\nexport type UsersSearchParams = undefined;\nexport type UsersSearchQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n};\nexport type UsersSearchBody = undefined;\nexport type UsersSearchResponseData = PaginatedResult<NodeBillUser>;\nexport type UsersSearchResponse = import(\"../types\").ApiEnvelope<UsersSearchResponseData>;\n\nexport const apiRoutes_users = {\n // Contract source: explicit\n \"users_create\": {\n method: \"POST\",\n path: \"/users/create\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"users\"],\n summary: \"Create user\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: UsersCreateParams;\n query: UsersCreateQuery;\n body: UsersCreateBody;\n response: UsersCreateResponse;\n responseData: UsersCreateResponseData;\n },\n },\n // Contract source: explicit\n \"users_delete_external\": {\n method: \"DELETE\",\n path: \"/users/delete/external/:frontendUserId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"users\"],\n summary: \"Delete own user via external user id\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: UsersDeleteExternalParams;\n query: UsersDeleteExternalQuery;\n body: UsersDeleteExternalBody;\n response: UsersDeleteExternalResponse;\n responseData: UsersDeleteExternalResponseData;\n },\n },\n // Contract source: explicit\n \"users_update_external\": {\n method: \"PUT\",\n path: \"/users/update/external/:frontendUserId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"users\"],\n summary: \"Update own user profile via external user id\",\n bodyContentType: \"application/json\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: UsersUpdateExternalParams;\n query: UsersUpdateExternalQuery;\n body: UsersUpdateExternalBody;\n response: UsersUpdateExternalResponse;\n responseData: UsersUpdateExternalResponseData;\n },\n },\n // Contract source: explicit\n \"users_delete\": {\n method: \"DELETE\",\n path: \"/users/delete/:userId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"users_manage\"},\n meta: {\n tags: [\"users\"],\n summary: \"Delete user by internal id\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: UsersDeleteParams;\n query: UsersDeleteQuery;\n body: UsersDeleteBody;\n response: UsersDeleteResponse;\n responseData: UsersDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"users_list\": {\n method: \"GET\",\n path: \"/users/getAll\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"users_view\"},\n meta: {\n tags: [\"users\"],\n summary: \"List all users\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: UsersListParams;\n query: UsersListQuery;\n body: UsersListBody;\n response: UsersListResponse;\n responseData: UsersListResponseData;\n },\n },\n // Contract source: explicit\n \"users_get_by_email\": {\n method: \"GET\",\n path: \"/users/getByEmail/:email\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"users_view\"},\n meta: {\n tags: [\"users\"],\n summary: \"Get user by email\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: UsersGetByEmailParams;\n query: UsersGetByEmailQuery;\n body: UsersGetByEmailBody;\n response: UsersGetByEmailResponse;\n responseData: UsersGetByEmailResponseData;\n },\n },\n // Contract source: explicit\n \"users_get_by_external_user_id\": {\n method: \"GET\",\n path: \"/users/getByExternalUserId/:externalUserId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"users\"],\n summary: \"Get user by external user id\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: UsersGetByExternalUserIdParams;\n query: UsersGetByExternalUserIdQuery;\n body: UsersGetByExternalUserIdBody;\n response: UsersGetByExternalUserIdResponse;\n responseData: UsersGetByExternalUserIdResponseData;\n },\n },\n // Contract source: explicit\n \"users_get_by_id\": {\n method: \"GET\",\n path: \"/users/getById/:userId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"users\"],\n summary: \"Get user by internal id\",\n description: \"Controller enforces self-access or `users_view` permission.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: UsersGetByIdParams;\n query: UsersGetByIdQuery;\n body: UsersGetByIdBody;\n response: UsersGetByIdResponse;\n responseData: UsersGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"users_search\": {\n method: \"GET\",\n path: \"/users/search\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"users_view\"},\n meta: {\n tags: [\"users\"],\n summary: \"Search users\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: UsersSearchParams;\n query: UsersSearchQuery;\n body: UsersSearchBody;\n response: UsersSearchResponse;\n responseData: UsersSearchResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { PaginatedResult, Webhook } from \"../../frontend-types\";\n\nexport type WebhooksSearchParams = undefined;\nexport type WebhooksSearchQuery = {\n page?: number;\n pageSize?: number;\n search?: string;\n provider?: string;\n eventType?: string;\n status?: \"pending\" | \"processed\" | \"failed\" | \"skipped\";\n processed?: boolean;\n externalId?: string;\n dateFrom?: string;\n dateTo?: string;\n sortBy?: \"createdAt\" | \"processedAt\" | \"status\";\n sortOrder?: \"asc\" | \"desc\";\n};\nexport type WebhooksSearchBody = undefined;\nexport type WebhooksSearchResponseData = { webhooks: PaginatedResult<Webhook>; canDelete: boolean };\nexport type WebhooksSearchResponse = import(\"../types\").ApiEnvelope<WebhooksSearchResponseData>;\n\nexport type WebhooksDeleteParams = {\n webhookId: number;\n};\nexport type WebhooksDeleteQuery = undefined;\nexport type WebhooksDeleteBody = undefined;\nexport type WebhooksDeleteResponseData = null;\nexport type WebhooksDeleteResponse = import(\"../types\").ApiEnvelope<WebhooksDeleteResponseData>;\n\nexport type WebhooksDeleteBulkParams = {\n webhookIds: string;\n};\nexport type WebhooksDeleteBulkQuery = undefined;\nexport type WebhooksDeleteBulkBody = undefined;\nexport type WebhooksDeleteBulkResponseData = null;\nexport type WebhooksDeleteBulkResponse = import(\"../types\").ApiEnvelope<WebhooksDeleteBulkResponseData>;\n\nexport const apiRoutes_webhooks = {\n // Contract source: explicit\n \"webhooks_search\": {\n method: \"GET\",\n path: \"/webhooks/search\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"webhook_view\"},\n meta: {\n tags: [\"webhooks\"],\n summary: \"Search webhooks (paginated)\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: WebhooksSearchParams;\n query: WebhooksSearchQuery;\n body: WebhooksSearchBody;\n response: WebhooksSearchResponse;\n responseData: WebhooksSearchResponseData;\n },\n },\n // Contract source: explicit\n \"webhooks_delete\": {\n method: \"DELETE\",\n path: \"/webhooks/delete/:webhookId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"webhook_delete\"},\n meta: {\n tags: [\"webhooks\"],\n summary: \"Delete one webhook\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: WebhooksDeleteParams;\n query: WebhooksDeleteQuery;\n body: WebhooksDeleteBody;\n response: WebhooksDeleteResponse;\n responseData: WebhooksDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"webhooks_delete_bulk\": {\n method: \"DELETE\",\n path: \"/webhooks/delete/mass/:webhookIds\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"webhook_delete\"},\n meta: {\n tags: [\"webhooks\"],\n summary: \"Delete multiple webhooks\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: WebhooksDeleteBulkParams;\n query: WebhooksDeleteBulkQuery;\n body: WebhooksDeleteBulkBody;\n response: WebhooksDeleteBulkResponse;\n responseData: WebhooksDeleteBulkResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { PaginatedResult, WorkEntry, WorkEntryAssignment } from \"../../frontend-types\";\n\nexport type WorkTrackingAssignmentCreateParams = undefined;\nexport type WorkTrackingAssignmentCreateQuery = undefined;\nexport type WorkTrackingAssignmentCreateBody = {\n workEntryId: number;\n companyId?: number | null;\n};\nexport type WorkTrackingAssignmentCreateResponseData = WorkEntryAssignment;\nexport type WorkTrackingAssignmentCreateResponse = import(\"../types\").ApiEnvelope<WorkTrackingAssignmentCreateResponseData>;\n\nexport type WorkTrackingAssignmentUpdateParams = {\n workEntryAssignmentId: number;\n};\nexport type WorkTrackingAssignmentUpdateQuery = undefined;\nexport type WorkTrackingAssignmentUpdateBody = {\n workEntryId?: number;\n companyId?: number | null;\n};\nexport type WorkTrackingAssignmentUpdateResponseData = WorkEntryAssignment;\nexport type WorkTrackingAssignmentUpdateResponse = import(\"../types\").ApiEnvelope<WorkTrackingAssignmentUpdateResponseData>;\n\nexport type WorkTrackingAssignmentDeleteParams = {\n workEntryAssignmentId: number;\n};\nexport type WorkTrackingAssignmentDeleteQuery = undefined;\nexport type WorkTrackingAssignmentDeleteBody = undefined;\nexport type WorkTrackingAssignmentDeleteResponseData = null;\nexport type WorkTrackingAssignmentDeleteResponse = import(\"../types\").ApiEnvelope<WorkTrackingAssignmentDeleteResponseData>;\n\nexport type WorkTrackingGetMyRoleParams = undefined;\nexport type WorkTrackingGetMyRoleQuery = {\n\n};\nexport type WorkTrackingGetMyRoleBody = undefined;\nexport type WorkTrackingGetMyRoleResponseData = string;\nexport type WorkTrackingGetMyRoleResponse = import(\"../types\").ApiEnvelope<WorkTrackingGetMyRoleResponseData>;\n\nexport type WorkTrackingListParams = undefined;\nexport type WorkTrackingListQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n userId?: number;\n companyId?: number;\n status?: \"pending\" | \"approved\" | \"rejected\";\n};\nexport type WorkTrackingListBody = undefined;\nexport type WorkTrackingListResponseData = PaginatedResult<WorkEntry>;\nexport type WorkTrackingListResponse = import(\"../types\").ApiEnvelope<WorkTrackingListResponseData>;\n\nexport type WorkTrackingGetByIdParams = {\n workEntryId: number;\n};\nexport type WorkTrackingGetByIdQuery = undefined;\nexport type WorkTrackingGetByIdBody = undefined;\nexport type WorkTrackingGetByIdResponseData = WorkEntry;\nexport type WorkTrackingGetByIdResponse = import(\"../types\").ApiEnvelope<WorkTrackingGetByIdResponseData>;\n\nexport type WorkTrackingCreateParams = undefined;\nexport type WorkTrackingCreateQuery = undefined;\nexport type WorkTrackingCreateBody = {\n start: string | string;\n end?: string | string | null;\n timeInMinutes?: number | null;\n entryType: \"work\" | \"assistance\" | \"service\" | \"consultation\" | \"planning\" | \"administration\" | \"meeting\" | \"travel\" | \"maintenance\" | \"training\" | \"support\" | \"other\";\n description?: string | null;\n isBillable?: boolean;\n companyId?: number | null;\n};\nexport type WorkTrackingCreateResponseData = WorkEntry;\nexport type WorkTrackingCreateResponse = import(\"../types\").ApiEnvelope<WorkTrackingCreateResponseData>;\n\nexport type WorkTrackingUpdateParams = {\n workEntryId: number;\n};\nexport type WorkTrackingUpdateQuery = undefined;\nexport type WorkTrackingUpdateBody = {\n start?: string | string;\n end?: string | string | null;\n timeInMinutes?: number | null;\n entryType?: \"work\" | \"assistance\" | \"service\" | \"consultation\" | \"planning\" | \"administration\" | \"meeting\" | \"travel\" | \"maintenance\" | \"training\" | \"support\" | \"other\";\n description?: string | null;\n isBillable?: boolean;\n companyId?: number | null;\n};\nexport type WorkTrackingUpdateResponseData = WorkEntry;\nexport type WorkTrackingUpdateResponse = import(\"../types\").ApiEnvelope<WorkTrackingUpdateResponseData>;\n\nexport type WorkTrackingDeleteParams = {\n workEntryId: number;\n};\nexport type WorkTrackingDeleteQuery = undefined;\nexport type WorkTrackingDeleteBody = undefined;\nexport type WorkTrackingDeleteResponseData = null;\nexport type WorkTrackingDeleteResponse = import(\"../types\").ApiEnvelope<WorkTrackingDeleteResponseData>;\n\nexport type WorkTrackingApproveParams = {\n workEntryId: number;\n};\nexport type WorkTrackingApproveQuery = undefined;\nexport type WorkTrackingApproveBody = {\n isBilled?: boolean;\n};\nexport type WorkTrackingApproveResponseData = WorkEntry;\nexport type WorkTrackingApproveResponse = import(\"../types\").ApiEnvelope<WorkTrackingApproveResponseData>;\n\nexport type WorkTrackingRejectParams = {\n workEntryId: number;\n};\nexport type WorkTrackingRejectQuery = undefined;\nexport type WorkTrackingRejectBody = {\n rejectionReason: string;\n};\nexport type WorkTrackingRejectResponseData = WorkEntry;\nexport type WorkTrackingRejectResponse = import(\"../types\").ApiEnvelope<WorkTrackingRejectResponseData>;\n\nexport type WorkTrackingBillPreviewParams = undefined;\nexport type WorkTrackingBillPreviewQuery = undefined;\nexport type WorkTrackingBillPreviewBody = {\n workEntryIds: Array<number>;\n companyId: number;\n hourlyRate: number;\n invoiceDate?: string | string;\n dueDate?: string | string;\n notes?: string;\n paymentAccountId?: number | null;\n bankFallbackAccountId?: number | null;\n};\nexport type WorkTrackingBillPreviewResponseData = {\n quoteVersion: string;\n quoteHash: string;\n computedAt: string;\n totals: {\n net: number;\n tax: number;\n gross: number;\n currency: string;\n};\n vat: {\n requestedProductType: string | null;\n effectiveTreatment: string;\n effectiveRate: number;\n legalReference: string | null;\n note: string | null;\n isMixedRates: boolean;\n};\n paymentResolution: {\n paymentAccountId: number | null;\n paymentAccountSource: string;\n bankFallbackAccountId: number | null;\n bankFallbackAccountSource: string;\n};\n};\nexport type WorkTrackingBillPreviewResponse = import(\"../types\").ApiEnvelope<WorkTrackingBillPreviewResponseData>;\n\nexport type WorkTrackingBillParams = undefined;\nexport type WorkTrackingBillQuery = undefined;\nexport type WorkTrackingBillBody = {\n workEntryIds: Array<number>;\n companyId: number;\n hourlyRate: number;\n invoiceDate?: string | string;\n dueDate?: string | string;\n notes?: string;\n paymentAccountId?: number | null;\n bankFallbackAccountId?: number | null;\n};\nexport type WorkTrackingBillResponseData = {\n invoiceId: number;\n invoiceNumber: string;\n};\nexport type WorkTrackingBillResponse = import(\"../types\").ApiEnvelope<WorkTrackingBillResponseData>;\n\nexport const apiRoutes_work_tracking = {\n // Contract source: explicit\n \"work_tracking_assignment_create\": {\n method: \"POST\",\n path: \"/apps/admin/work-tracking/assignments/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_create\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Create a work entry assignment\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: WorkTrackingAssignmentCreateParams;\n query: WorkTrackingAssignmentCreateQuery;\n body: WorkTrackingAssignmentCreateBody;\n response: WorkTrackingAssignmentCreateResponse;\n responseData: WorkTrackingAssignmentCreateResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_assignment_update\": {\n method: \"PUT\",\n path: \"/apps/admin/work-tracking/assignments/update/:workEntryAssignmentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_create\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Update a work entry assignment\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: WorkTrackingAssignmentUpdateParams;\n query: WorkTrackingAssignmentUpdateQuery;\n body: WorkTrackingAssignmentUpdateBody;\n response: WorkTrackingAssignmentUpdateResponse;\n responseData: WorkTrackingAssignmentUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_assignment_delete\": {\n method: \"DELETE\",\n path: \"/apps/admin/work-tracking/assignments/delete/:workEntryAssignmentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_create\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Delete a work entry assignment\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: WorkTrackingAssignmentDeleteParams;\n query: WorkTrackingAssignmentDeleteQuery;\n body: WorkTrackingAssignmentDeleteBody;\n response: WorkTrackingAssignmentDeleteResponse;\n responseData: WorkTrackingAssignmentDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_get_my_role\": {\n method: \"GET\",\n path: \"/apps/admin/work-tracking/my-role\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_create\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Get current user's work tracking role\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: WorkTrackingGetMyRoleParams;\n query: WorkTrackingGetMyRoleQuery;\n body: WorkTrackingGetMyRoleBody;\n response: WorkTrackingGetMyRoleResponse;\n responseData: WorkTrackingGetMyRoleResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_list\": {\n method: \"GET\",\n path: \"/apps/admin/work-tracking/list\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_create\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Search and list work entries\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: WorkTrackingListParams;\n query: WorkTrackingListQuery;\n body: WorkTrackingListBody;\n response: WorkTrackingListResponse;\n responseData: WorkTrackingListResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_get_by_id\": {\n method: \"GET\",\n path: \"/apps/admin/work-tracking/byId/:workEntryId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_create\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Get work entry by ID\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: WorkTrackingGetByIdParams;\n query: WorkTrackingGetByIdQuery;\n body: WorkTrackingGetByIdBody;\n response: WorkTrackingGetByIdResponse;\n responseData: WorkTrackingGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_create\": {\n method: \"POST\",\n path: \"/apps/admin/work-tracking/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_create\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Create a new work entry\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: WorkTrackingCreateParams;\n query: WorkTrackingCreateQuery;\n body: WorkTrackingCreateBody;\n response: WorkTrackingCreateResponse;\n responseData: WorkTrackingCreateResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_update\": {\n method: \"PUT\",\n path: \"/apps/admin/work-tracking/update/:workEntryId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_create\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Update an existing work entry\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: WorkTrackingUpdateParams;\n query: WorkTrackingUpdateQuery;\n body: WorkTrackingUpdateBody;\n response: WorkTrackingUpdateResponse;\n responseData: WorkTrackingUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_delete\": {\n method: \"DELETE\",\n path: \"/apps/admin/work-tracking/delete/:workEntryId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_create\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Delete a work entry\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: WorkTrackingDeleteParams;\n query: WorkTrackingDeleteQuery;\n body: WorkTrackingDeleteBody;\n response: WorkTrackingDeleteResponse;\n responseData: WorkTrackingDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_approve\": {\n method: \"POST\",\n path: \"/apps/admin/work-tracking/approve/:workEntryId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_validate\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Approve a work entry\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: WorkTrackingApproveParams;\n query: WorkTrackingApproveQuery;\n body: WorkTrackingApproveBody;\n response: WorkTrackingApproveResponse;\n responseData: WorkTrackingApproveResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_reject\": {\n method: \"POST\",\n path: \"/apps/admin/work-tracking/reject/:workEntryId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_validate\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Reject a work entry\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: WorkTrackingRejectParams;\n query: WorkTrackingRejectQuery;\n body: WorkTrackingRejectBody;\n response: WorkTrackingRejectResponse;\n responseData: WorkTrackingRejectResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_bill_preview\": {\n method: \"POST\",\n path: \"/apps/admin/work-tracking/bill/preview\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_validate\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Preview invoice from work entries (totals, VAT, payment)\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: WorkTrackingBillPreviewParams;\n query: WorkTrackingBillPreviewQuery;\n body: WorkTrackingBillPreviewBody;\n response: WorkTrackingBillPreviewResponse;\n responseData: WorkTrackingBillPreviewResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_bill\": {\n method: \"POST\",\n path: \"/apps/admin/work-tracking/bill\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_validate\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Bill multiple work entries (create invoice)\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: WorkTrackingBillParams;\n query: WorkTrackingBillQuery;\n body: WorkTrackingBillBody;\n response: WorkTrackingBillResponse;\n responseData: WorkTrackingBillResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport * from \"./types\";\nexport * from \"./catalog\";\nexport * from \"./features/routes.admin\";\nexport * from \"./base/routes.amp_mail\";\nexport * from \"./base/routes.app_info\";\nexport * from \"./base/routes.auth\";\nexport * from \"./features/routes.bookkeeping\";\nexport * from \"./features/routes.currency_rates\";\nexport * from \"./features/routes.customer_companies\";\nexport * from \"./features/routes.customer_companies_external\";\nexport * from \"./features/routes.documents\";\nexport * from \"./features/routes.dunning_external\";\nexport * from \"./features/routes.enterprise\";\nexport * from \"./base/routes.entitlements\";\nexport * from \"./features/routes.exports\";\nexport * from \"./base/routes.internal\";\nexport * from \"./features/routes.invoices\";\nexport * from \"./features/routes.invoices_external\";\nexport * from \"./base/routes.logs\";\nexport * from \"./features/routes.managing_companies\";\nexport * from \"./features/routes.managing_companies_external\";\nexport * from \"./features/routes.managing_company_logos\";\nexport * from \"./base/routes.oauth2\";\nexport * from \"./base/routes.oauth2_external\";\nexport * from \"./base/routes.permissions\";\nexport * from \"./base/routes.roles\";\nexport * from \"./base/routes.security\";\nexport * from \"./base/routes.settings\";\nexport * from \"./base/routes.user_activity\";\nexport * from \"./base/routes.users\";\nexport * from \"./base/routes.webhooks\";\nexport * from \"./features/routes.work_tracking\";\n\nimport type { ApiEnvelope } from \"./types\";\nimport { apiRoutes_admin } from \"./features/routes.admin\";\nimport { apiRoutes_amp_mail } from \"./base/routes.amp_mail\";\nimport { apiRoutes_app_info } from \"./base/routes.app_info\";\nimport { apiRoutes_auth } from \"./base/routes.auth\";\nimport { apiRoutes_bookkeeping } from \"./features/routes.bookkeeping\";\nimport { apiRoutes_currency_rates } from \"./features/routes.currency_rates\";\nimport { apiRoutes_customer_companies } from \"./features/routes.customer_companies\";\nimport { apiRoutes_customer_companies_external } from \"./features/routes.customer_companies_external\";\nimport { apiRoutes_documents } from \"./features/routes.documents\";\nimport { apiRoutes_dunning_external } from \"./features/routes.dunning_external\";\nimport { apiRoutes_enterprise } from \"./features/routes.enterprise\";\nimport { apiRoutes_entitlements } from \"./base/routes.entitlements\";\nimport { apiRoutes_exports } from \"./features/routes.exports\";\nimport { apiRoutes_internal } from \"./base/routes.internal\";\nimport { apiRoutes_invoices } from \"./features/routes.invoices\";\nimport { apiRoutes_invoices_external } from \"./features/routes.invoices_external\";\nimport { apiRoutes_logs } from \"./base/routes.logs\";\nimport { apiRoutes_managing_companies } from \"./features/routes.managing_companies\";\nimport { apiRoutes_managing_companies_external } from \"./features/routes.managing_companies_external\";\nimport { apiRoutes_managing_company_logos } from \"./features/routes.managing_company_logos\";\nimport { apiRoutes_oauth2 } from \"./base/routes.oauth2\";\nimport { apiRoutes_oauth2_external } from \"./base/routes.oauth2_external\";\nimport { apiRoutes_permissions } from \"./base/routes.permissions\";\nimport { apiRoutes_roles } from \"./base/routes.roles\";\nimport { apiRoutes_security } from \"./base/routes.security\";\nimport { apiRoutes_settings } from \"./base/routes.settings\";\nimport { apiRoutes_user_activity } from \"./base/routes.user_activity\";\nimport { apiRoutes_users } from \"./base/routes.users\";\nimport { apiRoutes_webhooks } from \"./base/routes.webhooks\";\nimport { apiRoutes_work_tracking } from \"./features/routes.work_tracking\";\n\nexport type ApiRoutes =\n typeof apiRoutes_admin\n & typeof apiRoutes_amp_mail\n & typeof apiRoutes_app_info\n & typeof apiRoutes_auth\n & typeof apiRoutes_bookkeeping\n & typeof apiRoutes_currency_rates\n & typeof apiRoutes_customer_companies\n & typeof apiRoutes_customer_companies_external\n & typeof apiRoutes_documents\n & typeof apiRoutes_dunning_external\n & typeof apiRoutes_enterprise\n & typeof apiRoutes_entitlements\n & typeof apiRoutes_exports\n & typeof apiRoutes_internal\n & typeof apiRoutes_invoices\n & typeof apiRoutes_invoices_external\n & typeof apiRoutes_logs\n & typeof apiRoutes_managing_companies\n & typeof apiRoutes_managing_companies_external\n & typeof apiRoutes_managing_company_logos\n & typeof apiRoutes_oauth2\n & typeof apiRoutes_oauth2_external\n & typeof apiRoutes_permissions\n & typeof apiRoutes_roles\n & typeof apiRoutes_security\n & typeof apiRoutes_settings\n & typeof apiRoutes_user_activity\n & typeof apiRoutes_users\n & typeof apiRoutes_webhooks\n & typeof apiRoutes_work_tracking\n;\n\nexport const apiRoutes: ApiRoutes = {\n ...apiRoutes_admin,\n ...apiRoutes_amp_mail,\n ...apiRoutes_app_info,\n ...apiRoutes_auth,\n ...apiRoutes_bookkeeping,\n ...apiRoutes_currency_rates,\n ...apiRoutes_customer_companies,\n ...apiRoutes_customer_companies_external,\n ...apiRoutes_documents,\n ...apiRoutes_dunning_external,\n ...apiRoutes_enterprise,\n ...apiRoutes_entitlements,\n ...apiRoutes_exports,\n ...apiRoutes_internal,\n ...apiRoutes_invoices,\n ...apiRoutes_invoices_external,\n ...apiRoutes_logs,\n ...apiRoutes_managing_companies,\n ...apiRoutes_managing_companies_external,\n ...apiRoutes_managing_company_logos,\n ...apiRoutes_oauth2,\n ...apiRoutes_oauth2_external,\n ...apiRoutes_permissions,\n ...apiRoutes_roles,\n ...apiRoutes_security,\n ...apiRoutes_settings,\n ...apiRoutes_user_activity,\n ...apiRoutes_users,\n ...apiRoutes_webhooks,\n ...apiRoutes_work_tracking,\n} as const;\n\nexport type ApiRouteKey = keyof typeof apiRoutes;\nexport type ApiRoute<K extends ApiRouteKey> = (typeof apiRoutes)[K];\nexport type ApiRequest<K extends ApiRouteKey> = ApiRoute<K>[\"types\"];\nexport type ApiResponse<K extends ApiRouteKey> = ApiRoute<K>[\"types\"][\"response\"];\nexport type ApiResponseData<K extends ApiRouteKey> = ApiRoute<K>[\"types\"][\"responseData\"];\n\nexport type { ApiEnvelope };"]}
|
|
1
|
+
{"version":3,"sources":["../src/generated/api/catalog.ts","../src/generated/api/features/routes.admin.ts","../src/generated/api/base/routes.amp_mail.ts","../src/generated/api/base/routes.app_info.ts","../src/generated/api/base/routes.auth.ts","../src/generated/api/features/routes.bookkeeping.ts","../src/generated/api/features/routes.currency_rates.ts","../src/generated/api/features/routes.customer_companies.ts","../src/generated/api/features/routes.customer_companies_external.ts","../src/generated/api/features/routes.documents.ts","../src/generated/api/features/routes.dunning_external.ts","../src/generated/api/features/routes.enterprise.ts","../src/generated/api/base/routes.entitlements.ts","../src/generated/api/features/routes.exports.ts","../src/generated/api/base/routes.internal.ts","../src/generated/api/features/routes.invoices.ts","../src/generated/api/features/routes.invoices_external.ts","../src/generated/api/base/routes.logs.ts","../src/generated/api/features/routes.managing_companies.ts","../src/generated/api/features/routes.managing_companies_external.ts","../src/generated/api/features/routes.managing_company_logos.ts","../src/generated/api/base/routes.oauth2.ts","../src/generated/api/base/routes.oauth2_external.ts","../src/generated/api/base/routes.permissions.ts","../src/generated/api/base/routes.roles.ts","../src/generated/api/base/routes.security.ts","../src/generated/api/base/routes.settings.ts","../src/generated/api/base/routes.user_activity.ts","../src/generated/api/base/routes.users.ts","../src/generated/api/base/routes.webhooks.ts","../src/generated/api/features/routes.work_tracking.ts","../src/generated/api/index.ts"],"names":[],"mappings":"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","file":"contract.cjs","sourcesContent":["// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type RouteGroup = { key: string; module: string };\n\nexport const apiMountPrefixes = {\n base: [\n \"/api-keys\",\n \"/api/amp-mail\",\n \"/api/amp-proxy\",\n \"/api/entitlements\",\n \"/app-info\",\n \"/app-logs\",\n \"/auth\",\n \"/docs\",\n \"/entitlements\",\n \"/internal/users\",\n \"/oauth\",\n \"/permissions\",\n \"/role-assignments\",\n \"/roles\",\n \"/security\",\n \"/settings\",\n \"/user-activity\",\n \"/users\",\n \"/webhooks\"\n],\n features: [\n \"/admin/vat\",\n \"/apps/admin/work-tracking\",\n \"/apps/enterprise/onboarding\",\n \"/bookkeeping\",\n \"/currency-rates\",\n \"/customer-companies\",\n \"/documents\",\n \"/exports\",\n \"/invoices\",\n \"/managing-companies\",\n \"/oauth\"\n],\n} as const;\n\nexport const apiGroups = {\n base: [\n {\n \"key\": \"app_info\",\n \"module\": \"./routes.app_info\"\n },\n {\n \"key\": \"auth\",\n \"module\": \"./routes.auth\"\n },\n {\n \"key\": \"entitlements\",\n \"module\": \"./routes.entitlements\"\n },\n {\n \"key\": \"internal\",\n \"module\": \"./routes.internal\"\n },\n {\n \"key\": \"permissions\",\n \"module\": \"./routes.permissions\"\n },\n {\n \"key\": \"roles\",\n \"module\": \"./routes.roles\"\n },\n {\n \"key\": \"security\",\n \"module\": \"./routes.security\"\n },\n {\n \"key\": \"settings\",\n \"module\": \"./routes.settings\"\n },\n {\n \"key\": \"user_activity\",\n \"module\": \"./routes.user_activity\"\n },\n {\n \"key\": \"users\",\n \"module\": \"./routes.users\"\n },\n {\n \"key\": \"webhooks\",\n \"module\": \"./routes.webhooks\"\n }\n] as RouteGroup[],\n features: [\n {\n \"key\": \"admin\",\n \"module\": \"./routes.admin\"\n },\n {\n \"key\": \"bookkeeping\",\n \"module\": \"./routes.bookkeeping\"\n },\n {\n \"key\": \"currency_rates\",\n \"module\": \"./routes.currency_rates\"\n },\n {\n \"key\": \"customer_companies\",\n \"module\": \"./routes.customer_companies\"\n },\n {\n \"key\": \"documents\",\n \"module\": \"./routes.documents\"\n },\n {\n \"key\": \"exports\",\n \"module\": \"./routes.exports\"\n },\n {\n \"key\": \"invoices\",\n \"module\": \"./routes.invoices\"\n },\n {\n \"key\": \"managing_companies\",\n \"module\": \"./routes.managing_companies\"\n }\n] as RouteGroup[],\n all: [\n {\n \"key\": \"admin\",\n \"module\": \"./features/routes.admin\"\n },\n {\n \"key\": \"amp_mail\",\n \"module\": \"./base/routes.amp_mail\"\n },\n {\n \"key\": \"app_info\",\n \"module\": \"./base/routes.app_info\"\n },\n {\n \"key\": \"auth\",\n \"module\": \"./base/routes.auth\"\n },\n {\n \"key\": \"bookkeeping\",\n \"module\": \"./features/routes.bookkeeping\"\n },\n {\n \"key\": \"currency_rates\",\n \"module\": \"./features/routes.currency_rates\"\n },\n {\n \"key\": \"customer_companies\",\n \"module\": \"./features/routes.customer_companies\"\n },\n {\n \"key\": \"customer_companies_external\",\n \"module\": \"./features/routes.customer_companies_external\"\n },\n {\n \"key\": \"documents\",\n \"module\": \"./features/routes.documents\"\n },\n {\n \"key\": \"dunning_external\",\n \"module\": \"./features/routes.dunning_external\"\n },\n {\n \"key\": \"enterprise\",\n \"module\": \"./features/routes.enterprise\"\n },\n {\n \"key\": \"entitlements\",\n \"module\": \"./base/routes.entitlements\"\n },\n {\n \"key\": \"exports\",\n \"module\": \"./features/routes.exports\"\n },\n {\n \"key\": \"internal\",\n \"module\": \"./base/routes.internal\"\n },\n {\n \"key\": \"invoices\",\n \"module\": \"./features/routes.invoices\"\n },\n {\n \"key\": \"invoices_external\",\n \"module\": \"./features/routes.invoices_external\"\n },\n {\n \"key\": \"logs\",\n \"module\": \"./base/routes.logs\"\n },\n {\n \"key\": \"managing_companies\",\n \"module\": \"./features/routes.managing_companies\"\n },\n {\n \"key\": \"managing_companies_external\",\n \"module\": \"./features/routes.managing_companies_external\"\n },\n {\n \"key\": \"managing_company_logos\",\n \"module\": \"./features/routes.managing_company_logos\"\n },\n {\n \"key\": \"oauth2\",\n \"module\": \"./base/routes.oauth2\"\n },\n {\n \"key\": \"oauth2_external\",\n \"module\": \"./base/routes.oauth2_external\"\n },\n {\n \"key\": \"permissions\",\n \"module\": \"./base/routes.permissions\"\n },\n {\n \"key\": \"roles\",\n \"module\": \"./base/routes.roles\"\n },\n {\n \"key\": \"security\",\n \"module\": \"./base/routes.security\"\n },\n {\n \"key\": \"settings\",\n \"module\": \"./base/routes.settings\"\n },\n {\n \"key\": \"user_activity\",\n \"module\": \"./base/routes.user_activity\"\n },\n {\n \"key\": \"users\",\n \"module\": \"./base/routes.users\"\n },\n {\n \"key\": \"webhooks\",\n \"module\": \"./base/routes.webhooks\"\n },\n {\n \"key\": \"work_tracking\",\n \"module\": \"./features/routes.work_tracking\"\n }\n] as RouteGroup[],\n} as const;\n\n/**\n * Hinweis:\n * - Diese Klassifikation ist best-effort (Prefix->GroupKey).\n * - Für exakte Zuordnung nutzt ihr am besten die Route-Pfade in openapi.json.\n */\n","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { PaginatedResult, SystemSettings, VatAccountingMethod, VatSettingsHistory } from \"../../frontend-types\";\n\nexport type AdminVatGetSystemSettingsParams = undefined;\nexport type AdminVatGetSystemSettingsQuery = undefined;\nexport type AdminVatGetSystemSettingsBody = undefined;\nexport type AdminVatGetSystemSettingsResponseData = SystemSettings;\nexport type AdminVatGetSystemSettingsResponse = import(\"../types\").ApiEnvelope<AdminVatGetSystemSettingsResponseData>;\n\nexport type AdminVatGetSystemSettingsHistoryParams = undefined;\nexport type AdminVatGetSystemSettingsHistoryQuery = {\n from?: string;\n to?: string;\n page?: number;\n pageSize?: number;\n};\nexport type AdminVatGetSystemSettingsHistoryBody = undefined;\nexport type AdminVatGetSystemSettingsHistoryResponseData = PaginatedResult<SystemSettings>;\nexport type AdminVatGetSystemSettingsHistoryResponse = import(\"../types\").ApiEnvelope<AdminVatGetSystemSettingsHistoryResponseData>;\n\nexport type AdminVatUpdateSystemSettingsParams = {\n id: number;\n};\nexport type AdminVatUpdateSystemSettingsQuery = undefined;\nexport type AdminVatUpdateSystemSettingsBody = {\n defaultKleinunternehmerGraceAmount?: string;\n defaultKleinunternehmerMaxAmount?: string;\n defaultVatAccountingMethod?: \"SOLL\" | \"IST\";\n ustvaMonthlyVatDueThreshold?: string;\n ustvaAnnualVatDueExemptThreshold?: string;\n ustvaNewCompanyMonthlyYears?: number;\n};\nexport type AdminVatUpdateSystemSettingsResponseData = SystemSettings;\nexport type AdminVatUpdateSystemSettingsResponse = import(\"../types\").ApiEnvelope<AdminVatUpdateSystemSettingsResponseData>;\n\nexport type AdminVatCreateSystemSettingsParams = undefined;\nexport type AdminVatCreateSystemSettingsQuery = undefined;\nexport type AdminVatCreateSystemSettingsBody = {\n defaultKleinunternehmerGraceAmount: string;\n defaultKleinunternehmerMaxAmount: string;\n defaultVatAccountingMethod: \"SOLL\" | \"IST\";\n validFrom?: string;\n validTo?: string;\n};\nexport type AdminVatCreateSystemSettingsResponseData = SystemSettings;\nexport type AdminVatCreateSystemSettingsResponse = import(\"../types\").ApiEnvelope<AdminVatCreateSystemSettingsResponseData>;\n\nexport type AdminVatUpdateCompanySettingsParams = {\n companyId: number;\n};\nexport type AdminVatUpdateCompanySettingsQuery = undefined;\nexport type AdminVatUpdateCompanySettingsBody = {\n accountingMethod: \"SOLL\" | \"IST\";\n ustvaFilingPreference?: \"auto\" | \"monthly\" | \"quarterly\" | \"annual\" | \"none\";\n changeReason: string;\n};\nexport type AdminVatUpdateCompanySettingsResponseData = { accountingMethod: VatAccountingMethod; ustvaFilingPreference?: string };\nexport type AdminVatUpdateCompanySettingsResponse = import(\"../types\").ApiEnvelope<AdminVatUpdateCompanySettingsResponseData>;\n\nexport type AdminVatGetCompanySettingsHistoryParams = {\n companyId: number;\n};\nexport type AdminVatGetCompanySettingsHistoryQuery = undefined;\nexport type AdminVatGetCompanySettingsHistoryBody = undefined;\nexport type AdminVatGetCompanySettingsHistoryResponseData = VatSettingsHistory[];\nexport type AdminVatGetCompanySettingsHistoryResponse = import(\"../types\").ApiEnvelope<AdminVatGetCompanySettingsHistoryResponseData>;\n\nexport const apiRoutes_admin = {\n // Contract source: explicit\n \"admin_vat_get_system_settings\": {\n method: \"GET\",\n path: \"/admin/vat/system-settings\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"managing_company_admin\"},\n meta: {\n tags: [\"admin\",\"vat\"],\n },\n types: null as unknown as {\n params: AdminVatGetSystemSettingsParams;\n query: AdminVatGetSystemSettingsQuery;\n body: AdminVatGetSystemSettingsBody;\n response: AdminVatGetSystemSettingsResponse;\n responseData: AdminVatGetSystemSettingsResponseData;\n },\n },\n // Contract source: explicit\n \"admin_vat_get_system_settings_history\": {\n method: \"GET\",\n path: \"/admin/vat/system-settings/history\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"managing_company_admin\"},\n meta: {\n tags: [\"admin\",\"vat\"],\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: AdminVatGetSystemSettingsHistoryParams;\n query: AdminVatGetSystemSettingsHistoryQuery;\n body: AdminVatGetSystemSettingsHistoryBody;\n response: AdminVatGetSystemSettingsHistoryResponse;\n responseData: AdminVatGetSystemSettingsHistoryResponseData;\n },\n },\n // Contract source: explicit\n \"admin_vat_update_system_settings\": {\n method: \"PUT\",\n path: \"/admin/vat/system-settings/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"managing_company_admin\"},\n meta: {\n tags: [\"admin\",\"vat\"],\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AdminVatUpdateSystemSettingsParams;\n query: AdminVatUpdateSystemSettingsQuery;\n body: AdminVatUpdateSystemSettingsBody;\n response: AdminVatUpdateSystemSettingsResponse;\n responseData: AdminVatUpdateSystemSettingsResponseData;\n },\n },\n // Contract source: explicit\n \"admin_vat_create_system_settings\": {\n method: \"POST\",\n path: \"/admin/vat/system-settings\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"managing_company_admin\"},\n meta: {\n tags: [\"admin\",\"vat\"],\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AdminVatCreateSystemSettingsParams;\n query: AdminVatCreateSystemSettingsQuery;\n body: AdminVatCreateSystemSettingsBody;\n response: AdminVatCreateSystemSettingsResponse;\n responseData: AdminVatCreateSystemSettingsResponseData;\n },\n },\n // Contract source: explicit\n \"admin_vat_update_company_settings\": {\n method: \"PUT\",\n path: \"/admin/vat/company/:companyId/settings\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"managing_company_admin\"},\n meta: {\n tags: [\"admin\",\"vat\"],\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AdminVatUpdateCompanySettingsParams;\n query: AdminVatUpdateCompanySettingsQuery;\n body: AdminVatUpdateCompanySettingsBody;\n response: AdminVatUpdateCompanySettingsResponse;\n responseData: AdminVatUpdateCompanySettingsResponseData;\n },\n },\n // Contract source: explicit\n \"admin_vat_get_company_settings_history\": {\n method: \"GET\",\n path: \"/admin/vat/company/:companyId/settings-history\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"managing_company_admin\"},\n meta: {\n tags: [\"admin\",\"vat\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: AdminVatGetCompanySettingsHistoryParams;\n query: AdminVatGetCompanySettingsHistoryQuery;\n body: AdminVatGetCompanySettingsHistoryBody;\n response: AdminVatGetCompanySettingsHistoryResponse;\n responseData: AdminVatGetCompanySettingsHistoryResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type GETApiAmpMailBrandLogoParams = {\n slug: string;\n};\nexport type GETApiAmpMailBrandLogoQuery = undefined;\nexport type GETApiAmpMailBrandLogoBody = undefined;\nexport type GETApiAmpMailBrandLogoResponseData = Blob;\nexport type GETApiAmpMailBrandLogoResponse = Blob;\n\nexport type GETApiAmpMailFileParams = {\n token: string;\n};\nexport type GETApiAmpMailFileQuery = undefined;\nexport type GETApiAmpMailFileBody = undefined;\nexport type GETApiAmpMailFileResponseData = Blob;\nexport type GETApiAmpMailFileResponse = Blob;\n\nexport const apiRoutes_amp_mail = {\n // Contract source: explicit\n \"GET__api_amp_mail_brand_logo\": {\n method: \"GET\",\n path: \"/api/amp-mail/brands/:slug/logo\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"amp-mail\"],\n summary: \"Logo einer Marke aus der Kopie dieser App\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: GETApiAmpMailBrandLogoParams;\n query: GETApiAmpMailBrandLogoQuery;\n body: GETApiAmpMailBrandLogoBody;\n response: GETApiAmpMailBrandLogoResponse;\n responseData: GETApiAmpMailBrandLogoResponseData;\n },\n },\n // Contract source: explicit\n \"GET__api_amp_mail_file\": {\n method: \"GET\",\n path: \"/api/amp-mail/files/:token\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"amp-mail\"],\n summary: \"Download-Link aus einer Mail: leitet auf eine frisch signierte Adresse der Dateiablage weiter\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: GETApiAmpMailFileParams;\n query: GETApiAmpMailFileQuery;\n body: GETApiAmpMailFileBody;\n response: GETApiAmpMailFileResponse;\n responseData: GETApiAmpMailFileResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { NodeBillUser, Permission, Role } from \"../../frontend-types\";\n\nexport type AppInfoHealthParams = undefined;\nexport type AppInfoHealthQuery = undefined;\nexport type AppInfoHealthBody = undefined;\nexport type AppInfoHealthResponseData = {\n status: \"healthy\" | \"degraded\" | \"unhealthy\";\n uptime: number;\n timestamp: string;\n version: string;\n checks: Array<{\n name: string;\n status: \"ok\" | \"warning\" | \"error\";\n latencyMs: number | null;\n message?: string;\n details?: Record<string, any>;\n}>;\n dependencies: Array<{\n name: string;\n status: \"ok\" | \"warning\" | \"error\";\n latencyMs: number | null;\n message?: string;\n details?: Record<string, any>;\n}>;\n};\nexport type AppInfoHealthResponse = import(\"../types\").ApiEnvelope<AppInfoHealthResponseData>;\n\nexport type AppInfoManifestParams = undefined;\nexport type AppInfoManifestQuery = undefined;\nexport type AppInfoManifestBody = undefined;\nexport type AppInfoManifestResponseData = { appId: string; manifestVersion: string; [key: string]: unknown };\nexport type AppInfoManifestResponse = import(\"../types\").ApiEnvelope<AppInfoManifestResponseData>;\n\nexport type AppInfoGetParams = undefined;\nexport type AppInfoGetQuery = {\n\n};\nexport type AppInfoGetBody = undefined;\nexport type AppInfoGetResponseData = { appId: string; plannerUser: NodeBillUser; userRoles: Role[]; subscriptionLimits?: { planCode: string; sourceRoles: string[]; limits: Record<string, number | null> }; subscriptionUsage?: { planCode: string; sourceRoles: string[]; metrics: Record<string, { used: number; limit: number | null; remaining: number | null; canUse: boolean }> }; subscription?: { upgradeUrl: string | null } };\nexport type AppInfoGetResponse = import(\"../types\").ApiEnvelope<AppInfoGetResponseData>;\n\nexport type AppInfoOwnPermissionsGetParams = undefined;\nexport type AppInfoOwnPermissionsGetQuery = {\n\n};\nexport type AppInfoOwnPermissionsGetBody = undefined;\nexport type AppInfoOwnPermissionsGetResponseData = Permission[];\nexport type AppInfoOwnPermissionsGetResponse = import(\"../types\").ApiEnvelope<AppInfoOwnPermissionsGetResponseData>;\n\nexport const apiRoutes_app_info = {\n // Contract source: explicit\n \"app_info_health\": {\n method: \"GET\",\n path: \"/app-info/health\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"app-info\"],\n summary: \"Health check\",\n description: \"Kern-Pruefungen des Prozesses (Datenbank, Speicher, Event-Loop, Verschluesselung). 200 bei healthy/degraded, 503 bei unhealthy.\",\n validated: {\"params\":false,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: AppInfoHealthParams;\n query: AppInfoHealthQuery;\n body: AppInfoHealthBody;\n response: AppInfoHealthResponse;\n responseData: AppInfoHealthResponseData;\n },\n },\n // Contract source: explicit\n \"app_info_manifest\": {\n method: \"GET\",\n path: \"/app-info/manifest\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"app-info\"],\n summary: \"AMP App Manifest\",\n validated: {\"params\":false,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: AppInfoManifestParams;\n query: AppInfoManifestQuery;\n body: AppInfoManifestBody;\n response: AppInfoManifestResponse;\n responseData: AppInfoManifestResponseData;\n },\n },\n // Contract source: explicit\n \"app_info_get\": {\n method: \"GET\",\n path: \"/app-info\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"app-info\"],\n summary: \"Get app info for current user\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: AppInfoGetParams;\n query: AppInfoGetQuery;\n body: AppInfoGetBody;\n response: AppInfoGetResponse;\n responseData: AppInfoGetResponseData;\n },\n },\n // Contract source: explicit\n \"app_info_own_permissions_get\": {\n method: \"GET\",\n path: \"/app-info/ownPermissions\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"app-info\"],\n summary: \"Get own permissions\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: AppInfoOwnPermissionsGetParams;\n query: AppInfoOwnPermissionsGetQuery;\n body: AppInfoOwnPermissionsGetBody;\n response: AppInfoOwnPermissionsGetResponse;\n responseData: AppInfoOwnPermissionsGetResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { DirectAuthLoginResponse, DirectAuthMe, DirectAuthOkResponse, DirectAuthRequestVerificationResponse, DirectAuthResponse, DirectAuthSessionListResponse, DirectAuthTokens, DirectAuthUser, DirectAuthVerifyEmailResponse } from \"../../frontend-types\";\n\nexport type AuthMfaCompleteParams = undefined;\nexport type AuthMfaCompleteQuery = undefined;\nexport type AuthMfaCompleteBody = {\n challengeToken: string;\n code: string;\n kind?: \"totp\" | \"recovery\";\n};\nexport type AuthMfaCompleteResponseData = DirectAuthResponse;\nexport type AuthMfaCompleteResponse = import(\"../types\").ApiEnvelope<AuthMfaCompleteResponseData>;\n\nexport type AuthMfaStatusParams = undefined;\nexport type AuthMfaStatusQuery = {\n\n};\nexport type AuthMfaStatusBody = undefined;\nexport type AuthMfaStatusResponseData = {\n enabled: boolean;\n methods: Array<string>;\n recoveryCodesRemaining: number;\n};\nexport type AuthMfaStatusResponse = import(\"../types\").ApiEnvelope<AuthMfaStatusResponseData>;\n\nexport type AuthMfaSetupParams = undefined;\nexport type AuthMfaSetupQuery = undefined;\nexport type AuthMfaSetupBody = {\n password: string;\n};\nexport type AuthMfaSetupResponseData = {\n secret: string;\n otpauthUri: string;\n expiresAt: string;\n};\nexport type AuthMfaSetupResponse = import(\"../types\").ApiEnvelope<AuthMfaSetupResponseData>;\n\nexport type AuthMfaEnableParams = undefined;\nexport type AuthMfaEnableQuery = undefined;\nexport type AuthMfaEnableBody = {\n code: string;\n};\nexport type AuthMfaEnableResponseData = {\n enabled: boolean;\n recoveryCodes: Array<string>;\n reauthenticationRequired: boolean;\n};\nexport type AuthMfaEnableResponse = import(\"../types\").ApiEnvelope<AuthMfaEnableResponseData>;\n\nexport type AuthMfaDisableParams = undefined;\nexport type AuthMfaDisableQuery = undefined;\nexport type AuthMfaDisableBody = {\n password: string;\n code: string;\n kind?: \"totp\" | \"recovery\";\n};\nexport type AuthMfaDisableResponseData = {\n ok: boolean;\n reauthenticationRequired: boolean;\n};\nexport type AuthMfaDisableResponse = import(\"../types\").ApiEnvelope<AuthMfaDisableResponseData>;\n\nexport type AuthRegisterParams = undefined;\nexport type AuthRegisterQuery = undefined;\nexport type AuthRegisterBody = {\n email: string;\n password: string;\n name?: string;\n firstName?: string;\n lastName?: string;\n device?: {\n deviceId?: string;\n deviceName?: string;\n deviceModel?: string;\n deviceOs?: string;\n appVersion?: string;\n platform?: \"ios\" | \"android\" | \"web\" | \"expo\";\n};\n};\nexport type AuthRegisterResponseData = DirectAuthResponse;\nexport type AuthRegisterResponse = import(\"../types\").ApiEnvelope<AuthRegisterResponseData>;\n\nexport type AuthLoginParams = undefined;\nexport type AuthLoginQuery = undefined;\nexport type AuthLoginBody = {\n email: string;\n password: string;\n device?: {\n deviceId?: string;\n deviceName?: string;\n deviceModel?: string;\n deviceOs?: string;\n appVersion?: string;\n platform?: \"ios\" | \"android\" | \"web\" | \"expo\";\n};\n};\nexport type AuthLoginResponseData = DirectAuthLoginResponse;\nexport type AuthLoginResponse = import(\"../types\").ApiEnvelope<AuthLoginResponseData>;\n\nexport type AuthRefreshParams = undefined;\nexport type AuthRefreshQuery = undefined;\nexport type AuthRefreshBody = {\n refreshToken: string;\n device?: {\n deviceId?: string;\n deviceName?: string;\n deviceModel?: string;\n deviceOs?: string;\n appVersion?: string;\n platform?: \"ios\" | \"android\" | \"web\" | \"expo\";\n};\n};\nexport type AuthRefreshResponseData = DirectAuthTokens;\nexport type AuthRefreshResponse = import(\"../types\").ApiEnvelope<AuthRefreshResponseData>;\n\nexport type AuthLogoutParams = undefined;\nexport type AuthLogoutQuery = undefined;\nexport type AuthLogoutBody = {\n refreshToken?: string;\n};\nexport type AuthLogoutResponseData = {\n\n};\nexport type AuthLogoutResponse = import(\"../types\").ApiEnvelope<AuthLogoutResponseData>;\n\nexport type AuthMeParams = undefined;\nexport type AuthMeQuery = {\n\n};\nexport type AuthMeBody = undefined;\nexport type AuthMeResponseData = DirectAuthMe;\nexport type AuthMeResponse = import(\"../types\").ApiEnvelope<AuthMeResponseData>;\n\nexport type AuthMeProfileUpdateParams = undefined;\nexport type AuthMeProfileUpdateQuery = undefined;\nexport type AuthMeProfileUpdateBody = {\n avatarStyle?: {\n seed?: string;\n hue?: number;\n shape?: \"round\" | \"organic\" | \"boxy\" | \"nub\" | \"cloud\" | \"sun\" | \"capsule\" | \"triangle\" | \"hexagon\" | \"droplet\";\n expression?: \"idle\" | \"happy\" | \"sad\" | \"mad\" | \"surprised\" | \"wink\" | \"sleepy\" | \"smug\" | \"unsure\" | \"scared\" | \"love\" | \"shy\" | \"sick\" | \"thinking\";\n background?: \"none\" | \"squircle\" | \"circle\";\n} | null;\n name?: string | null;\n firstName?: string | null;\n lastName?: string | null;\n};\nexport type AuthMeProfileUpdateResponseData = DirectAuthMe;\nexport type AuthMeProfileUpdateResponse = import(\"../types\").ApiEnvelope<AuthMeProfileUpdateResponseData>;\n\nexport type AuthPushTokenUpsertParams = undefined;\nexport type AuthPushTokenUpsertQuery = undefined;\nexport type AuthPushTokenUpsertBody = {\n token: string;\n platform: \"ios\" | \"android\" | \"web\" | \"expo\";\n};\nexport type AuthPushTokenUpsertResponseData = {\n\n};\nexport type AuthPushTokenUpsertResponse = import(\"../types\").ApiEnvelope<AuthPushTokenUpsertResponseData>;\n\nexport type AuthVerifyEmailRequestParams = undefined;\nexport type AuthVerifyEmailRequestQuery = undefined;\nexport type AuthVerifyEmailRequestBody = {\n\n};\nexport type AuthVerifyEmailRequestResponseData = DirectAuthRequestVerificationResponse;\nexport type AuthVerifyEmailRequestResponse = import(\"../types\").ApiEnvelope<AuthVerifyEmailRequestResponseData>;\n\nexport type AuthVerifyEmailConfirmParams = undefined;\nexport type AuthVerifyEmailConfirmQuery = undefined;\nexport type AuthVerifyEmailConfirmBody = {\n token: string;\n};\nexport type AuthVerifyEmailConfirmResponseData = DirectAuthVerifyEmailResponse;\nexport type AuthVerifyEmailConfirmResponse = import(\"../types\").ApiEnvelope<AuthVerifyEmailConfirmResponseData>;\n\nexport type AuthVerifyEmailLandingParams = undefined;\nexport type AuthVerifyEmailLandingQuery = {\n token?: string;\n};\nexport type AuthVerifyEmailLandingBody = undefined;\nexport type AuthVerifyEmailLandingResponseData = Blob;\nexport type AuthVerifyEmailLandingResponse = Blob;\n\nexport type AuthMeEmailPatchParams = undefined;\nexport type AuthMeEmailPatchQuery = undefined;\nexport type AuthMeEmailPatchBody = {\n email: string;\n password: string;\n};\nexport type AuthMeEmailPatchResponseData = DirectAuthUser;\nexport type AuthMeEmailPatchResponse = import(\"../types\").ApiEnvelope<AuthMeEmailPatchResponseData>;\n\nexport type AuthPasswordChangeParams = undefined;\nexport type AuthPasswordChangeQuery = undefined;\nexport type AuthPasswordChangeBody = {\n currentPassword: string;\n newPassword: string;\n revokeOtherSessions?: boolean;\n refreshToken?: string;\n};\nexport type AuthPasswordChangeResponseData = DirectAuthOkResponse;\nexport type AuthPasswordChangeResponse = import(\"../types\").ApiEnvelope<AuthPasswordChangeResponseData>;\n\nexport type AuthPasswordResetRequestParams = undefined;\nexport type AuthPasswordResetRequestQuery = undefined;\nexport type AuthPasswordResetRequestBody = {\n email: string;\n};\nexport type AuthPasswordResetRequestResponseData = DirectAuthOkResponse;\nexport type AuthPasswordResetRequestResponse = import(\"../types\").ApiEnvelope<AuthPasswordResetRequestResponseData>;\n\nexport type AuthPasswordResetConfirmParams = undefined;\nexport type AuthPasswordResetConfirmQuery = undefined;\nexport type AuthPasswordResetConfirmBody = {\n token: string;\n newPassword: string;\n};\nexport type AuthPasswordResetConfirmResponseData = DirectAuthOkResponse;\nexport type AuthPasswordResetConfirmResponse = import(\"../types\").ApiEnvelope<AuthPasswordResetConfirmResponseData>;\n\nexport type AuthPasswordResetLandingParams = undefined;\nexport type AuthPasswordResetLandingQuery = {\n token?: string;\n};\nexport type AuthPasswordResetLandingBody = undefined;\nexport type AuthPasswordResetLandingResponseData = Blob;\nexport type AuthPasswordResetLandingResponse = Blob;\n\nexport type AuthSessionsListParams = undefined;\nexport type AuthSessionsListQuery = {\n\n};\nexport type AuthSessionsListBody = undefined;\nexport type AuthSessionsListResponseData = DirectAuthSessionListResponse;\nexport type AuthSessionsListResponse = import(\"../types\").ApiEnvelope<AuthSessionsListResponseData>;\n\nexport type AuthSessionsRevokeParams = {\n sessionId: number;\n};\nexport type AuthSessionsRevokeQuery = undefined;\nexport type AuthSessionsRevokeBody = undefined;\nexport type AuthSessionsRevokeResponseData = DirectAuthOkResponse;\nexport type AuthSessionsRevokeResponse = import(\"../types\").ApiEnvelope<AuthSessionsRevokeResponseData>;\n\nexport type AuthSessionsRevokeOtherParams = undefined;\nexport type AuthSessionsRevokeOtherQuery = undefined;\nexport type AuthSessionsRevokeOtherBody = {\n refreshToken: string;\n};\nexport type AuthSessionsRevokeOtherResponseData = DirectAuthOkResponse;\nexport type AuthSessionsRevokeOtherResponse = import(\"../types\").ApiEnvelope<AuthSessionsRevokeOtherResponseData>;\n\nexport const apiRoutes_auth = {\n // Contract source: explicit\n \"auth_mfa_complete\": {\n method: \"POST\",\n path: \"/auth/mfa/complete\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Complete a first-factor login with TOTP or a recovery code\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthMfaCompleteParams;\n query: AuthMfaCompleteQuery;\n body: AuthMfaCompleteBody;\n response: AuthMfaCompleteResponse;\n responseData: AuthMfaCompleteResponseData;\n },\n },\n // Contract source: explicit\n \"auth_mfa_status\": {\n method: \"GET\",\n path: \"/auth/mfa\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Read the current product account's MFA status\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: AuthMfaStatusParams;\n query: AuthMfaStatusQuery;\n body: AuthMfaStatusBody;\n response: AuthMfaStatusResponse;\n responseData: AuthMfaStatusResponseData;\n },\n },\n // Contract source: explicit\n \"auth_mfa_setup\": {\n method: \"POST\",\n path: \"/auth/mfa/setup\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Prepare TOTP enrollment after rechecking the password\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthMfaSetupParams;\n query: AuthMfaSetupQuery;\n body: AuthMfaSetupBody;\n response: AuthMfaSetupResponse;\n responseData: AuthMfaSetupResponseData;\n },\n },\n // Contract source: explicit\n \"auth_mfa_enable\": {\n method: \"POST\",\n path: \"/auth/mfa/enable\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Confirm TOTP enrollment and return recovery codes once\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthMfaEnableParams;\n query: AuthMfaEnableQuery;\n body: AuthMfaEnableBody;\n response: AuthMfaEnableResponse;\n responseData: AuthMfaEnableResponseData;\n },\n },\n // Contract source: explicit\n \"auth_mfa_disable\": {\n method: \"POST\",\n path: \"/auth/mfa/disable\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Disable MFA using both the password and a second factor\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthMfaDisableParams;\n query: AuthMfaDisableQuery;\n body: AuthMfaDisableBody;\n response: AuthMfaDisableResponse;\n responseData: AuthMfaDisableResponseData;\n },\n },\n // Contract source: explicit\n \"auth_register\": {\n method: \"POST\",\n path: \"/auth/register\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Register a new direct-auth account\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthRegisterParams;\n query: AuthRegisterQuery;\n body: AuthRegisterBody;\n response: AuthRegisterResponse;\n responseData: AuthRegisterResponseData;\n },\n },\n // Contract source: explicit\n \"auth_login\": {\n method: \"POST\",\n path: \"/auth/login\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Log in with email + password\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthLoginParams;\n query: AuthLoginQuery;\n body: AuthLoginBody;\n response: AuthLoginResponse;\n responseData: AuthLoginResponseData;\n },\n },\n // Contract source: explicit\n \"auth_refresh\": {\n method: \"POST\",\n path: \"/auth/refresh\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Rotate access + refresh tokens\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthRefreshParams;\n query: AuthRefreshQuery;\n body: AuthRefreshBody;\n response: AuthRefreshResponse;\n responseData: AuthRefreshResponseData;\n },\n },\n // Contract source: explicit\n \"auth_logout\": {\n method: \"POST\",\n path: \"/auth/logout\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Revoke the current refresh token\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthLogoutParams;\n query: AuthLogoutQuery;\n body: AuthLogoutBody;\n response: AuthLogoutResponse;\n responseData: AuthLogoutResponseData;\n },\n },\n // Contract source: explicit\n \"auth_me\": {\n method: \"GET\",\n path: \"/auth/me\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Get the current user incl. roles and isAdmin (Bearer access JWT)\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: AuthMeParams;\n query: AuthMeQuery;\n body: AuthMeBody;\n response: AuthMeResponse;\n responseData: AuthMeResponseData;\n },\n },\n // Contract source: explicit\n \"auth_me_profile_update\": {\n method: \"PATCH\",\n path: \"/auth/me/profile\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Update the current user's own profile (name, avatar)\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthMeProfileUpdateParams;\n query: AuthMeProfileUpdateQuery;\n body: AuthMeProfileUpdateBody;\n response: AuthMeProfileUpdateResponse;\n responseData: AuthMeProfileUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"auth_push_token_upsert\": {\n method: \"POST\",\n path: \"/auth/push-token\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Register a device push token for the current user\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthPushTokenUpsertParams;\n query: AuthPushTokenUpsertQuery;\n body: AuthPushTokenUpsertBody;\n response: AuthPushTokenUpsertResponse;\n responseData: AuthPushTokenUpsertResponseData;\n },\n },\n // Contract source: explicit\n \"auth_verify_email_request\": {\n method: \"POST\",\n path: \"/auth/verify-email/request\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Send a fresh email-verification link to the current user\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthVerifyEmailRequestParams;\n query: AuthVerifyEmailRequestQuery;\n body: AuthVerifyEmailRequestBody;\n response: AuthVerifyEmailRequestResponse;\n responseData: AuthVerifyEmailRequestResponseData;\n },\n },\n // Contract source: explicit\n \"auth_verify_email_confirm\": {\n method: \"POST\",\n path: \"/auth/verify-email/confirm\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Confirm an email-verification token (programmatic / deep-link flow)\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthVerifyEmailConfirmParams;\n query: AuthVerifyEmailConfirmQuery;\n body: AuthVerifyEmailConfirmBody;\n response: AuthVerifyEmailConfirmResponse;\n responseData: AuthVerifyEmailConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"auth_verify_email_landing\": {\n method: \"GET\",\n path: \"/auth/verify-email\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Browser landing page that consumes the verification token\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: AuthVerifyEmailLandingParams;\n query: AuthVerifyEmailLandingQuery;\n body: AuthVerifyEmailLandingBody;\n response: AuthVerifyEmailLandingResponse;\n responseData: AuthVerifyEmailLandingResponseData;\n },\n },\n // Contract source: explicit\n \"auth_me_email_patch\": {\n method: \"PATCH\",\n path: \"/auth/me/email\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Change current user's email after password confirmation\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthMeEmailPatchParams;\n query: AuthMeEmailPatchQuery;\n body: AuthMeEmailPatchBody;\n response: AuthMeEmailPatchResponse;\n responseData: AuthMeEmailPatchResponseData;\n },\n },\n // Contract source: explicit\n \"auth_password_change\": {\n method: \"POST\",\n path: \"/auth/password/change\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Change password for the current user\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthPasswordChangeParams;\n query: AuthPasswordChangeQuery;\n body: AuthPasswordChangeBody;\n response: AuthPasswordChangeResponse;\n responseData: AuthPasswordChangeResponseData;\n },\n },\n // Contract source: explicit\n \"auth_password_reset_request\": {\n method: \"POST\",\n path: \"/auth/password/reset/request\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Request a password reset email\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthPasswordResetRequestParams;\n query: AuthPasswordResetRequestQuery;\n body: AuthPasswordResetRequestBody;\n response: AuthPasswordResetRequestResponse;\n responseData: AuthPasswordResetRequestResponseData;\n },\n },\n // Contract source: explicit\n \"auth_password_reset_confirm\": {\n method: \"POST\",\n path: \"/auth/password/reset/confirm\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Reset password with an email token\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthPasswordResetConfirmParams;\n query: AuthPasswordResetConfirmQuery;\n body: AuthPasswordResetConfirmBody;\n response: AuthPasswordResetConfirmResponse;\n responseData: AuthPasswordResetConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"auth_password_reset_landing\": {\n method: \"GET\",\n path: \"/auth/password/reset\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Browser landing page for password reset links\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: AuthPasswordResetLandingParams;\n query: AuthPasswordResetLandingQuery;\n body: AuthPasswordResetLandingBody;\n response: AuthPasswordResetLandingResponse;\n responseData: AuthPasswordResetLandingResponseData;\n },\n },\n // Contract source: explicit\n \"auth_sessions_list\": {\n method: \"GET\",\n path: \"/auth/sessions\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"auth\"],\n summary: \"List active refresh-token sessions for the current user\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: AuthSessionsListParams;\n query: AuthSessionsListQuery;\n body: AuthSessionsListBody;\n response: AuthSessionsListResponse;\n responseData: AuthSessionsListResponseData;\n },\n },\n // Contract source: explicit\n \"auth_sessions_revoke\": {\n method: \"DELETE\",\n path: \"/auth/sessions/:sessionId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Revoke one active session\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: AuthSessionsRevokeParams;\n query: AuthSessionsRevokeQuery;\n body: AuthSessionsRevokeBody;\n response: AuthSessionsRevokeResponse;\n responseData: AuthSessionsRevokeResponseData;\n },\n },\n // Contract source: explicit\n \"auth_sessions_revoke_other\": {\n method: \"POST\",\n path: \"/auth/sessions/revoke-other\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"auth\"],\n summary: \"Revoke all sessions except the supplied current refresh token\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: AuthSessionsRevokeOtherParams;\n query: AuthSessionsRevokeOtherQuery;\n body: AuthSessionsRevokeOtherBody;\n response: AuthSessionsRevokeOtherResponse;\n responseData: AuthSessionsRevokeOtherResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { AssetCostComponent, BookkeepingAsset, BookkeepingAuditLog, BookkeepingExpense, BookkeepingLockState, BookkeepingRevenue, CapitalMovement, EStCalculationResult, EmploymentIncome, IapPayoutImport, IncomeTaxSettings, IncomeTaxSummary, Invoice, PaginatedResult, Payment, PaymentAccount, PaymentAllocation, PaymentImportProfile, PaymentProviderConnection, ResolvedPaymentAllocation, Sonderausgaben, Steuerminderungen, VorauszahlungResult, Vorsorgeaufwendungen, Werbungskosten } from \"../../frontend-types\";\n\nexport type BookkeepingRevenuesSearchParams = undefined;\nexport type BookkeepingRevenuesSearchQuery = {\n q?: string;\n startDate?: string;\n endDate?: string;\n category?: \"customer_invoice\" | \"interest\" | \"refund\" | \"other\" | \"asset_disposal\" | \"pos_sale\" | \"saas_revenue_apple_iap\" | \"saas_revenue_google_iap\";\n isConfirmed?: boolean;\n paymentStatus?: \"unmatched\" | \"cash_confirmed\" | \"partially_matched\" | \"fully_matched\";\n minAmount?: string;\n maxAmount?: string;\n invoiceId?: number;\n assetId?: number;\n page?: number;\n pageSize?: number;\n sortBy?: \"createdAt\" | \"revenueDate\" | \"amount\";\n sortDir?: \"asc\" | \"desc\";\n};\nexport type BookkeepingRevenuesSearchBody = undefined;\nexport type BookkeepingRevenuesSearchResponseData = PaginatedResult<BookkeepingRevenue>;\nexport type BookkeepingRevenuesSearchResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesSearchResponseData>;\n\nexport type BookkeepingRevenuesGetByIdParams = {\n id: number;\n};\nexport type BookkeepingRevenuesGetByIdQuery = undefined;\nexport type BookkeepingRevenuesGetByIdBody = undefined;\nexport type BookkeepingRevenuesGetByIdResponseData = BookkeepingRevenue & { paymentAllocations: ResolvedPaymentAllocation[] };\nexport type BookkeepingRevenuesGetByIdResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesGetByIdResponseData>;\n\nexport type BookkeepingRevenuesAnalyzeReceiptParams = undefined;\nexport type BookkeepingRevenuesAnalyzeReceiptQuery = undefined;\nexport type BookkeepingRevenuesAnalyzeReceiptBody = undefined;\nexport type BookkeepingRevenuesAnalyzeReceiptResponseData = {\n extracted: {\n vendor?: string;\n vendorInvoiceNumber?: string;\n revenueDate?: string;\n amount?: string;\n netAmount?: string;\n taxAmount?: string;\n taxRate?: number;\n currency?: string;\n category?: \"customer_invoice\" | \"interest\" | \"refund\" | \"other\" | \"asset_disposal\" | \"pos_sale\" | \"saas_revenue_apple_iap\" | \"saas_revenue_google_iap\";\n description?: string;\n};\n confidence: {\n vendor: number;\n date: number;\n amount: number;\n overall: number;\n};\n rawText: string;\n};\nexport type BookkeepingRevenuesAnalyzeReceiptResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesAnalyzeReceiptResponseData>;\n\nexport type BookkeepingRevenuesCreateParams = undefined;\nexport type BookkeepingRevenuesCreateQuery = undefined;\nexport type BookkeepingRevenuesCreateBody = {\n costCenterId?: number | null;\n revenueDate: string;\n performedAt?: string | null;\n amount: string | number;\n netAmount: string | number;\n taxAmount?: string | number | null;\n taxRate?: string | number | null;\n currency?: string;\n originalCurrency?: string | null;\n originalAmount?: string | number | null;\n description: string;\n category: \"customer_invoice\" | \"interest\" | \"refund\" | \"other\" | \"asset_disposal\" | \"pos_sale\" | \"saas_revenue_apple_iap\" | \"saas_revenue_google_iap\";\n invoiceId?: number | null;\n assetId?: number | null;\n documentId?: number | null;\n notes?: string | null;\n isSelfCreatedReceipt?: boolean;\n selfReceiptReason?: string | null;\n signatureName?: string | null;\n place?: string | null;\n language?: string | null;\n};\nexport type BookkeepingRevenuesCreateResponseData = BookkeepingRevenue;\nexport type BookkeepingRevenuesCreateResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesCreateResponseData>;\n\nexport type BookkeepingRevenuesUpdateParams = {\n id: number;\n};\nexport type BookkeepingRevenuesUpdateQuery = undefined;\nexport type BookkeepingRevenuesUpdateBody = {\n costCenterId?: number | null;\n revenueDate: string;\n performedAt?: string | null;\n amount: string | number;\n netAmount: string | number;\n taxAmount?: string | number | null;\n taxRate?: string | number | null;\n currency?: string;\n originalCurrency?: string | null;\n originalAmount?: string | number | null;\n description: string;\n category: \"customer_invoice\" | \"interest\" | \"refund\" | \"other\" | \"asset_disposal\" | \"pos_sale\" | \"saas_revenue_apple_iap\" | \"saas_revenue_google_iap\";\n invoiceId?: number | null;\n assetId?: number | null;\n documentId?: number | null;\n notes?: string | null;\n isSelfCreatedReceipt?: boolean;\n selfReceiptReason?: string | null;\n signatureName?: string | null;\n place?: string | null;\n language?: string | null;\n};\nexport type BookkeepingRevenuesUpdateResponseData = BookkeepingRevenue;\nexport type BookkeepingRevenuesUpdateResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesUpdateResponseData>;\n\nexport type BookkeepingRevenuesUploadReceiptParams = {\n id: number;\n};\nexport type BookkeepingRevenuesUploadReceiptQuery = undefined;\nexport type BookkeepingRevenuesUploadReceiptBody = undefined;\nexport type BookkeepingRevenuesUploadReceiptResponseData = BookkeepingRevenue;\nexport type BookkeepingRevenuesUploadReceiptResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesUploadReceiptResponseData>;\n\nexport type BookkeepingRevenuesBulkConfirmParams = undefined;\nexport type BookkeepingRevenuesBulkConfirmQuery = undefined;\nexport type BookkeepingRevenuesBulkConfirmBody = {\n ids: Array<number>;\n};\nexport type BookkeepingRevenuesBulkConfirmResponseData = {\n results: Array<{\n id: number;\n success: boolean;\n error?: string;\n}>;\n totalSuccess: number;\n totalFailed: number;\n};\nexport type BookkeepingRevenuesBulkConfirmResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesBulkConfirmResponseData>;\n\nexport type BookkeepingRevenuesConfirmParams = {\n id: number;\n};\nexport type BookkeepingRevenuesConfirmQuery = undefined;\nexport type BookkeepingRevenuesConfirmBody = undefined;\nexport type BookkeepingRevenuesConfirmResponseData = BookkeepingRevenue;\nexport type BookkeepingRevenuesConfirmResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesConfirmResponseData>;\n\nexport type BookkeepingRevenuesConfirmCashParams = {\n id: number;\n};\nexport type BookkeepingRevenuesConfirmCashQuery = undefined;\nexport type BookkeepingRevenuesConfirmCashBody = {\n confirmedAt?: string;\n receivedAt?: string;\n};\nexport type BookkeepingRevenuesConfirmCashResponseData = BookkeepingRevenue;\nexport type BookkeepingRevenuesConfirmCashResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesConfirmCashResponseData>;\n\nexport type BookkeepingRevenuesRevokeCashConfirmParams = {\n id: number;\n};\nexport type BookkeepingRevenuesRevokeCashConfirmQuery = undefined;\nexport type BookkeepingRevenuesRevokeCashConfirmBody = {\n reason: string;\n};\nexport type BookkeepingRevenuesRevokeCashConfirmResponseData = BookkeepingRevenue;\nexport type BookkeepingRevenuesRevokeCashConfirmResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesRevokeCashConfirmResponseData>;\n\nexport type BookkeepingRevenuesDeleteParams = {\n id: number;\n};\nexport type BookkeepingRevenuesDeleteQuery = undefined;\nexport type BookkeepingRevenuesDeleteBody = undefined;\nexport type BookkeepingRevenuesDeleteResponseData = null;\nexport type BookkeepingRevenuesDeleteResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesDeleteResponseData>;\n\nexport type BookkeepingRevenuesCreateExternalParams = undefined;\nexport type BookkeepingRevenuesCreateExternalQuery = undefined;\nexport type BookkeepingRevenuesCreateExternalBody = {\n costCenterId?: number | null;\n revenueDate: string;\n performedAt?: string | null;\n amount: string | number;\n netAmount: string | number;\n taxAmount?: string | number | null;\n taxRate?: string | number | null;\n currency?: string;\n description: string;\n category?: \"customer_invoice\" | \"interest\" | \"refund\" | \"other\" | \"asset_disposal\" | \"pos_sale\" | \"saas_revenue_apple_iap\" | \"saas_revenue_google_iap\";\n invoiceId?: number | null;\n notes?: string | null;\n confirm?: boolean;\n};\nexport type BookkeepingRevenuesCreateExternalResponseData = BookkeepingRevenue;\nexport type BookkeepingRevenuesCreateExternalResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesCreateExternalResponseData>;\n\nexport type BookkeepingRevenuesInvoiceAdjustmentExternalParams = undefined;\nexport type BookkeepingRevenuesInvoiceAdjustmentExternalQuery = undefined;\nexport type BookkeepingRevenuesInvoiceAdjustmentExternalBody = {\n invoiceId: number;\n payoutAmount: string | number;\n revenueDate: string;\n externalRef: string;\n costCenterId?: number | null;\n description?: string;\n notes?: string | null;\n confirm?: boolean;\n};\nexport type BookkeepingRevenuesInvoiceAdjustmentExternalResponseData = { created: boolean; idempotent: boolean; invoiceId: number; invoiceNumber: string; payoutAmount: string; invoiceTotal: string; adjustmentAmount: string; revenue: BookkeepingRevenue };\nexport type BookkeepingRevenuesInvoiceAdjustmentExternalResponse = import(\"../types\").ApiEnvelope<BookkeepingRevenuesInvoiceAdjustmentExternalResponseData>;\n\nexport type BookkeepingExpensesSearchParams = undefined;\nexport type BookkeepingExpensesSearchQuery = {\n q?: string;\n startDate?: string;\n endDate?: string;\n category?: \"infrastructure\" | \"office\" | \"software\" | \"hardware\" | \"travel\" | \"marketing\" | \"legal\" | \"accounting\" | \"insurance\" | \"personnel\" | \"depreciation\" | \"interest_expense\" | \"rent\" | \"bank_fees\" | \"professional_services\" | \"other\" | \"private_withdrawal\" | \"ust_payment\";\n vendor?: string;\n currency?: string;\n isConfirmed?: boolean;\n paymentStatus?: \"unmatched\" | \"cash_confirmed\" | \"partially_matched\" | \"fully_matched\";\n isDeductible?: boolean;\n minAmount?: string;\n maxAmount?: string;\n page?: number;\n pageSize?: number;\n sortBy?: \"createdAt\" | \"expenseDate\" | \"amount\";\n sortDir?: \"asc\" | \"desc\";\n};\nexport type BookkeepingExpensesSearchBody = undefined;\nexport type BookkeepingExpensesSearchResponseData = PaginatedResult<BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] }>;\nexport type BookkeepingExpensesSearchResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesSearchResponseData>;\n\nexport type BookkeepingExpensesGetByIdParams = {\n id: number;\n};\nexport type BookkeepingExpensesGetByIdQuery = undefined;\nexport type BookkeepingExpensesGetByIdBody = undefined;\nexport type BookkeepingExpensesGetByIdResponseData = BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] };\nexport type BookkeepingExpensesGetByIdResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesGetByIdResponseData>;\n\nexport type BookkeepingExpensesAnalyzeReceiptParams = undefined;\nexport type BookkeepingExpensesAnalyzeReceiptQuery = undefined;\nexport type BookkeepingExpensesAnalyzeReceiptBody = undefined;\nexport type BookkeepingExpensesAnalyzeReceiptResponseData = {\n extracted: {\n vendor?: string;\n vendorInvoiceNumber?: string;\n expenseDate?: string;\n amount?: string;\n netAmount?: string;\n taxAmount?: string;\n taxRate?: number;\n currency?: string;\n category?: \"infrastructure\" | \"office\" | \"software\" | \"hardware\" | \"travel\" | \"marketing\" | \"legal\" | \"accounting\" | \"insurance\" | \"personnel\" | \"depreciation\" | \"interest_expense\" | \"rent\" | \"bank_fees\" | \"professional_services\" | \"other\" | \"ust_payment\";\n description?: string;\n};\n confidence: {\n vendor: number;\n date: number;\n amount: number;\n overall: number;\n};\n rawText: string;\n};\nexport type BookkeepingExpensesAnalyzeReceiptResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesAnalyzeReceiptResponseData>;\n\nexport type BookkeepingExpensesCreateParams = undefined;\nexport type BookkeepingExpensesCreateQuery = undefined;\nexport type BookkeepingExpensesCreateBody = {\n costCenterId?: number | null;\n expenseDate: string;\n amount: string | number;\n netAmount: string | number;\n taxAmount?: string | number | null;\n taxRate?: string | number | null;\n currency?: string;\n description: string;\n category: \"infrastructure\" | \"office\" | \"software\" | \"hardware\" | \"travel\" | \"marketing\" | \"legal\" | \"accounting\" | \"insurance\" | \"personnel\" | \"depreciation\" | \"interest_expense\" | \"rent\" | \"bank_fees\" | \"professional_services\" | \"other\" | \"ust_payment\";\n vendor?: string | null;\n vendorInvoiceNumber?: string | null;\n notes?: string | null;\n isDeductible?: boolean;\n isConfirmed?: boolean;\n isSelfCreatedReceipt?: boolean;\n selfReceiptReason?: string | null;\n signatureName?: string | null;\n place?: string | null;\n language?: string | null;\n inputVatEligibility?: \"NONE\" | \"FULL\" | \"PARTIAL\";\n inputVatAmount?: string | number | null;\n inputVatRate?: string | number | null;\n createAsAsset?: boolean;\n asset?: {\n name?: string;\n description?: string | null;\n assetType?: \"equipment\" | \"vehicle\" | \"software\" | \"furniture\" | \"leasehold_improvement\" | \"other\";\n purchaseDate?: string;\n purchaseAmountNet?: string | number;\n currency?: string;\n usefulLifeMonths?: number;\n depreciationMethod?: \"linear\" | \"immediate_gwg\" | \"none\";\n residualValue?: string | number;\n inputVatEligibility?: \"NONE\" | \"FULL\" | \"PARTIAL\";\n inputVatAmount?: string | number | null;\n inputVatRate?: string | number | null;\n vendorName?: string | null;\n vendorInvoiceNumber?: string | null;\n costCenterId?: number | null;\n documentId?: number | null;\n inheritExpenseDocument?: boolean;\n};\n};\nexport type BookkeepingExpensesCreateResponseData = BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] };\nexport type BookkeepingExpensesCreateResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesCreateResponseData>;\n\nexport type BookkeepingExpensesUpdateParams = {\n id: number;\n};\nexport type BookkeepingExpensesUpdateQuery = undefined;\nexport type BookkeepingExpensesUpdateBody = {\n costCenterId?: number | null;\n expenseDate: string;\n amount: string | number;\n netAmount: string | number;\n taxAmount?: string | number | null;\n taxRate?: string | number | null;\n currency?: string;\n description: string;\n category: \"infrastructure\" | \"office\" | \"software\" | \"hardware\" | \"travel\" | \"marketing\" | \"legal\" | \"accounting\" | \"insurance\" | \"personnel\" | \"depreciation\" | \"interest_expense\" | \"rent\" | \"bank_fees\" | \"professional_services\" | \"other\" | \"ust_payment\";\n vendor?: string | null;\n vendorInvoiceNumber?: string | null;\n notes?: string | null;\n isDeductible?: boolean;\n isConfirmed?: boolean;\n isSelfCreatedReceipt?: boolean;\n selfReceiptReason?: string | null;\n signatureName?: string | null;\n place?: string | null;\n language?: string | null;\n inputVatEligibility?: \"NONE\" | \"FULL\" | \"PARTIAL\";\n inputVatAmount?: string | number | null;\n inputVatRate?: string | number | null;\n};\nexport type BookkeepingExpensesUpdateResponseData = BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] };\nexport type BookkeepingExpensesUpdateResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesUpdateResponseData>;\n\nexport type BookkeepingExpensesUploadReceiptParams = {\n id: number;\n};\nexport type BookkeepingExpensesUploadReceiptQuery = undefined;\nexport type BookkeepingExpensesUploadReceiptBody = undefined;\nexport type BookkeepingExpensesUploadReceiptResponseData = BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] };\nexport type BookkeepingExpensesUploadReceiptResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesUploadReceiptResponseData>;\n\nexport type BookkeepingExpensesBulkConfirmParams = undefined;\nexport type BookkeepingExpensesBulkConfirmQuery = undefined;\nexport type BookkeepingExpensesBulkConfirmBody = {\n ids: Array<number>;\n};\nexport type BookkeepingExpensesBulkConfirmResponseData = {\n results: Array<{\n id: number;\n success: boolean;\n error?: string;\n}>;\n totalSuccess: number;\n totalFailed: number;\n};\nexport type BookkeepingExpensesBulkConfirmResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesBulkConfirmResponseData>;\n\nexport type BookkeepingExpensesConfirmParams = {\n id: number;\n};\nexport type BookkeepingExpensesConfirmQuery = undefined;\nexport type BookkeepingExpensesConfirmBody = undefined;\nexport type BookkeepingExpensesConfirmResponseData = BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] };\nexport type BookkeepingExpensesConfirmResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesConfirmResponseData>;\n\nexport type BookkeepingExpensesConfirmCashParams = {\n id: number;\n};\nexport type BookkeepingExpensesConfirmCashQuery = undefined;\nexport type BookkeepingExpensesConfirmCashBody = {\n confirmedAt?: string;\n};\nexport type BookkeepingExpensesConfirmCashResponseData = BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] };\nexport type BookkeepingExpensesConfirmCashResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesConfirmCashResponseData>;\n\nexport type BookkeepingExpensesRevokeCashConfirmParams = {\n id: number;\n};\nexport type BookkeepingExpensesRevokeCashConfirmQuery = undefined;\nexport type BookkeepingExpensesRevokeCashConfirmBody = {\n reason: string;\n};\nexport type BookkeepingExpensesRevokeCashConfirmResponseData = BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] };\nexport type BookkeepingExpensesRevokeCashConfirmResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesRevokeCashConfirmResponseData>;\n\nexport type BookkeepingExpensesMarkAsAssetParams = {\n id: number;\n};\nexport type BookkeepingExpensesMarkAsAssetQuery = undefined;\nexport type BookkeepingExpensesMarkAsAssetBody = {\n name?: string;\n description?: string | null;\n assetType?: \"equipment\" | \"vehicle\" | \"software\" | \"furniture\" | \"leasehold_improvement\" | \"other\";\n purchaseDate?: string;\n purchaseAmountNet?: string | number;\n currency?: string;\n usefulLifeMonths?: number;\n depreciationMethod?: \"linear\" | \"immediate_gwg\" | \"none\";\n residualValue?: string | number;\n inputVatEligibility?: \"NONE\" | \"FULL\" | \"PARTIAL\";\n inputVatAmount?: string | number | null;\n inputVatRate?: string | number | null;\n vendorName?: string | null;\n vendorInvoiceNumber?: string | null;\n costCenterId?: number | null;\n documentId?: number | null;\n inheritExpenseDocument?: boolean;\n};\nexport type BookkeepingExpensesMarkAsAssetResponseData = { expense: BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] }; asset: BookkeepingAsset; createdFromExpense: true };\nexport type BookkeepingExpensesMarkAsAssetResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesMarkAsAssetResponseData>;\n\nexport type BookkeepingExpensesDeleteParams = {\n id: number;\n};\nexport type BookkeepingExpensesDeleteQuery = undefined;\nexport type BookkeepingExpensesDeleteBody = undefined;\nexport type BookkeepingExpensesDeleteResponseData = null;\nexport type BookkeepingExpensesDeleteResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesDeleteResponseData>;\n\nexport type BookkeepingExpensesCreateExternalParams = undefined;\nexport type BookkeepingExpensesCreateExternalQuery = undefined;\nexport type BookkeepingExpensesCreateExternalBody = {\n s3Key?: string;\n amount: string | number;\n netAmount: string | number;\n taxAmount?: string | number;\n taxRate?: string | number;\n expenseDate: string;\n vendor?: string;\n description: string;\n currency?: string;\n category: \"infrastructure\" | \"office\" | \"software\" | \"hardware\" | \"travel\" | \"marketing\" | \"legal\" | \"accounting\" | \"insurance\" | \"personnel\" | \"depreciation\" | \"interest_expense\" | \"rent\" | \"bank_fees\" | \"professional_services\" | \"other\" | \"ust_payment\";\n vendorInvoiceNumber?: string;\n notes?: string;\n isDeductible?: boolean;\n inputVatEligibility?: \"NONE\" | \"FULL\" | \"PARTIAL\";\n inputVatAmount?: string | number;\n inputVatRate?: string | number;\n costCenterId?: number | null;\n};\nexport type BookkeepingExpensesCreateExternalResponseData = BookkeepingExpense & { assetInfo: { hasLinkedAsset: boolean; linkedAssetId: number | null; linkedAssetIsActive: boolean | null; linkedAssetStatus: \"none\" | \"active\" | \"disposed\"; accountingTreatment: \"immediate_expense\" | \"capitalized_asset\"; reportingImpact: \"expense\" | \"depreciation\" }; paymentAllocations: ResolvedPaymentAllocation[] };\nexport type BookkeepingExpensesCreateExternalResponse = import(\"../types\").ApiEnvelope<BookkeepingExpensesCreateExternalResponseData>;\n\nexport type BookkeepingAssetsListSammelpostenPoolsParams = undefined;\nexport type BookkeepingAssetsListSammelpostenPoolsQuery = import(\"../types\").ContractNotReady<\"Query not typed yet. Add DTO + validate({ query }) to the route (or explicitly declare none).\">;\nexport type BookkeepingAssetsListSammelpostenPoolsBody = undefined;\nexport type BookkeepingAssetsListSammelpostenPoolsResponseData = Array<any>;\nexport type BookkeepingAssetsListSammelpostenPoolsResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsListSammelpostenPoolsResponseData>;\n\nexport type BookkeepingAssetsGetSammelpostenPoolParams = {\n poolId: number;\n};\nexport type BookkeepingAssetsGetSammelpostenPoolQuery = undefined;\nexport type BookkeepingAssetsGetSammelpostenPoolBody = undefined;\nexport type BookkeepingAssetsGetSammelpostenPoolResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingAssetsGetSammelpostenPoolResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsGetSammelpostenPoolResponseData>;\n\nexport type BookkeepingAssetsGenerateDepreciationParams = undefined;\nexport type BookkeepingAssetsGenerateDepreciationQuery = undefined;\nexport type BookkeepingAssetsGenerateDepreciationBody = {\n fiscalYear: number;\n};\nexport type BookkeepingAssetsGenerateDepreciationResponseData = Array<any>;\nexport type BookkeepingAssetsGenerateDepreciationResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsGenerateDepreciationResponseData>;\n\nexport type BookkeepingAssetsGetDepreciationRecordsParams = undefined;\nexport type BookkeepingAssetsGetDepreciationRecordsQuery = {\n fiscalYear: number;\n};\nexport type BookkeepingAssetsGetDepreciationRecordsBody = undefined;\nexport type BookkeepingAssetsGetDepreciationRecordsResponseData = Array<any>;\nexport type BookkeepingAssetsGetDepreciationRecordsResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsGetDepreciationRecordsResponseData>;\n\nexport type BookkeepingAssetsFinalizeDepreciationParams = undefined;\nexport type BookkeepingAssetsFinalizeDepreciationQuery = undefined;\nexport type BookkeepingAssetsFinalizeDepreciationBody = {\n fiscalYear: number;\n};\nexport type BookkeepingAssetsFinalizeDepreciationResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingAssetsFinalizeDepreciationResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsFinalizeDepreciationResponseData>;\n\nexport type BookkeepingAssetsIabListParams = undefined;\nexport type BookkeepingAssetsIabListQuery = import(\"../types\").ContractNotReady<\"Query not typed yet. Add DTO + validate({ query }) to the route (or explicitly declare none).\">;\nexport type BookkeepingAssetsIabListBody = undefined;\nexport type BookkeepingAssetsIabListResponseData = Array<any>;\nexport type BookkeepingAssetsIabListResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsIabListResponseData>;\n\nexport type BookkeepingAssetsIabCreateParams = undefined;\nexport type BookkeepingAssetsIabCreateQuery = undefined;\nexport type BookkeepingAssetsIabCreateBody = {\n description: string;\n plannedAssetType: \"equipment\" | \"vehicle\" | \"software\" | \"furniture\" | \"leasehold_improvement\" | \"land\" | \"building\" | \"building_equipment\" | \"intangible\" | \"digital_asset\" | \"other\";\n plannedAcquisitionCost: string;\n deductionRate?: string;\n fiscalYearClaimed: number;\n};\nexport type BookkeepingAssetsIabCreateResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingAssetsIabCreateResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsIabCreateResponseData>;\n\nexport type BookkeepingAssetsIabGetParams = {\n iabId: number;\n};\nexport type BookkeepingAssetsIabGetQuery = undefined;\nexport type BookkeepingAssetsIabGetBody = undefined;\nexport type BookkeepingAssetsIabGetResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingAssetsIabGetResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsIabGetResponseData>;\n\nexport type BookkeepingAssetsIabDissolveParams = {\n iabId: number;\n};\nexport type BookkeepingAssetsIabDissolveQuery = undefined;\nexport type BookkeepingAssetsIabDissolveBody = {\n linkedAssetId: number;\n};\nexport type BookkeepingAssetsIabDissolveResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingAssetsIabDissolveResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsIabDissolveResponseData>;\n\nexport type BookkeepingAssetsIabReverseParams = {\n iabId: number;\n};\nexport type BookkeepingAssetsIabReverseQuery = undefined;\nexport type BookkeepingAssetsIabReverseBody = {\n reversalFiscalYear: number;\n};\nexport type BookkeepingAssetsIabReverseResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingAssetsIabReverseResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsIabReverseResponseData>;\n\nexport type BookkeepingAssetsIabDeleteParams = {\n iabId: number;\n};\nexport type BookkeepingAssetsIabDeleteQuery = undefined;\nexport type BookkeepingAssetsIabDeleteBody = undefined;\nexport type BookkeepingAssetsIabDeleteResponseData = null;\nexport type BookkeepingAssetsIabDeleteResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsIabDeleteResponseData>;\n\nexport type BookkeepingAssetsSearchParams = undefined;\nexport type BookkeepingAssetsSearchQuery = {\n page?: number;\n limit?: number;\n assetType?: \"equipment\" | \"vehicle\" | \"software\" | \"furniture\" | \"leasehold_improvement\" | \"land\" | \"building\" | \"building_equipment\" | \"intangible\" | \"digital_asset\" | \"other\";\n depreciationMethod?: \"linear\" | \"degressive\" | \"immediate_gwg\" | \"sammelposten\" | \"digital_afa\" | \"none\";\n buildingType?: \"wohngebaeude_post2022\" | \"wohngebaeude_1925_2022\" | \"wohngebaeude_pre1925\" | \"nichtwohngebaeude\" | \"denkmal_7i\" | \"mietwohnungsbau_7b\";\n isActive?: \"true\" | \"false\";\n isDigitalAsset?: \"true\" | \"false\";\n search?: string;\n sortBy?: \"purchaseDate\" | \"name\" | \"purchaseAmountNet\" | \"inventoryNumber\" | \"inServiceDate\";\n sortOrder?: \"asc\" | \"desc\";\n};\nexport type BookkeepingAssetsSearchBody = undefined;\nexport type BookkeepingAssetsSearchResponseData = PaginatedResult<BookkeepingAsset>;\nexport type BookkeepingAssetsSearchResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsSearchResponseData>;\n\nexport type BookkeepingAssetsCreateParams = undefined;\nexport type BookkeepingAssetsCreateQuery = undefined;\nexport type BookkeepingAssetsCreateBody = {\n costCenterId?: number;\n name: string;\n description?: string;\n assetType: \"equipment\" | \"vehicle\" | \"software\" | \"furniture\" | \"leasehold_improvement\" | \"land\" | \"building\" | \"building_equipment\" | \"intangible\" | \"digital_asset\" | \"other\";\n purchaseDate: string;\n inServiceDate?: string;\n purchaseAmountNet: string;\n currency?: string;\n inventoryNumber?: string;\n ancillaryAcquisitionCosts?: string;\n acquisitionPriceReductions?: string;\n usefulLifeMonths?: number;\n depreciationMethod: \"linear\" | \"degressive\" | \"immediate_gwg\" | \"sammelposten\" | \"digital_afa\" | \"none\";\n residualValue?: string;\n degressiveRate?: string;\n isDigitalAsset?: boolean;\n buildingType?: \"wohngebaeude_post2022\" | \"wohngebaeude_1925_2022\" | \"wohngebaeude_pre1925\" | \"nichtwohngebaeude\" | \"denkmal_7i\" | \"mietwohnungsbau_7b\";\n constructionYear?: number;\n buildingApplicationDate?: string;\n landValue?: string;\n buildingAreaSqm?: string;\n herstellungskostenPerSqm?: string;\n denkmalBescheinigung?: boolean;\n businessUsePercentage?: string;\n afaTableKey?: string;\n afaTableName?: string;\n inputVatAmount?: string;\n inputVatRate?: string;\n inputVatEligibility?: \"NONE\" | \"FULL\" | \"PARTIAL\";\n vendorName?: string;\n vendorInvoiceNumber?: string;\n expenseId?: number;\n documentId?: number;\n};\nexport type BookkeepingAssetsCreateResponseData = BookkeepingAsset;\nexport type BookkeepingAssetsCreateResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsCreateResponseData>;\n\nexport type BookkeepingAssetsGetByIdParams = {\n assetId: number;\n};\nexport type BookkeepingAssetsGetByIdQuery = undefined;\nexport type BookkeepingAssetsGetByIdBody = undefined;\nexport type BookkeepingAssetsGetByIdResponseData = {\n asset: any;\n depreciationSchedule: any;\n linkedDisposalRevenue: {\n id: number;\n amount: string;\n revenueDate: any;\n isConfirmed: boolean;\n} | null;\n};\nexport type BookkeepingAssetsGetByIdResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsGetByIdResponseData>;\n\nexport type BookkeepingAssetsUpdateParams = {\n assetId: number;\n};\nexport type BookkeepingAssetsUpdateQuery = undefined;\nexport type BookkeepingAssetsUpdateBody = {\n costCenterId?: number;\n name?: string;\n description?: string;\n assetType?: \"equipment\" | \"vehicle\" | \"software\" | \"furniture\" | \"leasehold_improvement\" | \"land\" | \"building\" | \"building_equipment\" | \"intangible\" | \"digital_asset\" | \"other\";\n purchaseDate?: string;\n inServiceDate?: string;\n purchaseAmountNet?: string;\n currency?: string;\n inventoryNumber?: string;\n usefulLifeMonths?: number;\n depreciationMethod?: \"linear\" | \"degressive\" | \"immediate_gwg\" | \"sammelposten\" | \"digital_afa\" | \"none\";\n residualValue?: string;\n degressiveRate?: string;\n isDigitalAsset?: boolean;\n buildingType?: \"wohngebaeude_post2022\" | \"wohngebaeude_1925_2022\" | \"wohngebaeude_pre1925\" | \"nichtwohngebaeude\" | \"denkmal_7i\" | \"mietwohnungsbau_7b\";\n constructionYear?: number;\n buildingApplicationDate?: string;\n landValue?: string;\n buildingAreaSqm?: string;\n herstellungskostenPerSqm?: string;\n denkmalBescheinigung?: boolean;\n businessUsePercentage?: string;\n afaTableKey?: string;\n afaTableName?: string;\n inputVatAmount?: string;\n inputVatRate?: string;\n inputVatEligibility?: \"NONE\" | \"FULL\" | \"PARTIAL\";\n vendorName?: string;\n vendorInvoiceNumber?: string;\n expenseId?: number;\n documentId?: number;\n accountNumber?: string;\n bilanzPosition?: string;\n};\nexport type BookkeepingAssetsUpdateResponseData = BookkeepingAsset;\nexport type BookkeepingAssetsUpdateResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsUpdateResponseData>;\n\nexport type BookkeepingAssetsDisposeParams = {\n assetId: number;\n};\nexport type BookkeepingAssetsDisposeQuery = undefined;\nexport type BookkeepingAssetsDisposeBody = {\n disposedAt: string;\n disposalType: \"sale\" | \"scrapping\" | \"theft\" | \"private_withdrawal\" | \"insurance_claim\" | \"donation\" | \"destruction\";\n disposalAmount?: string;\n disposalReason: string;\n};\nexport type BookkeepingAssetsDisposeResponseData = BookkeepingAsset;\nexport type BookkeepingAssetsDisposeResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsDisposeResponseData>;\n\nexport type BookkeepingAssetsDeleteParams = {\n assetId: number;\n};\nexport type BookkeepingAssetsDeleteQuery = undefined;\nexport type BookkeepingAssetsDeleteBody = undefined;\nexport type BookkeepingAssetsDeleteResponseData = null;\nexport type BookkeepingAssetsDeleteResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsDeleteResponseData>;\n\nexport type BookkeepingAssetsApplySonderafaParams = {\n assetId: number;\n};\nexport type BookkeepingAssetsApplySonderafaQuery = undefined;\nexport type BookkeepingAssetsApplySonderafaBody = {\n amount: string;\n};\nexport type BookkeepingAssetsApplySonderafaResponseData = BookkeepingAsset;\nexport type BookkeepingAssetsApplySonderafaResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsApplySonderafaResponseData>;\n\nexport type BookkeepingAssetsSwitchToLinearParams = {\n assetId: number;\n};\nexport type BookkeepingAssetsSwitchToLinearQuery = undefined;\nexport type BookkeepingAssetsSwitchToLinearBody = {\n switchDate: string;\n};\nexport type BookkeepingAssetsSwitchToLinearResponseData = BookkeepingAsset;\nexport type BookkeepingAssetsSwitchToLinearResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsSwitchToLinearResponseData>;\n\nexport type BookkeepingAssetsAddCostComponentParams = {\n assetId: number;\n};\nexport type BookkeepingAssetsAddCostComponentQuery = undefined;\nexport type BookkeepingAssetsAddCostComponentBody = {\n componentType: \"delivery\" | \"installation\" | \"customs\" | \"notary\" | \"grunderwerbsteuer\" | \"subsequent\" | \"reduction\" | \"other\";\n description: string;\n amount: string;\n date: string;\n documentId?: number;\n};\nexport type BookkeepingAssetsAddCostComponentResponseData = AssetCostComponent;\nexport type BookkeepingAssetsAddCostComponentResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsAddCostComponentResponseData>;\n\nexport type BookkeepingAssetsListCostComponentsParams = {\n assetId: number;\n};\nexport type BookkeepingAssetsListCostComponentsQuery = undefined;\nexport type BookkeepingAssetsListCostComponentsBody = undefined;\nexport type BookkeepingAssetsListCostComponentsResponseData = Array<any>;\nexport type BookkeepingAssetsListCostComponentsResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsListCostComponentsResponseData>;\n\nexport type BookkeepingAssetsDeleteCostComponentParams = {\n assetId: number;\n componentId: number;\n};\nexport type BookkeepingAssetsDeleteCostComponentQuery = undefined;\nexport type BookkeepingAssetsDeleteCostComponentBody = undefined;\nexport type BookkeepingAssetsDeleteCostComponentResponseData = null;\nexport type BookkeepingAssetsDeleteCostComponentResponse = import(\"../types\").ApiEnvelope<BookkeepingAssetsDeleteCostComponentResponseData>;\n\nexport type BookkeepingReportsEuerParams = undefined;\nexport type BookkeepingReportsEuerQuery = {\n year?: number;\n format?: \"json\" | \"csv\";\n};\nexport type BookkeepingReportsEuerBody = undefined;\nexport type BookkeepingReportsEuerResponseData = {\n year: number;\n period: {\n start: string;\n end: string;\n};\n revenues: {\n customerInvoices: number;\n interest: number;\n refunds: number;\n assetDisposal: number;\n posSales: number;\n other: number;\n total: number;\n};\n expenses: {\n infrastructure: number;\n office: number;\n software: number;\n hardware: number;\n travel: number;\n marketing: number;\n legal: number;\n accounting: number;\n insurance: number;\n personnel: number;\n depreciation: number;\n interestExpense: number;\n rent: number;\n bankFees: number;\n professionalServices: number;\n ustPayment: number;\n other: number;\n total: number;\n};\n kapitalkonto: {\n entnahmenGesamt: number;\n entnahmenGeld: number;\n einlagenGesamt: number;\n einlagenGeld: number;\n};\n profit: number;\n taxableAmount: number;\n currency: string;\n generatedAt: string;\n bookkeepingBasis: \"eur\" | \"accrual\";\n summary: {\n totalRevenues: number;\n totalExpenses: number;\n profitMargin: number;\n};\n};\nexport type BookkeepingReportsEuerResponse = import(\"../types\").ApiEnvelope<BookkeepingReportsEuerResponseData>;\n\nexport type BookkeepingReportsSummaryParams = undefined;\nexport type BookkeepingReportsSummaryQuery = {\n year?: number;\n month?: number;\n};\nexport type BookkeepingReportsSummaryBody = undefined;\nexport type BookkeepingReportsSummaryResponseData = {\n period: {\n year: number;\n month: number | null;\n start: string;\n end: string;\n};\n summary: {\n totalRevenues: number;\n totalExpenses: number;\n profit: number;\n profitMargin: number;\n};\n revenuesByCategory: Array<{\n category: string;\n total: number;\n count: number;\n}>;\n expensesByCategory: Array<{\n category: string;\n total: number;\n count: number;\n}>;\n};\nexport type BookkeepingReportsSummaryResponse = import(\"../types\").ApiEnvelope<BookkeepingReportsSummaryResponseData>;\n\nexport type BookkeepingReportsMonthlyTrendParams = undefined;\nexport type BookkeepingReportsMonthlyTrendQuery = {\n year?: number;\n};\nexport type BookkeepingReportsMonthlyTrendBody = undefined;\nexport type BookkeepingReportsMonthlyTrendResponseData = {\n year: number;\n months: Array<{\n month: number;\n monthName: string;\n revenues: number;\n expenses: number;\n profit: number;\n}>;\n};\nexport type BookkeepingReportsMonthlyTrendResponse = import(\"../types\").ApiEnvelope<BookkeepingReportsMonthlyTrendResponseData>;\n\nexport type BookkeepingReportsAssetRegisterParams = undefined;\nexport type BookkeepingReportsAssetRegisterQuery = {\n year?: number;\n};\nexport type BookkeepingReportsAssetRegisterBody = undefined;\nexport type BookkeepingReportsAssetRegisterResponseData = {\n year: number;\n period: {\n start: string;\n end: string;\n};\n summary: {\n openingBookValue: number;\n acquisitionsNet: number;\n disposalProceeds: number;\n depreciationCurrentYear: number;\n closingBookValue: number;\n acquiredAssets: number;\n activeAssetsAtYearEnd: number;\n disposedAssetsInYear: number;\n};\n items: Array<{\n assetId: number;\n name: string;\n assetType: string;\n isActive: boolean;\n purchaseDate: string;\n purchaseAmountNet: number;\n depreciationMethod: string;\n usefulLifeMonths: number | null;\n residualValue: number;\n depreciationCurrentYear: number;\n accumulatedDepreciation: number;\n bookValueStartOfYear: number;\n bookValueEndOfYear: number;\n bookValueAtDisposal: number | null;\n disposedAt: string | null;\n disposalAmount: number | null;\n linkedDisposalRevenueId: number | null;\n sourceExpenseId: number | null;\n sourceExpenseConfirmed: boolean | null;\n}>;\n generatedAt: string;\n currency: string;\n};\nexport type BookkeepingReportsAssetRegisterResponse = import(\"../types\").ApiEnvelope<BookkeepingReportsAssetRegisterResponseData>;\n\nexport type BookkeepingReportsCategoryBreakdownParams = undefined;\nexport type BookkeepingReportsCategoryBreakdownQuery = {\n year?: number;\n type?: \"expense\" | \"revenue\";\n};\nexport type BookkeepingReportsCategoryBreakdownBody = undefined;\nexport type BookkeepingReportsCategoryBreakdownResponseData = {\n year: number;\n type: string;\n breakdown: Array<{\n category: string;\n total: number;\n count: number;\n percentage: number;\n}>;\n total: number;\n};\nexport type BookkeepingReportsCategoryBreakdownResponse = import(\"../types\").ApiEnvelope<BookkeepingReportsCategoryBreakdownResponseData>;\n\nexport type BookkeepingReportsVendorBreakdownParams = undefined;\nexport type BookkeepingReportsVendorBreakdownQuery = {\n year?: number;\n};\nexport type BookkeepingReportsVendorBreakdownBody = undefined;\nexport type BookkeepingReportsVendorBreakdownResponseData = {\n year: number;\n breakdown: Array<{\n vendor: string;\n total: number;\n count: number;\n percentage: number;\n}>;\n total: number;\n};\nexport type BookkeepingReportsVendorBreakdownResponse = import(\"../types\").ApiEnvelope<BookkeepingReportsVendorBreakdownResponseData>;\n\nexport type BookkeepingReportsVatStatusParams = undefined;\nexport type BookkeepingReportsVatStatusQuery = undefined;\nexport type BookkeepingReportsVatStatusBody = undefined;\nexport type BookkeepingReportsVatStatusResponseData = {\n currentRegime: {\n regime: string | null;\n validFrom?: any | null;\n validTo?: any | null;\n reason?: string | null;\n};\n thresholds: {\n kleinunternehmerGraceAmount: number;\n kleinunternehmerMaxAmount: number;\n};\n revenue: {\n currentYear: {\n year: number;\n amount: number;\n percent: number;\n threshold: number;\n};\n previousYear: {\n year: number;\n amount: number;\n percent: number;\n threshold: number;\n};\n};\n warning: string | null;\n warningLevel: \"none\" | \"info\" | \"warning\" | \"critical\";\n userDecisionRequired: boolean;\n regimeRecommendation: {\n currentYear: any;\n nextYear: any;\n};\n taxDecisions: Record<string, any>;\n accountingMethod: string;\n ustva: {\n filingPreference: string;\n recommendation: any;\n thresholds: {\n monthlyVatDueThreshold: number;\n annualVatDueExemptThreshold: number;\n newCompanyMonthlyYears: number;\n};\n};\n};\nexport type BookkeepingReportsVatStatusResponse = import(\"../types\").ApiEnvelope<BookkeepingReportsVatStatusResponseData>;\n\nexport type BookkeepingReportsVatPeriodsParams = undefined;\nexport type BookkeepingReportsVatPeriodsQuery = undefined;\nexport type BookkeepingReportsVatPeriodsBody = undefined;\nexport type BookkeepingReportsVatPeriodsResponseData = {\n count: number;\n periods: Array<{\n id: number;\n regime: string;\n validFrom?: any | null;\n validTo?: any | null;\n reason?: string | null;\n triggerAmount: number | null;\n triggerAt?: any | null;\n triggerDocId?: number | null;\n triggerDocType?: string | null;\n createdAt?: any | null;\n}>;\n};\nexport type BookkeepingReportsVatPeriodsResponse = import(\"../types\").ApiEnvelope<BookkeepingReportsVatPeriodsResponseData>;\n\nexport type BookkeepingReportsVatUstvaParams = undefined;\nexport type BookkeepingReportsVatUstvaQuery = {\n year?: number;\n period?: \"monthly\" | \"quarterly\" | \"annual\";\n periodNumber?: number;\n format?: \"json\" | \"csv\";\n};\nexport type BookkeepingReportsVatUstvaBody = undefined;\nexport type BookkeepingReportsVatUstvaResponseData = {\n period: {\n year: number;\n quarter?: number;\n month?: number;\n startDate: string;\n endDate: string;\n};\n generatedAt: string;\n outputVat: {\n standard19: any;\n reduced7: any;\n reverseCharge: any;\n section13bReceived: any;\n section13bTax: any;\n euB2b: any;\n export: any;\n exempt: any;\n total: number;\n};\n inputVat: {\n standard19: any;\n reduced7: any;\n section13b: any;\n other: any;\n total: number;\n};\n taxLiability: {\n outputVat: number;\n inputVat: number;\n netLiability: number;\n};\n currency: string;\n regime?: string;\n accountingMethod?: string;\n hasKleinunternehmerSegments?: boolean;\n kleinunternehmerNote?: string;\n outputVatWarnings?: Array<{\n code: \"missing_receipt_date\" | \"correction_without_refund\" | \"not_convertible\" | \"foreign_currency\";\n invoiceId: number;\n message: string;\n}>;\n};\nexport type BookkeepingReportsVatUstvaResponse = import(\"../types\").ApiEnvelope<BookkeepingReportsVatUstvaResponseData>;\n\nexport type PaymentsImportCsvParams = undefined;\nexport type PaymentsImportCsvQuery = undefined;\nexport type PaymentsImportCsvBody = {\n paymentAccountId: number;\n delimiter?: string;\n profile?: string;\n dryRun?: boolean;\n};\nexport type PaymentsImportCsvResponseData = {\n inserted: number;\n skipped: number;\n autoSyncSkipped?: number;\n preview: {\n headers: Array<string>;\n rowCount: number;\n};\n};\nexport type PaymentsImportCsvResponse = import(\"../types\").ApiEnvelope<PaymentsImportCsvResponseData>;\n\nexport type PaymentsImportCsvPreviewParams = undefined;\nexport type PaymentsImportCsvPreviewQuery = undefined;\nexport type PaymentsImportCsvPreviewBody = {\n paymentAccountId: number;\n delimiter?: string;\n profile?: string;\n dryRun?: boolean;\n previewRows?: number;\n maxRows?: number;\n};\nexport type PaymentsImportCsvPreviewResponseData = {\n profileKey: string | null;\n delimiter: string;\n preview: {\n headers: Array<string>;\n rowCount: number;\n};\n mappedRows: Array<any>;\n errors: Array<any>;\n stats: {\n validRows: number;\n invalidRows: number;\n};\n};\nexport type PaymentsImportCsvPreviewResponse = import(\"../types\").ApiEnvelope<PaymentsImportCsvPreviewResponseData>;\n\nexport type PaymentsListCsvProfilesParams = undefined;\nexport type PaymentsListCsvProfilesQuery = undefined;\nexport type PaymentsListCsvProfilesBody = undefined;\nexport type PaymentsListCsvProfilesResponseData = Array<{\n key: string;\n name: string;\n description: string | null;\n delimiterHint: string | null;\n}>;\nexport type PaymentsListCsvProfilesResponse = import(\"../types\").ApiEnvelope<PaymentsListCsvProfilesResponseData>;\n\nexport type PaymentsDownloadCsvTemplateParams = {\n profileKey: string;\n};\nexport type PaymentsDownloadCsvTemplateQuery = undefined;\nexport type PaymentsDownloadCsvTemplateBody = undefined;\nexport type PaymentsDownloadCsvTemplateResponseData = Blob;\nexport type PaymentsDownloadCsvTemplateResponse = Blob;\n\nexport type PaymentsListImportProfilesParams = undefined;\nexport type PaymentsListImportProfilesQuery = {\n includeArchived?: boolean;\n};\nexport type PaymentsListImportProfilesBody = undefined;\nexport type PaymentsListImportProfilesResponseData = PaymentImportProfile[];\nexport type PaymentsListImportProfilesResponse = import(\"../types\").ApiEnvelope<PaymentsListImportProfilesResponseData>;\n\nexport type PaymentsCreateImportProfileParams = undefined;\nexport type PaymentsCreateImportProfileQuery = undefined;\nexport type PaymentsCreateImportProfileBody = {\n key: string;\n name: string;\n description?: string;\n delimiterHint?: \",\" | \";\" | \"\\t\";\n headerAliases: Record<string, Array<string>>;\n};\nexport type PaymentsCreateImportProfileResponseData = PaymentImportProfile;\nexport type PaymentsCreateImportProfileResponse = import(\"../types\").ApiEnvelope<PaymentsCreateImportProfileResponseData>;\n\nexport type PaymentsUpdateImportProfileParams = {\n id: number;\n};\nexport type PaymentsUpdateImportProfileQuery = undefined;\nexport type PaymentsUpdateImportProfileBody = {\n key?: string;\n name?: string;\n description?: string;\n delimiterHint?: \",\" | \";\" | \"\\t\";\n headerAliases?: Record<string, Array<string>>;\n isArchived?: boolean;\n};\nexport type PaymentsUpdateImportProfileResponseData = PaymentImportProfile;\nexport type PaymentsUpdateImportProfileResponse = import(\"../types\").ApiEnvelope<PaymentsUpdateImportProfileResponseData>;\n\nexport type PaymentsSearchParams = undefined;\nexport type PaymentsSearchQuery = {\n paymentAccountId?: number;\n direction?: \"in\" | \"out\";\n q?: string;\n startDate?: string;\n endDate?: string;\n allocationStatus?: \"allocated\" | \"partial\" | \"unallocated\";\n page?: number;\n pageSize?: number;\n};\nexport type PaymentsSearchBody = undefined;\nexport type PaymentsSearchResponseData = PaginatedResult<Payment & { allocatedAmount: string; allocationCount: number }>;\nexport type PaymentsSearchResponse = import(\"../types\").ApiEnvelope<PaymentsSearchResponseData>;\n\nexport type PaymentsCreateManualParams = undefined;\nexport type PaymentsCreateManualQuery = undefined;\nexport type PaymentsCreateManualBody = {\n paymentAccountId: number;\n bookedAt: string;\n valueAt?: string;\n amount: string;\n currency?: string;\n counterpartyName?: string;\n counterpartyIban?: string;\n counterpartyBic?: string;\n reference?: string;\n endToEndId?: string;\n bankTransactionId?: string;\n raw?: any;\n allocations?: Array<{\n targetType: \"invoice\" | \"expense\" | \"revenue\";\n targetId: number;\n amount: string;\n}>;\n};\nexport type PaymentsCreateManualResponseData = Payment;\nexport type PaymentsCreateManualResponse = import(\"../types\").ApiEnvelope<PaymentsCreateManualResponseData>;\n\nexport type PaymentsTransferLinkParams = undefined;\nexport type PaymentsTransferLinkQuery = undefined;\nexport type PaymentsTransferLinkBody = {\n paymentIdA: number;\n paymentIdB: number;\n fxRate?: string;\n};\nexport type PaymentsTransferLinkResponseData = { outPayment: Payment; inPayment: Payment; fxRate: string | null };\nexport type PaymentsTransferLinkResponse = import(\"../types\").ApiEnvelope<PaymentsTransferLinkResponseData>;\n\nexport type PaymentsCashbookParams = undefined;\nexport type PaymentsCashbookQuery = {\n paymentAccountId: number;\n startDate?: string;\n endDate?: string;\n};\nexport type PaymentsCashbookBody = undefined;\nexport type PaymentsCashbookResponseData = { account: PaymentAccount & { paypalApiConfigured: boolean; sumupConnected: boolean; sumupMerchantCode: string | null; sumupMerchantLabel: string | null; sumupLastSyncAt: Date | null; sumupSyncEnabled: boolean; sumupReauthRequired: boolean; feeVatTreatment: string | null; feeVatRate: string | null; allowCsvImport: boolean; openingBalanceLocked: boolean; canEditOpeningBalance: boolean; openingBalanceLockReason: string | null; canCreateBalanceSnapshot: boolean; balanceCorrectionMode: 'opening_balance' | 'snapshot_only' }; openingBalance: string; closingBalance: string; movements: PaginatedResult<Payment> };\nexport type PaymentsCashbookResponse = import(\"../types\").ApiEnvelope<PaymentsCashbookResponseData>;\n\nexport type PaymentsMatchSuggestionsParams = {\n paymentId: number;\n};\nexport type PaymentsMatchSuggestionsQuery = {\n limit?: number;\n includePaid?: boolean;\n includeDraft?: boolean;\n};\nexport type PaymentsMatchSuggestionsBody = undefined;\nexport type PaymentsMatchSuggestionsResponseData = {\n payment: any;\n remainingAmount: string;\n suggestions: Array<any>;\n allocations: Array<any>;\n providerPayoutSuggestion: {\n payoutId: string;\n providerAccountId: number;\n providerAccountName: string;\n existingPayoutPaymentId: number | null;\n transactionCount: number;\n totalGross: string;\n totalNet: string;\n totalFees: string;\n bankDepositAmount: string;\n difference: string;\n confidence: \"high\" | \"medium\" | \"low\";\n} | null;\n};\nexport type PaymentsMatchSuggestionsResponse = import(\"../types\").ApiEnvelope<PaymentsMatchSuggestionsResponseData>;\n\nexport type PaymentsBookingPaymentSuggestionsParams = {\n targetType: \"expense\" | \"revenue\";\n targetId: number;\n};\nexport type PaymentsBookingPaymentSuggestionsQuery = {\n limit?: number;\n paymentAccountId?: number;\n};\nexport type PaymentsBookingPaymentSuggestionsBody = undefined;\nexport type PaymentsBookingPaymentSuggestionsResponseData = {\n targetType: \"expense\" | \"revenue\";\n targetId: number;\n targetAmount: string;\n targetCurrency: string;\n openAmount: string;\n suggestions: Array<any>;\n};\nexport type PaymentsBookingPaymentSuggestionsResponse = import(\"../types\").ApiEnvelope<PaymentsBookingPaymentSuggestionsResponseData>;\n\nexport type PaymentsAllocateParams = {\n paymentId: number;\n};\nexport type PaymentsAllocateQuery = undefined;\nexport type PaymentsAllocateBody = {\n allocations: Array<{\n targetType: \"invoice\" | \"expense\" | \"revenue\";\n targetId: number;\n amount: string;\n kind?: \"payment\" | \"refund\";\n}>;\n};\nexport type PaymentsAllocateResponseData = PaymentAllocation[];\nexport type PaymentsAllocateResponse = import(\"../types\").ApiEnvelope<PaymentsAllocateResponseData>;\n\nexport type PaymentsUnallocateParams = {\n paymentId: number;\n allocationId: number;\n};\nexport type PaymentsUnallocateQuery = undefined;\nexport type PaymentsUnallocateBody = undefined;\nexport type PaymentsUnallocateResponseData = {\n message: string;\n};\nexport type PaymentsUnallocateResponse = import(\"../types\").ApiEnvelope<PaymentsUnallocateResponseData>;\n\nexport type PaymentsUpdateParams = {\n paymentId: number;\n};\nexport type PaymentsUpdateQuery = undefined;\nexport type PaymentsUpdateBody = {\n bookedAt?: string;\n valueAt?: string | null;\n amount?: string;\n currency?: string;\n counterpartyName?: string;\n counterpartyIban?: string;\n counterpartyBic?: string;\n reference?: string;\n endToEndId?: string;\n bankTransactionId?: string;\n raw?: any;\n};\nexport type PaymentsUpdateResponseData = Payment;\nexport type PaymentsUpdateResponse = import(\"../types\").ApiEnvelope<PaymentsUpdateResponseData>;\n\nexport type PaymentsReversalPreviewParams = {\n paymentId: number;\n};\nexport type PaymentsReversalPreviewQuery = undefined;\nexport type PaymentsReversalPreviewBody = undefined;\nexport type PaymentsReversalPreviewResponseData = {\n payment: any;\n allocations: Array<any>;\n warnings: Array<string>;\n canReverse: boolean;\n blockers: Array<string>;\n};\nexport type PaymentsReversalPreviewResponse = import(\"../types\").ApiEnvelope<PaymentsReversalPreviewResponseData>;\n\nexport type PaymentsReverseParams = {\n paymentId: number;\n};\nexport type PaymentsReverseQuery = undefined;\nexport type PaymentsReverseBody = {\n reason: string;\n};\nexport type PaymentsReverseResponseData = {\n reversalPayment: any;\n reversedAllocations: Array<any>;\n updatedInvoices: Array<any>;\n};\nexport type PaymentsReverseResponse = import(\"../types\").ApiEnvelope<PaymentsReverseResponseData>;\n\nexport type PaymentsTransferUnlinkParams = {\n paymentId: number;\n};\nexport type PaymentsTransferUnlinkQuery = undefined;\nexport type PaymentsTransferUnlinkBody = {\n reason: string;\n};\nexport type PaymentsTransferUnlinkResponseData = { paymentA: Payment; paymentB: Payment };\nexport type PaymentsTransferUnlinkResponse = import(\"../types\").ApiEnvelope<PaymentsTransferUnlinkResponseData>;\n\nexport type PaymentsTransferLinkableParams = {\n paymentId: number;\n};\nexport type PaymentsTransferLinkableQuery = {\n paymentAccountId: number;\n direction?: \"in\" | \"out\";\n startDate?: string;\n endDate?: string;\n amountMin?: string;\n amountMax?: string;\n q?: string;\n page?: number;\n pageSize?: number;\n};\nexport type PaymentsTransferLinkableBody = undefined;\nexport type PaymentsTransferLinkableResponseData = PaginatedResult<Payment>;\nexport type PaymentsTransferLinkableResponse = import(\"../types\").ApiEnvelope<PaymentsTransferLinkableResponseData>;\n\nexport type PaymentsAllocationReversalPreviewParams = {\n paymentId: number;\n allocationId: number;\n};\nexport type PaymentsAllocationReversalPreviewQuery = undefined;\nexport type PaymentsAllocationReversalPreviewBody = undefined;\nexport type PaymentsAllocationReversalPreviewResponseData = {\n allocation: any;\n invoice: any | null;\n newInvoiceStatus: string | null;\n remainingAllocationAfterReversal: string;\n impact: string;\n canReverse: boolean;\n blockers: Array<string>;\n};\nexport type PaymentsAllocationReversalPreviewResponse = import(\"../types\").ApiEnvelope<PaymentsAllocationReversalPreviewResponseData>;\n\nexport type PaymentsAllocationReverseParams = {\n paymentId: number;\n allocationId: number;\n};\nexport type PaymentsAllocationReverseQuery = undefined;\nexport type PaymentsAllocationReverseBody = undefined;\nexport type PaymentsAllocationReverseResponseData = {\n reversalAllocation: any;\n updatedInvoice: any | null;\n};\nexport type PaymentsAllocationReverseResponse = import(\"../types\").ApiEnvelope<PaymentsAllocationReverseResponseData>;\n\nexport type PaymentsDeleteParams = {\n paymentId: number;\n};\nexport type PaymentsDeleteQuery = undefined;\nexport type PaymentsDeleteBody = undefined;\nexport type PaymentsDeleteResponseData = {\n message: string;\n};\nexport type PaymentsDeleteResponse = import(\"../types\").ApiEnvelope<PaymentsDeleteResponseData>;\n\nexport type PaymentsBookParams = {\n paymentId: number;\n};\nexport type PaymentsBookQuery = undefined;\nexport type PaymentsBookBody = {\n category: string;\n description: string;\n notes?: string | null;\n amount?: string;\n netAmount?: string;\n taxAmount?: string | null;\n taxRate?: string | number | null;\n inputVatEligibility?: \"NONE\" | \"FULL\" | \"PARTIAL\";\n inputVatAmount?: string | null;\n inputVatRate?: string | null;\n isDeductible?: boolean;\n isConfirmed?: boolean;\n vendor?: string | null;\n vendorInvoiceNumber?: string | null;\n};\nexport type PaymentsBookResponseData = {\n targetType: \"expense\" | \"revenue\";\n targetId: number;\n allocationId: number;\n paymentId: number;\n};\nexport type PaymentsBookResponse = import(\"../types\").ApiEnvelope<PaymentsBookResponseData>;\n\nexport type PaymentsRecordFeeParams = {\n paymentId: number;\n};\nexport type PaymentsRecordFeeQuery = undefined;\nexport type PaymentsRecordFeeBody = {\n amount: string;\n description?: string;\n};\nexport type PaymentsRecordFeeResponseData = PaymentAllocation;\nexport type PaymentsRecordFeeResponse = import(\"../types\").ApiEnvelope<PaymentsRecordFeeResponseData>;\n\nexport type PaymentsWriteoffParams = {\n paymentId: number;\n};\nexport type PaymentsWriteoffQuery = undefined;\nexport type PaymentsWriteoffBody = {\n targetType: \"invoice\" | \"expense\" | \"revenue\";\n targetId: number;\n amount: string;\n reason: string;\n};\nexport type PaymentsWriteoffResponseData = PaymentAllocation;\nexport type PaymentsWriteoffResponse = import(\"../types\").ApiEnvelope<PaymentsWriteoffResponseData>;\n\nexport type PaymentsApplyDiscountParams = {\n paymentId: number;\n};\nexport type PaymentsApplyDiscountQuery = undefined;\nexport type PaymentsApplyDiscountBody = {\n targetType: \"invoice\" | \"expense\" | \"revenue\";\n targetId: number;\n amount: string;\n reason?: string;\n};\nexport type PaymentsApplyDiscountResponseData = PaymentAllocation;\nexport type PaymentsApplyDiscountResponse = import(\"../types\").ApiEnvelope<PaymentsApplyDiscountResponseData>;\n\nexport type PaymentsGetAccountByIdParams = {\n accountId: number;\n};\nexport type PaymentsGetAccountByIdQuery = undefined;\nexport type PaymentsGetAccountByIdBody = undefined;\nexport type PaymentsGetAccountByIdResponseData = PaymentAccount & { paypalApiConfigured: boolean; sumupConnected: boolean; sumupMerchantCode: string | null; sumupMerchantLabel: string | null; sumupLastSyncAt: Date | null; sumupSyncEnabled: boolean; sumupReauthRequired: boolean; feeVatTreatment: string | null; feeVatRate: string | null; allowCsvImport: boolean; openingBalanceLocked: boolean; canEditOpeningBalance: boolean; openingBalanceLockReason: string | null; canCreateBalanceSnapshot: boolean; balanceCorrectionMode: 'opening_balance' | 'snapshot_only' };\nexport type PaymentsGetAccountByIdResponse = import(\"../types\").ApiEnvelope<PaymentsGetAccountByIdResponseData>;\n\nexport type PaymentsListAccountsParams = undefined;\nexport type PaymentsListAccountsQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n};\nexport type PaymentsListAccountsBody = undefined;\nexport type PaymentsListAccountsResponseData = PaginatedResult<PaymentAccount & { paypalApiConfigured: boolean; sumupConnected: boolean; sumupMerchantCode: string | null; sumupMerchantLabel: string | null; sumupLastSyncAt: Date | null; sumupSyncEnabled: boolean; sumupReauthRequired: boolean; feeVatTreatment: string | null; feeVatRate: string | null; allowCsvImport: boolean; openingBalanceLocked: boolean; canEditOpeningBalance: boolean; openingBalanceLockReason: string | null; canCreateBalanceSnapshot: boolean; balanceCorrectionMode: 'opening_balance' | 'snapshot_only' }>;\nexport type PaymentsListAccountsResponse = import(\"../types\").ApiEnvelope<PaymentsListAccountsResponseData>;\n\nexport type PaymentsCreateAccountParams = undefined;\nexport type PaymentsCreateAccountQuery = undefined;\nexport type PaymentsCreateAccountBody = {\n type: \"bank\" | \"cash\" | \"paypal\" | \"sumup\";\n name: string;\n currency?: string;\n costCenterId?: number | null;\n iban?: string | null;\n bic?: string | null;\n bankName?: string | null;\n accountOwner?: string | null;\n paypalEmail?: string | null;\n paypalHandle?: string | null;\n paypalClientId?: string | null;\n paypalClientSecret?: string | null;\n paypalEnvironment?: \"live\" | \"sandbox\";\n paypalSyncEnabled?: boolean;\n sumupSyncEnabled?: boolean;\n isDefault?: boolean;\n openingBalance?: string | null;\n openingBalanceDate?: string | string | {\n year: number;\n month: number;\n day: number;\n} | null;\n};\nexport type PaymentsCreateAccountResponseData = PaymentAccount & { paypalApiConfigured: boolean; sumupConnected: boolean; sumupMerchantCode: string | null; sumupMerchantLabel: string | null; sumupLastSyncAt: Date | null; sumupSyncEnabled: boolean; sumupReauthRequired: boolean; feeVatTreatment: string | null; feeVatRate: string | null; allowCsvImport: boolean; openingBalanceLocked: boolean; canEditOpeningBalance: boolean; openingBalanceLockReason: string | null; canCreateBalanceSnapshot: boolean; balanceCorrectionMode: 'opening_balance' | 'snapshot_only' };\nexport type PaymentsCreateAccountResponse = import(\"../types\").ApiEnvelope<PaymentsCreateAccountResponseData>;\n\nexport type PaymentsUpdateAccountParams = {\n accountId: number;\n};\nexport type PaymentsUpdateAccountQuery = undefined;\nexport type PaymentsUpdateAccountBody = {\n type?: \"bank\" | \"cash\" | \"paypal\" | \"sumup\";\n name?: string;\n currency?: string;\n costCenterId?: number | null;\n iban?: string | null;\n bic?: string | null;\n bankName?: string | null;\n accountOwner?: string | null;\n paypalEmail?: string | null;\n paypalHandle?: string | null;\n paypalClientId?: string | null;\n paypalClientSecret?: string | null;\n paypalEnvironment?: \"live\" | \"sandbox\";\n paypalSyncEnabled?: boolean;\n sumupSyncEnabled?: boolean;\n isDefault?: boolean;\n openingBalance?: string | null;\n openingBalanceDate?: string | string | {\n year: number;\n month: number;\n day: number;\n} | null;\n isArchived?: boolean;\n allowCsvImport?: boolean;\n};\nexport type PaymentsUpdateAccountResponseData = PaymentAccount & { paypalApiConfigured: boolean; sumupConnected: boolean; sumupMerchantCode: string | null; sumupMerchantLabel: string | null; sumupLastSyncAt: Date | null; sumupSyncEnabled: boolean; sumupReauthRequired: boolean; feeVatTreatment: string | null; feeVatRate: string | null; allowCsvImport: boolean; openingBalanceLocked: boolean; canEditOpeningBalance: boolean; openingBalanceLockReason: string | null; canCreateBalanceSnapshot: boolean; balanceCorrectionMode: 'opening_balance' | 'snapshot_only' };\nexport type PaymentsUpdateAccountResponse = import(\"../types\").ApiEnvelope<PaymentsUpdateAccountResponseData>;\n\nexport type PaymentsArchiveAccountParams = {\n accountId: number;\n};\nexport type PaymentsArchiveAccountQuery = undefined;\nexport type PaymentsArchiveAccountBody = undefined;\nexport type PaymentsArchiveAccountResponseData = {\n archived: boolean;\n message: string;\n};\nexport type PaymentsArchiveAccountResponse = import(\"../types\").ApiEnvelope<PaymentsArchiveAccountResponseData>;\n\nexport type PaymentsDeleteAccountParams = {\n accountId: number;\n};\nexport type PaymentsDeleteAccountQuery = undefined;\nexport type PaymentsDeleteAccountBody = undefined;\nexport type PaymentsDeleteAccountResponseData = {\n deleted: boolean;\n message: string;\n};\nexport type PaymentsDeleteAccountResponse = import(\"../types\").ApiEnvelope<PaymentsDeleteAccountResponseData>;\n\nexport type PaymentsPaypalSyncParams = {\n accountId: number;\n};\nexport type PaymentsPaypalSyncQuery = {\n fromDate?: string;\n toDate?: string;\n};\nexport type PaymentsPaypalSyncBody = undefined;\nexport type PaymentsPaypalSyncResponseData = { inserted: number; skipped: number; syncedFrom: string; syncedUntil: string; accountId: number };\nexport type PaymentsPaypalSyncResponse = import(\"../types\").ApiEnvelope<PaymentsPaypalSyncResponseData>;\n\nexport type PaymentsSumupOauthStartParams = {\n accountId: number;\n};\nexport type PaymentsSumupOauthStartQuery = undefined;\nexport type PaymentsSumupOauthStartBody = {\n autoCreateBankAccount?: boolean;\n};\nexport type PaymentsSumupOauthStartResponseData = { authorizeUrl: string; state: string; expiresAt: string | Date };\nexport type PaymentsSumupOauthStartResponse = import(\"../types\").ApiEnvelope<PaymentsSumupOauthStartResponseData>;\n\nexport type PaymentsSumupSyncParams = {\n accountId: number;\n};\nexport type PaymentsSumupSyncQuery = {\n fromDate?: string;\n toDate?: string;\n};\nexport type PaymentsSumupSyncBody = undefined;\nexport type PaymentsSumupSyncResponseData = { inserted: number; skipped: number; payoutsInserted: number; payoutsSkipped: number; syncedFrom: string; syncedUntil: string; accountId: number };\nexport type PaymentsSumupSyncResponse = import(\"../types\").ApiEnvelope<PaymentsSumupSyncResponseData>;\n\nexport type PaymentsSumupOauthDisconnectParams = {\n accountId: number;\n};\nexport type PaymentsSumupOauthDisconnectQuery = undefined;\nexport type PaymentsSumupOauthDisconnectBody = undefined;\nexport type PaymentsSumupOauthDisconnectResponseData = { disconnected: boolean };\nexport type PaymentsSumupOauthDisconnectResponse = import(\"../types\").ApiEnvelope<PaymentsSumupOauthDisconnectResponseData>;\n\nexport type PaymentsPaypalWebhookRegisterParams = {\n accountId: number;\n};\nexport type PaymentsPaypalWebhookRegisterQuery = undefined;\nexport type PaymentsPaypalWebhookRegisterBody = {\n callbackUrl: string;\n};\nexport type PaymentsPaypalWebhookRegisterResponseData = { webhookId: string; callbackUrl: string };\nexport type PaymentsPaypalWebhookRegisterResponse = import(\"../types\").ApiEnvelope<PaymentsPaypalWebhookRegisterResponseData>;\n\nexport type PaymentsPaypalWebhookDeregisterParams = {\n accountId: number;\n};\nexport type PaymentsPaypalWebhookDeregisterQuery = undefined;\nexport type PaymentsPaypalWebhookDeregisterBody = undefined;\nexport type PaymentsPaypalWebhookDeregisterResponseData = { removed: boolean };\nexport type PaymentsPaypalWebhookDeregisterResponse = import(\"../types\").ApiEnvelope<PaymentsPaypalWebhookDeregisterResponseData>;\n\nexport type PaymentsListBalanceSnapshotsParams = undefined;\nexport type PaymentsListBalanceSnapshotsQuery = {\n paymentAccountId: number;\n includeVoided?: boolean;\n page?: number;\n pageSize?: number;\n};\nexport type PaymentsListBalanceSnapshotsBody = undefined;\nexport type PaymentsListBalanceSnapshotsResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type PaymentsListBalanceSnapshotsResponse = import(\"../types\").ApiEnvelope<PaymentsListBalanceSnapshotsResponseData>;\n\nexport type PaymentsCreateBalanceSnapshotParams = undefined;\nexport type PaymentsCreateBalanceSnapshotQuery = undefined;\nexport type PaymentsCreateBalanceSnapshotBody = {\n paymentAccountId: number;\n asOfAt: string;\n balanceType?: \"bank_statement\" | \"manual_count\" | \"api_reported\";\n balance: string;\n currency?: string;\n source?: \"manual\" | \"csv_import\" | \"paypal_api\" | \"sumup_api\";\n externalRef?: string | null;\n note?: string | null;\n raw?: any;\n};\nexport type PaymentsCreateBalanceSnapshotResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type PaymentsCreateBalanceSnapshotResponse = import(\"../types\").ApiEnvelope<PaymentsCreateBalanceSnapshotResponseData>;\n\nexport type PaymentsVoidBalanceSnapshotParams = {\n snapshotId: number;\n};\nexport type PaymentsVoidBalanceSnapshotQuery = undefined;\nexport type PaymentsVoidBalanceSnapshotBody = {\n reason: string;\n};\nexport type PaymentsVoidBalanceSnapshotResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type PaymentsVoidBalanceSnapshotResponse = import(\"../types\").ApiEnvelope<PaymentsVoidBalanceSnapshotResponseData>;\n\nexport type PaymentsUpdateFeeVatTreatmentParams = {\n accountId: number;\n};\nexport type PaymentsUpdateFeeVatTreatmentQuery = undefined;\nexport type PaymentsUpdateFeeVatTreatmentBody = {\n feeVatTreatment: \"UNKNOWN\" | \"EXEMPT\" | \"INCLUSIVE_STANDARD\" | \"REVERSE_CHARGE_13B\";\n feeVatRate?: string;\n};\nexport type PaymentsUpdateFeeVatTreatmentResponseData = PaymentProviderConnection;\nexport type PaymentsUpdateFeeVatTreatmentResponse = import(\"../types\").ApiEnvelope<PaymentsUpdateFeeVatTreatmentResponseData>;\n\nexport type PaymentsListFeeProposalsParams = undefined;\nexport type PaymentsListFeeProposalsQuery = {\n accountId?: number;\n status?: \"PROPOSED\" | \"CONFIRMED\" | \"REJECTED\";\n page?: number;\n pageSize?: number;\n};\nexport type PaymentsListFeeProposalsBody = undefined;\nexport type PaymentsListFeeProposalsResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type PaymentsListFeeProposalsResponse = import(\"../types\").ApiEnvelope<PaymentsListFeeProposalsResponseData>;\n\nexport type PaymentsConfirmFeeProposalsParams = undefined;\nexport type PaymentsConfirmFeeProposalsQuery = undefined;\nexport type PaymentsConfirmFeeProposalsBody = {\n expenseIds: Array<number>;\n};\nexport type PaymentsConfirmFeeProposalsResponseData = {\n confirmed: number;\n};\nexport type PaymentsConfirmFeeProposalsResponse = import(\"../types\").ApiEnvelope<PaymentsConfirmFeeProposalsResponseData>;\n\nexport type PaymentsRejectFeeProposalsParams = undefined;\nexport type PaymentsRejectFeeProposalsQuery = undefined;\nexport type PaymentsRejectFeeProposalsBody = {\n expenseIds: Array<number>;\n};\nexport type PaymentsRejectFeeProposalsResponseData = {\n rejected: number;\n};\nexport type PaymentsRejectFeeProposalsResponse = import(\"../types\").ApiEnvelope<PaymentsRejectFeeProposalsResponseData>;\n\nexport type PaymentsPaypalWebhookReceiveParams = undefined;\nexport type PaymentsPaypalWebhookReceiveQuery = import(\"../types\").ContractNotReady<\"Query not typed yet. Add DTO + validate({ query }) to the route (or explicitly declare none).\">;\nexport type PaymentsPaypalWebhookReceiveBody = import(\"../types\").ContractNotReady<\"Body not typed yet. Add DTO + validate({ body }) or contract({ request: ... }) to the route.\">;\nexport type PaymentsPaypalWebhookReceiveResponseData = { status: string };\nexport type PaymentsPaypalWebhookReceiveResponse = import(\"../types\").ApiEnvelope<PaymentsPaypalWebhookReceiveResponseData>;\n\nexport type PaymentsSumupOauthCallbackParams = undefined;\nexport type PaymentsSumupOauthCallbackQuery = {\n state: string;\n code?: string;\n error?: string;\n error_description?: string;\n};\nexport type PaymentsSumupOauthCallbackBody = undefined;\nexport type PaymentsSumupOauthCallbackResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type PaymentsSumupOauthCallbackResponse = import(\"../types\").ApiEnvelope<PaymentsSumupOauthCallbackResponseData>;\n\nexport type BookkeepingPaymentsListAccountsExternalParams = undefined;\nexport type BookkeepingPaymentsListAccountsExternalQuery = {\n search?: string;\n includeArchived?: boolean;\n};\nexport type BookkeepingPaymentsListAccountsExternalBody = undefined;\nexport type BookkeepingPaymentsListAccountsExternalResponseData = PaymentAccount[];\nexport type BookkeepingPaymentsListAccountsExternalResponse = import(\"../types\").ApiEnvelope<BookkeepingPaymentsListAccountsExternalResponseData>;\n\nexport type BookkeepingPaymentsCreateManualExternalParams = undefined;\nexport type BookkeepingPaymentsCreateManualExternalQuery = undefined;\nexport type BookkeepingPaymentsCreateManualExternalBody = {\n paymentAccountId: number;\n bookedAt: string;\n valueAt?: string;\n amount: string;\n currency?: string;\n counterpartyName?: string;\n counterpartyIban?: string;\n counterpartyBic?: string;\n reference?: string;\n endToEndId?: string;\n bankTransactionId?: string;\n externalRef?: string;\n raw?: any;\n};\nexport type BookkeepingPaymentsCreateManualExternalResponseData = Payment;\nexport type BookkeepingPaymentsCreateManualExternalResponse = import(\"../types\").ApiEnvelope<BookkeepingPaymentsCreateManualExternalResponseData>;\n\nexport type BookkeepingPaymentsSettleInvoiceExternalParams = undefined;\nexport type BookkeepingPaymentsSettleInvoiceExternalQuery = undefined;\nexport type BookkeepingPaymentsSettleInvoiceExternalBody = {\n invoiceId: number;\n paymentAccountId: number;\n bookedAt: string;\n valueAt?: string;\n payoutAmount: string | number;\n currency?: string;\n counterpartyName?: string;\n counterpartyIban?: string;\n counterpartyBic?: string;\n reference?: string;\n endToEndId?: string;\n bankTransactionId?: string;\n externalRef?: string;\n closeGapStrategy?: \"none\" | \"discount\";\n closeGapReason?: string;\n markInvoicePaid?: boolean;\n raw?: any;\n};\nexport type BookkeepingPaymentsSettleInvoiceExternalResponseData = { createdPayment: boolean; idempotent: boolean; payment: Payment; allocations: PaymentAllocation[]; invoice: Invoice; closed: boolean; shortfallAmount: string; gapClosed: boolean };\nexport type BookkeepingPaymentsSettleInvoiceExternalResponse = import(\"../types\").ApiEnvelope<BookkeepingPaymentsSettleInvoiceExternalResponseData>;\n\nexport type BookkeepingAuditLogsParams = undefined;\nexport type BookkeepingAuditLogsQuery = {\n page?: number;\n pageSize?: number;\n action?: string;\n entityType?: string;\n entityId?: number;\n startDate?: string;\n endDate?: string;\n};\nexport type BookkeepingAuditLogsBody = undefined;\nexport type BookkeepingAuditLogsResponseData = PaginatedResult<BookkeepingAuditLog>;\nexport type BookkeepingAuditLogsResponse = import(\"../types\").ApiEnvelope<BookkeepingAuditLogsResponseData>;\n\nexport type BookkeepingLocksGetStateParams = undefined;\nexport type BookkeepingLocksGetStateQuery = undefined;\nexport type BookkeepingLocksGetStateBody = undefined;\nexport type BookkeepingLocksGetStateResponseData = BookkeepingLockState;\nexport type BookkeepingLocksGetStateResponse = import(\"../types\").ApiEnvelope<BookkeepingLocksGetStateResponseData>;\n\nexport type BookkeepingLocksRecommendationParams = undefined;\nexport type BookkeepingLocksRecommendationQuery = {\n asOf?: string;\n};\nexport type BookkeepingLocksRecommendationBody = undefined;\nexport type BookkeepingLocksRecommendationResponseData = {\n asOf: string;\n companyPreference: string;\n vatRegime: string | null;\n ustvaRecommendation: any;\n thresholds: {\n ustvaMonthlyVatDueThreshold: number;\n ustvaAnnualVatDueExemptThreshold: number;\n ustvaNewCompanyMonthlyYears: number;\n};\n suggested: {\n period: \"monthly\" | \"quarterly\" | \"annual\" | \"none\";\n lockedUntil: string | null;\n reason: string;\n periodStart: string | null;\n periodEnd: string | null;\n};\n readiness: {\n period: {\n start: string;\n end: string;\n};\n status: \"ready\" | \"attention\";\n issues: Array<{\n key: \"unallocated_payments\" | \"draft_invoices\" | \"unconfirmed_expenses\" | \"unconfirmed_revenues\";\n severity: \"warning\" | \"info\";\n count: number;\n message: string;\n}>;\n paymentsInPeriodCount: number;\n unallocatedPaymentsCount: number;\n draftInvoicesCount: number;\n unconfirmedExpensesCount: number | null;\n unconfirmedRevenuesCount: number | null;\n unmatchedConfirmedCount: number | null;\n notes: Array<string>;\n} | null;\n};\nexport type BookkeepingLocksRecommendationResponse = import(\"../types\").ApiEnvelope<BookkeepingLocksRecommendationResponseData>;\n\nexport type BookkeepingLocksOverviewParams = undefined;\nexport type BookkeepingLocksOverviewQuery = {\n asOf?: string;\n};\nexport type BookkeepingLocksOverviewBody = undefined;\nexport type BookkeepingLocksOverviewResponseData = {\n asOf: string;\n current: {\n state: \"unlocked\" | \"locked_payments_only\" | \"locked_strict\";\n tone: \"neutral\" | \"warning\" | \"danger\";\n isLocked: boolean;\n configuredLockMode: \"payments_only\" | \"strict\";\n effectiveLockMode: \"payments_only\" | \"strict\" | null;\n lockModeLabel: string;\n lockedUntil: string | null;\n nextOpenDate: string | null;\n reason: string | null;\n lockedAt: string | null;\n lockedBy: number | null;\n updatedAt: string;\n updatedBy: number | null;\n boundaryRule: {\n kind: \"inclusive_date_cutoff\";\n expression: \"date <= lockedUntil\";\n explanation: string;\n};\n};\n states: Array<{\n key: \"unlocked\" | \"locked_payments_only\" | \"locked_strict\";\n label: string;\n tone: \"neutral\" | \"warning\" | \"danger\";\n explanation: string;\n}>;\n modes: Array<{\n key: \"payments_only\" | \"strict\";\n label: string;\n description: string;\n}>;\n areas: Array<{\n key: \"payments\" | \"payment_import\" | \"payment_allocations\" | \"invoices\" | \"expenses\" | \"revenues\" | \"assets\";\n label: string;\n blockedWhen: Array<\"payments_only\" | \"strict\">;\n blockedNow: boolean;\n explanation: string;\n}>;\n constraints: {\n reducingOrClearingRequiresReason: boolean;\n};\n};\nexport type BookkeepingLocksOverviewResponse = import(\"../types\").ApiEnvelope<BookkeepingLocksOverviewResponseData>;\n\nexport type BookkeepingLocksSetParams = undefined;\nexport type BookkeepingLocksSetQuery = undefined;\nexport type BookkeepingLocksSetBody = {\n lockedUntil: string | null;\n reason?: string;\n lockMode?: \"payments_only\" | \"strict\";\n};\nexport type BookkeepingLocksSetResponseData = BookkeepingLockState;\nexport type BookkeepingLocksSetResponse = import(\"../types\").ApiEnvelope<BookkeepingLocksSetResponseData>;\n\nexport type BookkeepingTaxParamsHealthParams = undefined;\nexport type BookkeepingTaxParamsHealthQuery = import(\"../types\").ContractNotReady<\"Query not typed yet. Add DTO + validate({ query }) to the route (or explicitly declare none).\">;\nexport type BookkeepingTaxParamsHealthBody = undefined;\nexport type BookkeepingTaxParamsHealthResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingTaxParamsHealthResponse = import(\"../types\").ApiEnvelope<BookkeepingTaxParamsHealthResponseData>;\n\nexport type BookkeepingTaxParamsSyncParams = undefined;\nexport type BookkeepingTaxParamsSyncQuery = import(\"../types\").ContractNotReady<\"Query not typed yet. Add DTO + validate({ query }) to the route (or explicitly declare none).\">;\nexport type BookkeepingTaxParamsSyncBody = import(\"../types\").ContractNotReady<\"Body not typed yet. Add DTO + validate({ body }) or contract({ request: ... }) to the route.\">;\nexport type BookkeepingTaxParamsSyncResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingTaxParamsSyncResponse = import(\"../types\").ApiEnvelope<BookkeepingTaxParamsSyncResponseData>;\n\nexport type BookkeepingTaxParamsListParams = undefined;\nexport type BookkeepingTaxParamsListQuery = {\n category?: \"afa\" | \"vat\" | \"threshold\" | \"building\";\n paramKey?: string;\n effectiveDate?: string;\n};\nexport type BookkeepingTaxParamsListBody = undefined;\nexport type BookkeepingTaxParamsListResponseData = Array<any>;\nexport type BookkeepingTaxParamsListResponse = import(\"../types\").ApiEnvelope<BookkeepingTaxParamsListResponseData>;\n\nexport type BookkeepingTaxParamsHistoryParams = {\n key: string;\n};\nexport type BookkeepingTaxParamsHistoryQuery = undefined;\nexport type BookkeepingTaxParamsHistoryBody = undefined;\nexport type BookkeepingTaxParamsHistoryResponseData = Array<any>;\nexport type BookkeepingTaxParamsHistoryResponse = import(\"../types\").ApiEnvelope<BookkeepingTaxParamsHistoryResponseData>;\n\nexport type BookkeepingTaxParamsCreateParams = undefined;\nexport type BookkeepingTaxParamsCreateQuery = undefined;\nexport type BookkeepingTaxParamsCreateBody = {\n paramKey: string;\n category: \"afa\" | \"vat\" | \"threshold\" | \"building\";\n value: Record<string, any>;\n validFrom: string;\n validTo?: string | null;\n legalRef?: string;\n description?: string;\n changeReason: string;\n};\nexport type BookkeepingTaxParamsCreateResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingTaxParamsCreateResponse = import(\"../types\").ApiEnvelope<BookkeepingTaxParamsCreateResponseData>;\n\nexport type BookkeepingTaxParamsUpdateParams = {\n id: number;\n};\nexport type BookkeepingTaxParamsUpdateQuery = undefined;\nexport type BookkeepingTaxParamsUpdateBody = {\n value?: Record<string, any>;\n validTo?: string | null;\n legalRef?: string;\n description?: string;\n changeReason: string;\n};\nexport type BookkeepingTaxParamsUpdateResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type BookkeepingTaxParamsUpdateResponse = import(\"../types\").ApiEnvelope<BookkeepingTaxParamsUpdateResponseData>;\n\nexport type BookkeepingIncomeTaxGetSettingsParams = undefined;\nexport type BookkeepingIncomeTaxGetSettingsQuery = import(\"../types\").ContractNotReady<\"Query not typed yet. Add DTO + validate({ query }) to the route (or explicitly declare none).\">;\nexport type BookkeepingIncomeTaxGetSettingsBody = undefined;\nexport type BookkeepingIncomeTaxGetSettingsResponseData = IncomeTaxSettings;\nexport type BookkeepingIncomeTaxGetSettingsResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxGetSettingsResponseData>;\n\nexport type BookkeepingIncomeTaxUpsertSettingsParams = undefined;\nexport type BookkeepingIncomeTaxUpsertSettingsQuery = undefined;\nexport type BookkeepingIncomeTaxUpsertSettingsBody = {\n bundesland?: \"BW\" | \"BY\" | \"BE\" | \"BB\" | \"HB\" | \"HH\" | \"HE\" | \"MV\" | \"NI\" | \"NW\" | \"RP\" | \"SL\" | \"SN\" | \"ST\" | \"SH\" | \"TH\";\n kirchensteuerpflichtig: boolean;\n kirchensteuerRate?: string | number;\n gewerbesteuerHebesatz?: string | number;\n isGewerbetreibend?: boolean;\n anzahlKinder?: number;\n hatSchwerbehinderung?: boolean;\n gradDerBehinderung?: number;\n quartalsVorauszahlungESt?: string | number;\n quartalsVorauszahlungSoli?: string | number;\n quartalsVorauszahlungKiSt?: string | number;\n};\nexport type BookkeepingIncomeTaxUpsertSettingsResponseData = IncomeTaxSettings;\nexport type BookkeepingIncomeTaxUpsertSettingsResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxUpsertSettingsResponseData>;\n\nexport type BookkeepingIncomeTaxListEmploymentParams = undefined;\nexport type BookkeepingIncomeTaxListEmploymentQuery = {\n taxYear: number;\n};\nexport type BookkeepingIncomeTaxListEmploymentBody = undefined;\nexport type BookkeepingIncomeTaxListEmploymentResponseData = EmploymentIncome[];\nexport type BookkeepingIncomeTaxListEmploymentResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxListEmploymentResponseData>;\n\nexport type BookkeepingIncomeTaxGetEmploymentParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxGetEmploymentQuery = undefined;\nexport type BookkeepingIncomeTaxGetEmploymentBody = undefined;\nexport type BookkeepingIncomeTaxGetEmploymentResponseData = EmploymentIncome;\nexport type BookkeepingIncomeTaxGetEmploymentResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxGetEmploymentResponseData>;\n\nexport type BookkeepingIncomeTaxCreateEmploymentParams = undefined;\nexport type BookkeepingIncomeTaxCreateEmploymentQuery = undefined;\nexport type BookkeepingIncomeTaxCreateEmploymentBody = {\n taxYear: number;\n employerName: string;\n employerSteuernummer?: string;\n employmentPeriodFrom?: string;\n employmentPeriodTo?: string;\n bruttoarbeitslohn: string | number;\n lohnsteuer?: string | number;\n solidaritaetszuschlag?: string | number;\n kirchensteuer?: string | number;\n versorgungsbezuege?: string | number;\n lohnersatzleistungen?: string | number;\n steuerfreiFahrtkosten?: string | number;\n pauschalBesteuertFahrtkosten?: string | number;\n agAnteilRV?: string | number;\n anAnteilRV?: string | number;\n agZuschussKV?: string | number;\n anBeitraegeKV?: string | number;\n anBeitraegePV?: string | number;\n anBeitraegeAV?: string | number;\n documentId?: number;\n notes?: string;\n};\nexport type BookkeepingIncomeTaxCreateEmploymentResponseData = EmploymentIncome;\nexport type BookkeepingIncomeTaxCreateEmploymentResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxCreateEmploymentResponseData>;\n\nexport type BookkeepingIncomeTaxUpdateEmploymentParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxUpdateEmploymentQuery = undefined;\nexport type BookkeepingIncomeTaxUpdateEmploymentBody = {\n taxYear?: number;\n employerName?: string;\n employerSteuernummer?: string;\n employmentPeriodFrom?: string;\n employmentPeriodTo?: string;\n bruttoarbeitslohn?: string | number;\n lohnsteuer?: string | number;\n solidaritaetszuschlag?: string | number;\n kirchensteuer?: string | number;\n versorgungsbezuege?: string | number;\n lohnersatzleistungen?: string | number;\n steuerfreiFahrtkosten?: string | number;\n pauschalBesteuertFahrtkosten?: string | number;\n agAnteilRV?: string | number;\n anAnteilRV?: string | number;\n agZuschussKV?: string | number;\n anBeitraegeKV?: string | number;\n anBeitraegePV?: string | number;\n anBeitraegeAV?: string | number;\n documentId?: number;\n notes?: string;\n};\nexport type BookkeepingIncomeTaxUpdateEmploymentResponseData = EmploymentIncome;\nexport type BookkeepingIncomeTaxUpdateEmploymentResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxUpdateEmploymentResponseData>;\n\nexport type BookkeepingIncomeTaxDeleteEmploymentParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxDeleteEmploymentQuery = undefined;\nexport type BookkeepingIncomeTaxDeleteEmploymentBody = undefined;\nexport type BookkeepingIncomeTaxDeleteEmploymentResponseData = null;\nexport type BookkeepingIncomeTaxDeleteEmploymentResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxDeleteEmploymentResponseData>;\n\nexport type BookkeepingIncomeTaxListWerbungskostenParams = undefined;\nexport type BookkeepingIncomeTaxListWerbungskostenQuery = {\n taxYear: number;\n};\nexport type BookkeepingIncomeTaxListWerbungskostenBody = undefined;\nexport type BookkeepingIncomeTaxListWerbungskostenResponseData = Werbungskosten[];\nexport type BookkeepingIncomeTaxListWerbungskostenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxListWerbungskostenResponseData>;\n\nexport type BookkeepingIncomeTaxCreateWerbungskostenParams = undefined;\nexport type BookkeepingIncomeTaxCreateWerbungskostenQuery = undefined;\nexport type BookkeepingIncomeTaxCreateWerbungskostenBody = {\n taxYear: number;\n type: \"entfernungspauschale\" | \"homeoffice\" | \"arbeitsmittel\" | \"fortbildung\" | \"bewerbungskosten\" | \"doppelte_haushaltsfuehrung\" | \"reisekosten\" | \"kontogebuehren\" | \"fachliteratur\" | \"berufskleidung\" | \"gewerkschaft\" | \"other\";\n description: string;\n amount: string | number;\n details?: {\n distanceKm?: number;\n workDaysPerYear?: number;\n daysWorkedFromHome?: number;\n};\n documentId?: number;\n};\nexport type BookkeepingIncomeTaxCreateWerbungskostenResponseData = Werbungskosten;\nexport type BookkeepingIncomeTaxCreateWerbungskostenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxCreateWerbungskostenResponseData>;\n\nexport type BookkeepingIncomeTaxUpdateWerbungskostenParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxUpdateWerbungskostenQuery = undefined;\nexport type BookkeepingIncomeTaxUpdateWerbungskostenBody = {\n taxYear?: number;\n type?: \"entfernungspauschale\" | \"homeoffice\" | \"arbeitsmittel\" | \"fortbildung\" | \"bewerbungskosten\" | \"doppelte_haushaltsfuehrung\" | \"reisekosten\" | \"kontogebuehren\" | \"fachliteratur\" | \"berufskleidung\" | \"gewerkschaft\" | \"other\";\n description?: string;\n amount?: string | number;\n details?: {\n distanceKm?: number;\n workDaysPerYear?: number;\n daysWorkedFromHome?: number;\n};\n documentId?: number;\n};\nexport type BookkeepingIncomeTaxUpdateWerbungskostenResponseData = Werbungskosten;\nexport type BookkeepingIncomeTaxUpdateWerbungskostenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxUpdateWerbungskostenResponseData>;\n\nexport type BookkeepingIncomeTaxDeleteWerbungskostenParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxDeleteWerbungskostenQuery = undefined;\nexport type BookkeepingIncomeTaxDeleteWerbungskostenBody = undefined;\nexport type BookkeepingIncomeTaxDeleteWerbungskostenResponseData = null;\nexport type BookkeepingIncomeTaxDeleteWerbungskostenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxDeleteWerbungskostenResponseData>;\n\nexport type BookkeepingIncomeTaxListSonderausgabenParams = undefined;\nexport type BookkeepingIncomeTaxListSonderausgabenQuery = {\n taxYear: number;\n};\nexport type BookkeepingIncomeTaxListSonderausgabenBody = undefined;\nexport type BookkeepingIncomeTaxListSonderausgabenResponseData = Sonderausgaben[];\nexport type BookkeepingIncomeTaxListSonderausgabenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxListSonderausgabenResponseData>;\n\nexport type BookkeepingIncomeTaxCreateSonderausgabenParams = undefined;\nexport type BookkeepingIncomeTaxCreateSonderausgabenQuery = undefined;\nexport type BookkeepingIncomeTaxCreateSonderausgabenBody = {\n taxYear: number;\n type: \"kirchensteuer\" | \"spenden\" | \"parteibeitraege\" | \"berufsausbildung\" | \"other\";\n description: string;\n amount: string | number;\n documentId?: number;\n};\nexport type BookkeepingIncomeTaxCreateSonderausgabenResponseData = Sonderausgaben;\nexport type BookkeepingIncomeTaxCreateSonderausgabenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxCreateSonderausgabenResponseData>;\n\nexport type BookkeepingIncomeTaxUpdateSonderausgabenParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxUpdateSonderausgabenQuery = undefined;\nexport type BookkeepingIncomeTaxUpdateSonderausgabenBody = {\n taxYear?: number;\n type?: \"kirchensteuer\" | \"spenden\" | \"parteibeitraege\" | \"berufsausbildung\" | \"other\";\n description?: string;\n amount?: string | number;\n documentId?: number;\n};\nexport type BookkeepingIncomeTaxUpdateSonderausgabenResponseData = Sonderausgaben;\nexport type BookkeepingIncomeTaxUpdateSonderausgabenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxUpdateSonderausgabenResponseData>;\n\nexport type BookkeepingIncomeTaxDeleteSonderausgabenParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxDeleteSonderausgabenQuery = undefined;\nexport type BookkeepingIncomeTaxDeleteSonderausgabenBody = undefined;\nexport type BookkeepingIncomeTaxDeleteSonderausgabenResponseData = null;\nexport type BookkeepingIncomeTaxDeleteSonderausgabenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxDeleteSonderausgabenResponseData>;\n\nexport type BookkeepingIncomeTaxListVorsorgeParams = undefined;\nexport type BookkeepingIncomeTaxListVorsorgeQuery = {\n taxYear: number;\n};\nexport type BookkeepingIncomeTaxListVorsorgeBody = undefined;\nexport type BookkeepingIncomeTaxListVorsorgeResponseData = Vorsorgeaufwendungen[];\nexport type BookkeepingIncomeTaxListVorsorgeResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxListVorsorgeResponseData>;\n\nexport type BookkeepingIncomeTaxCreateVorsorgeParams = undefined;\nexport type BookkeepingIncomeTaxCreateVorsorgeQuery = undefined;\nexport type BookkeepingIncomeTaxCreateVorsorgeBody = {\n taxYear: number;\n type: \"altersvorsorge\" | \"basis_kv\" | \"pflegeversicherung\" | \"sonstige_vorsorge\";\n description: string;\n amount: string | number;\n isFromEmployment: boolean;\n documentId?: number;\n};\nexport type BookkeepingIncomeTaxCreateVorsorgeResponseData = Vorsorgeaufwendungen;\nexport type BookkeepingIncomeTaxCreateVorsorgeResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxCreateVorsorgeResponseData>;\n\nexport type BookkeepingIncomeTaxUpdateVorsorgeParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxUpdateVorsorgeQuery = undefined;\nexport type BookkeepingIncomeTaxUpdateVorsorgeBody = {\n taxYear?: number;\n type?: \"altersvorsorge\" | \"basis_kv\" | \"pflegeversicherung\" | \"sonstige_vorsorge\";\n description?: string;\n amount?: string | number;\n isFromEmployment?: boolean;\n documentId?: number;\n};\nexport type BookkeepingIncomeTaxUpdateVorsorgeResponseData = Vorsorgeaufwendungen;\nexport type BookkeepingIncomeTaxUpdateVorsorgeResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxUpdateVorsorgeResponseData>;\n\nexport type BookkeepingIncomeTaxDeleteVorsorgeParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxDeleteVorsorgeQuery = undefined;\nexport type BookkeepingIncomeTaxDeleteVorsorgeBody = undefined;\nexport type BookkeepingIncomeTaxDeleteVorsorgeResponseData = null;\nexport type BookkeepingIncomeTaxDeleteVorsorgeResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxDeleteVorsorgeResponseData>;\n\nexport type BookkeepingIncomeTaxListSteuerminderungenParams = undefined;\nexport type BookkeepingIncomeTaxListSteuerminderungenQuery = {\n taxYear: number;\n};\nexport type BookkeepingIncomeTaxListSteuerminderungenBody = undefined;\nexport type BookkeepingIncomeTaxListSteuerminderungenResponseData = Steuerminderungen[];\nexport type BookkeepingIncomeTaxListSteuerminderungenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxListSteuerminderungenResponseData>;\n\nexport type BookkeepingIncomeTaxCreateSteuerminderungenParams = undefined;\nexport type BookkeepingIncomeTaxCreateSteuerminderungenQuery = undefined;\nexport type BookkeepingIncomeTaxCreateSteuerminderungenBody = {\n taxYear: number;\n type: \"haushaltsnahe_beschaeftigung\" | \"haushaltsnahe_dienstleistung\" | \"handwerkerleistung\" | \"behindertenpauschbetrag\" | \"other\";\n description: string;\n amount: string | number;\n documentId?: number;\n};\nexport type BookkeepingIncomeTaxCreateSteuerminderungenResponseData = Steuerminderungen;\nexport type BookkeepingIncomeTaxCreateSteuerminderungenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxCreateSteuerminderungenResponseData>;\n\nexport type BookkeepingIncomeTaxUpdateSteuerminderungenParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxUpdateSteuerminderungenQuery = undefined;\nexport type BookkeepingIncomeTaxUpdateSteuerminderungenBody = {\n taxYear?: number;\n type?: \"haushaltsnahe_beschaeftigung\" | \"haushaltsnahe_dienstleistung\" | \"handwerkerleistung\" | \"behindertenpauschbetrag\" | \"other\";\n description?: string;\n amount?: string | number;\n documentId?: number;\n};\nexport type BookkeepingIncomeTaxUpdateSteuerminderungenResponseData = Steuerminderungen;\nexport type BookkeepingIncomeTaxUpdateSteuerminderungenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxUpdateSteuerminderungenResponseData>;\n\nexport type BookkeepingIncomeTaxDeleteSteuerminderungenParams = {\n id: number;\n};\nexport type BookkeepingIncomeTaxDeleteSteuerminderungenQuery = undefined;\nexport type BookkeepingIncomeTaxDeleteSteuerminderungenBody = undefined;\nexport type BookkeepingIncomeTaxDeleteSteuerminderungenResponseData = null;\nexport type BookkeepingIncomeTaxDeleteSteuerminderungenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxDeleteSteuerminderungenResponseData>;\n\nexport type BookkeepingIncomeTaxGetEstimateParams = undefined;\nexport type BookkeepingIncomeTaxGetEstimateQuery = {\n taxYear: number;\n};\nexport type BookkeepingIncomeTaxGetEstimateBody = undefined;\nexport type BookkeepingIncomeTaxGetEstimateResponseData = EStCalculationResult;\nexport type BookkeepingIncomeTaxGetEstimateResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxGetEstimateResponseData>;\n\nexport type BookkeepingIncomeTaxGetVorauszahlungenParams = undefined;\nexport type BookkeepingIncomeTaxGetVorauszahlungenQuery = {\n taxYear: number;\n};\nexport type BookkeepingIncomeTaxGetVorauszahlungenBody = undefined;\nexport type BookkeepingIncomeTaxGetVorauszahlungenResponseData = VorauszahlungResult;\nexport type BookkeepingIncomeTaxGetVorauszahlungenResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxGetVorauszahlungenResponseData>;\n\nexport type BookkeepingIncomeTaxGetSummaryParams = undefined;\nexport type BookkeepingIncomeTaxGetSummaryQuery = {\n taxYear: number;\n};\nexport type BookkeepingIncomeTaxGetSummaryBody = undefined;\nexport type BookkeepingIncomeTaxGetSummaryResponseData = IncomeTaxSummary;\nexport type BookkeepingIncomeTaxGetSummaryResponse = import(\"../types\").ApiEnvelope<BookkeepingIncomeTaxGetSummaryResponseData>;\n\nexport type ReconciliationDashboardParams = undefined;\nexport type ReconciliationDashboardQuery = {\n startDate?: string;\n endDate?: string;\n paymentAccountId?: number;\n costCenterId?: number;\n estimateActionCounts?: boolean;\n};\nexport type ReconciliationDashboardBody = undefined;\nexport type ReconciliationDashboardResponseData = {\n payments: {\n unmatched: {\n count: number;\n totalAmount: string;\n currency: string;\n};\n partial: {\n count: number;\n totalAmount: string;\n currency: string;\n};\n};\n invoices: {\n unmatched: {\n count: number;\n totalAmount: string;\n currency: string;\n};\n partial: {\n count: number;\n totalAmount: string;\n currency: string;\n};\n};\n expenses: {\n unmatched: {\n count: number;\n totalAmount: string;\n currency: string;\n};\n partial: {\n count: number;\n totalAmount: string;\n currency: string;\n};\n};\n revenues: {\n unmatched: {\n count: number;\n totalAmount: string;\n currency: string;\n};\n partial: {\n count: number;\n totalAmount: string;\n currency: string;\n};\n};\n aging: {\n days0to7: {\n count: number;\n totalAmount: string;\n};\n days7to30: {\n count: number;\n totalAmount: string;\n};\n days30to90: {\n count: number;\n totalAmount: string;\n};\n days90plus: {\n count: number;\n totalAmount: string;\n};\n};\n actionSummary: {\n providerPayoutCount: number;\n autoMatchableCount: number | null;\n} | null;\n};\nexport type ReconciliationDashboardResponse = import(\"../types\").ApiEnvelope<ReconciliationDashboardResponseData>;\n\nexport type ReconciliationQueueParams = undefined;\nexport type ReconciliationQueueQuery = {\n direction?: \"in\" | \"out\";\n paymentAccountId?: number;\n costCenterId?: number;\n startDate?: string;\n endDate?: string;\n page?: number;\n pageSize?: number;\n};\nexport type ReconciliationQueueBody = undefined;\nexport type ReconciliationQueueResponseData = {\n items: Array<{\n payment: {\n id: number;\n amount: string;\n currency: string;\n direction: string;\n bookedAt: string;\n counterpartyName: string | null;\n counterpartyIban: string | null;\n reference: string | null;\n paymentAccountId: number;\n paymentAccountName: string | null;\n paymentAccountType: string | null;\n paymentAccountIban: string | null;\n remainingAmount: string;\n source: string;\n feeAmount: string | null;\n netAmount: string | null;\n originalAmount: string | null;\n originalCurrency: string | null;\n};\n existingAllocations: Array<{\n id: number;\n targetType: \"invoice\" | \"expense\" | \"revenue\";\n targetId: number;\n kind: string;\n allocatedAmount: string;\n targetLabel: string;\n createdAt: string;\n}>;\n suggestions: Array<{\n targetType: \"invoice\" | \"expense\" | \"revenue\";\n targetId: number;\n score: number;\n confidence: \"high\" | \"medium\" | \"low\";\n isAllocatable: boolean;\n blockedReason?: string;\n reasons: Array<string>;\n suggestedAllocateAmount: string;\n targetCurrency: string;\n totalAmount: string;\n openAmount: string;\n label: string;\n invoiceNumber?: string;\n customerName?: string | null;\n invoiceDate?: string;\n dueDate?: string;\n status?: string;\n vendor?: string | null;\n vendorInvoiceNumber?: string | null;\n description?: string | null;\n expenseDate?: string;\n revenueDate?: string;\n isConfirmed?: boolean;\n}>;\n bestMatch: {\n targetType: \"invoice\" | \"expense\" | \"revenue\";\n targetId: number;\n score: number;\n confidence: \"high\" | \"medium\" | \"low\";\n isAllocatable: boolean;\n blockedReason?: string;\n reasons: Array<string>;\n suggestedAllocateAmount: string;\n targetCurrency: string;\n totalAmount: string;\n openAmount: string;\n label: string;\n invoiceNumber?: string;\n customerName?: string | null;\n invoiceDate?: string;\n dueDate?: string;\n status?: string;\n vendor?: string | null;\n vendorInvoiceNumber?: string | null;\n description?: string | null;\n expenseDate?: string;\n revenueDate?: string;\n isConfirmed?: boolean;\n} | null;\n transferSuggestion: {\n counterpartPaymentId: number;\n counterpartAmount: string;\n counterpartAccountId: number;\n counterpartAccountName: string | null;\n counterpartAccountType: string | null;\n counterpartDate: string;\n counterpartName: string | null;\n confidence: \"high\" | \"medium\" | \"low\";\n} | null;\n providerPayoutSuggestion: {\n payoutId: string;\n providerAccountId: number;\n providerAccountName: string;\n existingPayoutPaymentId: number | null;\n transactionCount: number;\n totalGross: string;\n totalNet: string;\n totalFees: string;\n bankDepositAmount: string;\n difference: string;\n confidence: \"high\" | \"medium\" | \"low\";\n} | null;\n counterpartyContext: {\n knownCustomerNames: Array<string> | null;\n knownVendorNames: Array<string> | null;\n recurringPattern: {\n frequency: \"weekly\" | \"monthly\" | \"quarterly\";\n} | null;\n lastMatchedCategory: string | null;\n} | null;\n matchCount: number;\n priority: \"high\" | \"medium\" | \"low\";\n}>;\n summary: {\n totalWithSuggestions: number;\n totalWithTransfers: number;\n totalWithProviderPayouts: number;\n totalHighConfidence: number;\n};\n page: number;\n pageSize: number;\n total: number;\n totalPages: number;\n};\nexport type ReconciliationQueueResponse = import(\"../types\").ApiEnvelope<ReconciliationQueueResponseData>;\n\nexport type ReconciliationBatchSuggestionsParams = undefined;\nexport type ReconciliationBatchSuggestionsQuery = undefined;\nexport type ReconciliationBatchSuggestionsBody = {\n items: Array<{\n paymentId: number;\n}>;\n limit?: number;\n};\nexport type ReconciliationBatchSuggestionsResponseData = {\n results: Array<{\n paymentId: number;\n remainingAmount: string;\n suggestions: Array<any>;\n}>;\n};\nexport type ReconciliationBatchSuggestionsResponse = import(\"../types\").ApiEnvelope<ReconciliationBatchSuggestionsResponseData>;\n\nexport type ReconciliationAutoMatchPreviewParams = undefined;\nexport type ReconciliationAutoMatchPreviewQuery = {\n direction?: \"in\" | \"out\";\n paymentAccountId?: number;\n minScore?: number;\n};\nexport type ReconciliationAutoMatchPreviewBody = undefined;\nexport type ReconciliationAutoMatchPreviewResponseData = {\n candidates: Array<{\n paymentId: number;\n targetType: \"invoice\" | \"expense\" | \"revenue\";\n targetId: number;\n score: number;\n confidence: \"high\" | \"medium\" | \"low\";\n reasons: Array<string>;\n isAllocatable: boolean;\n allocateAmount: string;\n paymentLabel: string;\n targetLabel: string;\n}>;\n totalCount: number;\n};\nexport type ReconciliationAutoMatchPreviewResponse = import(\"../types\").ApiEnvelope<ReconciliationAutoMatchPreviewResponseData>;\n\nexport type ReconciliationAutoMatchConfirmParams = undefined;\nexport type ReconciliationAutoMatchConfirmQuery = undefined;\nexport type ReconciliationAutoMatchConfirmBody = {\n candidates: Array<{\n paymentId: number;\n targetType: \"invoice\" | \"expense\" | \"revenue\";\n targetId: number;\n amount: string;\n}>;\n};\nexport type ReconciliationAutoMatchConfirmResponseData = {\n results: Array<{\n paymentId: number;\n success: boolean;\n error?: string;\n}>;\n totalSuccess: number;\n totalFailed: number;\n};\nexport type ReconciliationAutoMatchConfirmResponse = import(\"../types\").ApiEnvelope<ReconciliationAutoMatchConfirmResponseData>;\n\nexport type ReconciliationConfirmProviderPayoutParams = undefined;\nexport type ReconciliationConfirmProviderPayoutQuery = undefined;\nexport type ReconciliationConfirmProviderPayoutBody = {\n bankPaymentId: number;\n providerAccountId: number;\n payoutId: string;\n};\nexport type ReconciliationConfirmProviderPayoutResponseData = {\n payoutPaymentId: number;\n bankPaymentId: number;\n linked: boolean;\n aggregateCreated: boolean;\n revenueId: number | null;\n};\nexport type ReconciliationConfirmProviderPayoutResponse = import(\"../types\").ApiEnvelope<ReconciliationConfirmProviderPayoutResponseData>;\n\nexport type ReconciliationGroupsParams = undefined;\nexport type ReconciliationGroupsQuery = {\n direction?: \"in\" | \"out\";\n paymentAccountId?: number;\n startDate?: string;\n endDate?: string;\n page?: number;\n pageSize?: number;\n};\nexport type ReconciliationGroupsBody = undefined;\nexport type ReconciliationGroupsResponseData = {\n groups: Array<{\n groupType: \"split_payment\" | \"overpayment\";\n confidence: \"high\" | \"medium\" | \"low\";\n target: {\n type: string;\n id: number;\n label: string;\n totalAmount: string;\n openAmount: string;\n currency: string;\n};\n payments: Array<{\n id: number;\n amount: string;\n remainingAmount: string;\n currency: string;\n bookedAt: string;\n counterpartyName: string | null;\n reference: string | null;\n}>;\n sumOfPayments: string;\n difference: string;\n}>;\n page: number;\n total: number;\n};\nexport type ReconciliationGroupsResponse = import(\"../types\").ApiEnvelope<ReconciliationGroupsResponseData>;\n\nexport type BookkeepingCapitalMovementsSearchParams = undefined;\nexport type BookkeepingCapitalMovementsSearchQuery = {\n q?: string;\n type?: \"withdrawal\" | \"deposit\";\n subType?: \"cash_withdrawal\" | \"private_purchase\" | \"private_asset_use\" | \"est_payment\" | \"soli_payment\" | \"kist_payment\" | \"gewst_payment\" | \"other_withdrawal\" | \"cash_deposit\" | \"private_expense_paid\" | \"private_asset_transfer\" | \"est_refund\" | \"soli_refund\" | \"kist_refund\" | \"gewst_refund\" | \"other_deposit\";\n taxYear?: number;\n startDate?: string;\n endDate?: string;\n isConfirmed?: boolean;\n paymentStatus?: \"unmatched\" | \"cash_confirmed\" | \"partially_matched\" | \"fully_matched\";\n page?: number;\n pageSize?: number;\n sortBy?: \"createdAt\" | \"movementDate\" | \"amount\";\n sortDir?: \"asc\" | \"desc\";\n};\nexport type BookkeepingCapitalMovementsSearchBody = undefined;\nexport type BookkeepingCapitalMovementsSearchResponseData = PaginatedResult<CapitalMovement>;\nexport type BookkeepingCapitalMovementsSearchResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsSearchResponseData>;\n\nexport type BookkeepingCapitalMovementsKapitalkontoParams = undefined;\nexport type BookkeepingCapitalMovementsKapitalkontoQuery = {\n taxYear: number;\n};\nexport type BookkeepingCapitalMovementsKapitalkontoBody = undefined;\nexport type BookkeepingCapitalMovementsKapitalkontoResponseData = {\n entnahmenGesamt: number;\n entnahmenGeld: number;\n einlagenGesamt: number;\n einlagenGeld: number;\n};\nexport type BookkeepingCapitalMovementsKapitalkontoResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsKapitalkontoResponseData>;\n\nexport type BookkeepingCapitalMovementsGetByIdParams = {\n id: number;\n};\nexport type BookkeepingCapitalMovementsGetByIdQuery = undefined;\nexport type BookkeepingCapitalMovementsGetByIdBody = undefined;\nexport type BookkeepingCapitalMovementsGetByIdResponseData = CapitalMovement;\nexport type BookkeepingCapitalMovementsGetByIdResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsGetByIdResponseData>;\n\nexport type BookkeepingCapitalMovementsCreateParams = undefined;\nexport type BookkeepingCapitalMovementsCreateQuery = undefined;\nexport type BookkeepingCapitalMovementsCreateBody = {\n type: \"withdrawal\" | \"deposit\";\n subType: \"cash_withdrawal\" | \"private_purchase\" | \"private_asset_use\" | \"est_payment\" | \"soli_payment\" | \"kist_payment\" | \"gewst_payment\" | \"other_withdrawal\" | \"cash_deposit\" | \"private_expense_paid\" | \"private_asset_transfer\" | \"est_refund\" | \"soli_refund\" | \"kist_refund\" | \"gewst_refund\" | \"other_deposit\";\n amount: string | number;\n currency?: string;\n description: string;\n movementDate: string;\n notes?: string | null;\n taxPaymentMetadata?: {\n finanzamtName?: string;\n steuernummer?: string;\n vorauszahlungQuarter?: \"Q1\" | \"Q2\" | \"Q3\" | \"Q4\";\n vorauszahlungYear?: number;\n bescheidDate?: string;\n bescheidYear?: number;\n} | null;\n isConfirmed?: boolean;\n};\nexport type BookkeepingCapitalMovementsCreateResponseData = CapitalMovement;\nexport type BookkeepingCapitalMovementsCreateResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsCreateResponseData>;\n\nexport type BookkeepingCapitalMovementsUpdateParams = {\n id: number;\n};\nexport type BookkeepingCapitalMovementsUpdateQuery = undefined;\nexport type BookkeepingCapitalMovementsUpdateBody = {\n type?: \"withdrawal\" | \"deposit\";\n subType?: \"cash_withdrawal\" | \"private_purchase\" | \"private_asset_use\" | \"est_payment\" | \"soli_payment\" | \"kist_payment\" | \"gewst_payment\" | \"other_withdrawal\" | \"cash_deposit\" | \"private_expense_paid\" | \"private_asset_transfer\" | \"est_refund\" | \"soli_refund\" | \"kist_refund\" | \"gewst_refund\" | \"other_deposit\";\n amount?: string | number;\n currency?: string;\n description?: string;\n movementDate?: string;\n notes?: string | null;\n taxPaymentMetadata?: {\n finanzamtName?: string;\n steuernummer?: string;\n vorauszahlungQuarter?: \"Q1\" | \"Q2\" | \"Q3\" | \"Q4\";\n vorauszahlungYear?: number;\n bescheidDate?: string;\n bescheidYear?: number;\n} | null;\n isConfirmed?: boolean;\n};\nexport type BookkeepingCapitalMovementsUpdateResponseData = CapitalMovement;\nexport type BookkeepingCapitalMovementsUpdateResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsUpdateResponseData>;\n\nexport type BookkeepingCapitalMovementsConfirmParams = {\n id: number;\n};\nexport type BookkeepingCapitalMovementsConfirmQuery = undefined;\nexport type BookkeepingCapitalMovementsConfirmBody = undefined;\nexport type BookkeepingCapitalMovementsConfirmResponseData = CapitalMovement;\nexport type BookkeepingCapitalMovementsConfirmResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsConfirmResponseData>;\n\nexport type BookkeepingCapitalMovementsCashConfirmParams = {\n id: number;\n};\nexport type BookkeepingCapitalMovementsCashConfirmQuery = undefined;\nexport type BookkeepingCapitalMovementsCashConfirmBody = {\n confirmedAt?: string;\n};\nexport type BookkeepingCapitalMovementsCashConfirmResponseData = CapitalMovement;\nexport type BookkeepingCapitalMovementsCashConfirmResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsCashConfirmResponseData>;\n\nexport type BookkeepingCapitalMovementsRevokeCashConfirmParams = {\n id: number;\n};\nexport type BookkeepingCapitalMovementsRevokeCashConfirmQuery = undefined;\nexport type BookkeepingCapitalMovementsRevokeCashConfirmBody = {\n reason: string;\n};\nexport type BookkeepingCapitalMovementsRevokeCashConfirmResponseData = CapitalMovement;\nexport type BookkeepingCapitalMovementsRevokeCashConfirmResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsRevokeCashConfirmResponseData>;\n\nexport type BookkeepingCapitalMovementsReverseParams = {\n id: number;\n};\nexport type BookkeepingCapitalMovementsReverseQuery = undefined;\nexport type BookkeepingCapitalMovementsReverseBody = {\n reason: string;\n};\nexport type BookkeepingCapitalMovementsReverseResponseData = CapitalMovement;\nexport type BookkeepingCapitalMovementsReverseResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsReverseResponseData>;\n\nexport type BookkeepingCapitalMovementsDeleteParams = {\n id: number;\n};\nexport type BookkeepingCapitalMovementsDeleteQuery = undefined;\nexport type BookkeepingCapitalMovementsDeleteBody = undefined;\nexport type BookkeepingCapitalMovementsDeleteResponseData = null;\nexport type BookkeepingCapitalMovementsDeleteResponse = import(\"../types\").ApiEnvelope<BookkeepingCapitalMovementsDeleteResponseData>;\n\nexport type BookkeepingIapPayoutsImportParams = undefined;\nexport type BookkeepingIapPayoutsImportQuery = undefined;\nexport type BookkeepingIapPayoutsImportBody = {\n platform: \"apple\" | \"google\";\n periodStart: string;\n periodEnd: string;\n source?: \"revenuecat_api\" | \"revenuecat_csv\" | \"apple_financial_report\" | \"google_earnings_report\";\n period?: {\n currency: string;\n netRevenue: string | number;\n grossSales?: string | number | null;\n providerFees?: string | number | null;\n refunds?: string | number | null;\n taxesWithheld?: string | number | null;\n raw?: any;\n};\n reportFileId?: number | null;\n};\nexport type BookkeepingIapPayoutsImportResponseData = { created: boolean; import: IapPayoutImport; revenueId: number | null; skipped?: { reason: string; detail: string } };\nexport type BookkeepingIapPayoutsImportResponse = import(\"../types\").ApiEnvelope<BookkeepingIapPayoutsImportResponseData>;\n\nexport type BookkeepingIapPayoutsListParams = undefined;\nexport type BookkeepingIapPayoutsListQuery = {\n year?: number;\n platform?: \"apple\" | \"google\";\n};\nexport type BookkeepingIapPayoutsListBody = undefined;\nexport type BookkeepingIapPayoutsListResponseData = { items: IapPayoutImport[] };\nexport type BookkeepingIapPayoutsListResponse = import(\"../types\").ApiEnvelope<BookkeepingIapPayoutsListResponseData>;\n\nexport const apiRoutes_bookkeeping = {\n // Contract source: explicit\n \"bookkeeping_revenues_search\": {\n method: \"GET\",\n path: \"/bookkeeping/revenues\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Einnahmen suchen\",\n description: \"Paginierte Suche über alle Einnahmen mit Filteroptionen (Zeitraum, Status, Suchbegriff). Optional kann nach `invoiceId` oder `assetId` gefiltert werden, um z.B. Veräußerungserlöse einer Anlage direkt zu finden.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesSearchParams;\n query: BookkeepingRevenuesSearchQuery;\n body: BookkeepingRevenuesSearchBody;\n response: BookkeepingRevenuesSearchResponse;\n responseData: BookkeepingRevenuesSearchResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_get_by_id\": {\n method: \"GET\",\n path: \"/bookkeeping/revenues/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Einnahme nach ID laden\",\n description: \"Lädt eine einzelne Einnahme anhand ihrer ID mit allen Details (Betrag, Datum, Status, zugehörige Rechnung oder verknüpfte Anlage) plus aufgelöste Zahlungszuordnungen (`paymentAllocations`) mit Zahlungs- und Kontodetails.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesGetByIdParams;\n query: BookkeepingRevenuesGetByIdQuery;\n body: BookkeepingRevenuesGetByIdBody;\n response: BookkeepingRevenuesGetByIdResponse;\n responseData: BookkeepingRevenuesGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_analyze_receipt\": {\n method: \"POST\",\n path: \"/bookkeeping/revenues/analyze-receipt\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Beleg per OCR analysieren (Einnahme)\",\n description: \"Sendet ein Belegbild (Foto/Scan) an die OCR-Erkennung und gibt die extrahierten Daten zurück (Betrag, Datum, MwSt.). Nutze die Ergebnisse um eine Einnahme vorzubefüllen.\",\n bodyContentType: \"multipart/form-data\",\n },\n types: null as unknown as {\n params: BookkeepingRevenuesAnalyzeReceiptParams;\n query: BookkeepingRevenuesAnalyzeReceiptQuery;\n body: BookkeepingRevenuesAnalyzeReceiptBody;\n response: BookkeepingRevenuesAnalyzeReceiptResponse;\n responseData: BookkeepingRevenuesAnalyzeReceiptResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_create\": {\n method: \"POST\",\n path: \"/bookkeeping/revenues\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Neue Einnahme anlegen\",\n description: \"Erstellt einen neuen Einnahme-Entwurf, optional mit Beleganhang (multipart). Optional kann über `assetId` ein Anlagen-Abgangserlös explizit mit einer Anlage verknüpft werden. Der Entwurf muss separat über /confirm bestätigt werden, um buchhaltungstechnisch wirksam zu werden.\",\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesCreateParams;\n query: BookkeepingRevenuesCreateQuery;\n body: BookkeepingRevenuesCreateBody;\n response: BookkeepingRevenuesCreateResponse;\n responseData: BookkeepingRevenuesCreateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_update\": {\n method: \"PUT\",\n path: \"/bookkeeping/revenues/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Einnahme aktualisieren\",\n description: \"Aktualisiert eine bestehende Einnahme. Bestätigte Einnahmen können nicht mehr geändert werden, wenn die Periode gesperrt ist.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesUpdateParams;\n query: BookkeepingRevenuesUpdateQuery;\n body: BookkeepingRevenuesUpdateBody;\n response: BookkeepingRevenuesUpdateResponse;\n responseData: BookkeepingRevenuesUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_upload_receipt\": {\n method: \"POST\",\n path: \"/bookkeeping/revenues/:id/upload-receipt\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Beleg zu Einnahme hochladen\",\n description: \"Lädt einen Beleg zu einer bestehenden Einnahme hoch. Ersetzt einen eventuell vorhandenen Beleg. Nur für unbestätigte Einnahmen (Entwürfe).\",\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesUploadReceiptParams;\n query: BookkeepingRevenuesUploadReceiptQuery;\n body: BookkeepingRevenuesUploadReceiptBody;\n response: BookkeepingRevenuesUploadReceiptResponse;\n responseData: BookkeepingRevenuesUploadReceiptResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_bulk_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/revenues/bulk-confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Mehrere Einnahmen bestätigen\",\n description: \"Bestätigt mehrere Einnahme-Entwürfe auf einmal (Datenpflege-Bestätigung). Gibt für jede ID das Ergebnis zurück — Fehler bei einzelnen Einträgen stoppen nicht den Rest.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesBulkConfirmParams;\n query: BookkeepingRevenuesBulkConfirmQuery;\n body: BookkeepingRevenuesBulkConfirmBody;\n response: BookkeepingRevenuesBulkConfirmResponse;\n responseData: BookkeepingRevenuesBulkConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/revenues/:id/confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Einnahme bestätigen\",\n description: \"Bestätigt einen Einnahme-Entwurf (Datenpflege-Bestätigung). Um die Einnahme in der EÜR zu erfassen, muss zusätzlich ein Zahlungsnachweis vorliegen (via Payment-Zuordnung oder /confirm-cash).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesConfirmParams;\n query: BookkeepingRevenuesConfirmQuery;\n body: BookkeepingRevenuesConfirmBody;\n response: BookkeepingRevenuesConfirmResponse;\n responseData: BookkeepingRevenuesConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_confirm_cash\": {\n method: \"POST\",\n path: \"/bookkeeping/revenues/:id/confirm-cash\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Einnahme als Barzahlung bestätigen\",\n description: \"Markiert eine Einnahme als Bareinnahme. receivedAt (JJJJ-MM-TT, nicht in der Zukunft) ist der Zuflusstag, an dem die Einnahme in der EÜR steht (§ 11 EStG); bei einer bezahlten Rechnung ohne zugeordnete Zahlungen folgt deren paidAt. Ohne receivedAt gilt das Einnahmedatum, bei Rechnungseinnahmen also das Rechnungsdatum. Kann nicht auf bereits durch Payment zugeordnete Einnahmen angewendet werden.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesConfirmCashParams;\n query: BookkeepingRevenuesConfirmCashQuery;\n body: BookkeepingRevenuesConfirmCashBody;\n response: BookkeepingRevenuesConfirmCashResponse;\n responseData: BookkeepingRevenuesConfirmCashResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_revoke_cash_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/revenues/:id/revoke-cash-confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Barzahlungs-Bestätigung widerrufen\",\n description: \"Widerruft die Barzahlungs-Bestätigung einer Einnahme. Setzt den paymentStatus zurück auf 'unmatched' und entfernt das EÜR-Wirksamkeitsdatum. Nur möglich wenn paymentStatus = 'cash_confirmed'. Grund ist GoBD-Pflicht.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesRevokeCashConfirmParams;\n query: BookkeepingRevenuesRevokeCashConfirmQuery;\n body: BookkeepingRevenuesRevokeCashConfirmBody;\n response: BookkeepingRevenuesRevokeCashConfirmResponse;\n responseData: BookkeepingRevenuesRevokeCashConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_delete\": {\n method: \"DELETE\",\n path: \"/bookkeeping/revenues/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"revenues\"],\n summary: \"Einnahme löschen\",\n description: \"Löscht eine Einnahme. Bestätigte Einnahmen in gesperrten Perioden können nicht gelöscht werden.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesDeleteParams;\n query: BookkeepingRevenuesDeleteQuery;\n body: BookkeepingRevenuesDeleteBody;\n response: BookkeepingRevenuesDeleteResponse;\n responseData: BookkeepingRevenuesDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_create_external\": {\n method: \"POST\",\n path: \"/bookkeeping/revenues/external\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"revenues:write\"]},\n meta: {\n tags: [\"bookkeeping\",\"revenues-external\"],\n summary: \"Create revenue via external API\",\n description: \"Creates a revenue entry through OAuth2/API key for automation scenarios. Tenant and permission scope are derived from the token. Keep usage intentional (no full external CRUD exposed).\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesCreateExternalParams;\n query: BookkeepingRevenuesCreateExternalQuery;\n body: BookkeepingRevenuesCreateExternalBody;\n response: BookkeepingRevenuesCreateExternalResponse;\n responseData: BookkeepingRevenuesCreateExternalResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_revenues_invoice_adjustment_external\": {\n method: \"POST\",\n path: \"/bookkeeping/revenues/external/invoice-adjustment\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"revenues:write\"]},\n meta: {\n tags: [\"bookkeeping\",\"revenues-external\"],\n summary: \"Create invoice payout adjustment via external API\",\n description: \"Creates an invoice-linked revenue adjustment for payout gaps (e.g., payment provider deductions). Idempotent by externalRef to handle webhook retries safely.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingRevenuesInvoiceAdjustmentExternalParams;\n query: BookkeepingRevenuesInvoiceAdjustmentExternalQuery;\n body: BookkeepingRevenuesInvoiceAdjustmentExternalBody;\n response: BookkeepingRevenuesInvoiceAdjustmentExternalResponse;\n responseData: BookkeepingRevenuesInvoiceAdjustmentExternalResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_search\": {\n method: \"GET\",\n path: \"/bookkeeping/expenses\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Ausgaben suchen\",\n description: \"Paginierte Suche über alle Ausgaben mit Filteroptionen (Zeitraum, Status, Kategorie, Suchbegriff). Gibt eine paginierte Liste von BookkeepingExpense-Objekten zurück.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingExpensesSearchParams;\n query: BookkeepingExpensesSearchQuery;\n body: BookkeepingExpensesSearchBody;\n response: BookkeepingExpensesSearchResponse;\n responseData: BookkeepingExpensesSearchResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_get_by_id\": {\n method: \"GET\",\n path: \"/bookkeeping/expenses/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Ausgabe nach ID laden\",\n description: \"Lädt eine einzelne Ausgabe anhand ihrer ID mit allen Details (Betrag, Datum, Kategorie, Status, Beleg-Anhang) plus `assetInfo`, damit das Frontend sofort erkennen kann, ob die Ausgabe bereits als Anlage erfasst wurde und ob sie fachlich als Sofortaufwand oder über AfA läuft.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingExpensesGetByIdParams;\n query: BookkeepingExpensesGetByIdQuery;\n body: BookkeepingExpensesGetByIdBody;\n response: BookkeepingExpensesGetByIdResponse;\n responseData: BookkeepingExpensesGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_analyze_receipt\": {\n method: \"POST\",\n path: \"/bookkeeping/expenses/analyze-receipt\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Beleg per OCR analysieren\",\n description: \"Sendet ein Belegbild (Foto/Scan) an die OCR-Erkennung und gibt die extrahierten Daten zurück (Betrag, Datum, Lieferant, MwSt.). Nutze die Ergebnisse um eine Ausgabe vorzubefüllen.\",\n bodyContentType: \"multipart/form-data\",\n },\n types: null as unknown as {\n params: BookkeepingExpensesAnalyzeReceiptParams;\n query: BookkeepingExpensesAnalyzeReceiptQuery;\n body: BookkeepingExpensesAnalyzeReceiptBody;\n response: BookkeepingExpensesAnalyzeReceiptResponse;\n responseData: BookkeepingExpensesAnalyzeReceiptResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_create\": {\n method: \"POST\",\n path: \"/bookkeeping/expenses\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Neue Ausgabe anlegen\",\n description: \"Erstellt einen neuen Ausgabe-Entwurf, optional mit Beleganhang (multipart). Mit `createAsAsset=true` kann die Ausgabe in derselben Operation direkt zusätzlich als Anlage angelegt werden. In diesem Fall liefert die Response weiterhin die Ausgabe zurück, aber `assetInfo` ist sofort gesetzt und enthält die verknüpfte `linkedAssetId`.\",\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingExpensesCreateParams;\n query: BookkeepingExpensesCreateQuery;\n body: BookkeepingExpensesCreateBody;\n response: BookkeepingExpensesCreateResponse;\n responseData: BookkeepingExpensesCreateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_update\": {\n method: \"PUT\",\n path: \"/bookkeeping/expenses/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Ausgabe aktualisieren\",\n description: \"Aktualisiert eine bestehende Ausgabe, optional mit neuem Beleganhang. Bestätigte Ausgaben in gesperrten Perioden können nicht mehr geändert werden.\",\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingExpensesUpdateParams;\n query: BookkeepingExpensesUpdateQuery;\n body: BookkeepingExpensesUpdateBody;\n response: BookkeepingExpensesUpdateResponse;\n responseData: BookkeepingExpensesUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_upload_receipt\": {\n method: \"POST\",\n path: \"/bookkeeping/expenses/:id/upload-receipt\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Beleg zu Ausgabe hochladen\",\n description: \"Lädt einen Beleg zu einer bestehenden Ausgabe hoch. Ersetzt einen eventuell vorhandenen Beleg. Nur für unbestätigte Ausgaben (Entwürfe).\",\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingExpensesUploadReceiptParams;\n query: BookkeepingExpensesUploadReceiptQuery;\n body: BookkeepingExpensesUploadReceiptBody;\n response: BookkeepingExpensesUploadReceiptResponse;\n responseData: BookkeepingExpensesUploadReceiptResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_bulk_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/expenses/bulk-confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Mehrere Ausgaben bestätigen\",\n description: \"Bestätigt mehrere Ausgabe-Entwürfe auf einmal (Datenpflege-Bestätigung). Gibt für jede ID das Ergebnis zurück — Fehler bei einzelnen Einträgen stoppen nicht den Rest.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingExpensesBulkConfirmParams;\n query: BookkeepingExpensesBulkConfirmQuery;\n body: BookkeepingExpensesBulkConfirmBody;\n response: BookkeepingExpensesBulkConfirmResponse;\n responseData: BookkeepingExpensesBulkConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/expenses/:id/confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Ausgabe bestätigen\",\n description: \"Bestätigt einen Ausgabe-Entwurf (Datenpflege-Bestätigung). Um die Ausgabe in der EÜR zu erfassen, muss zusätzlich ein Zahlungsnachweis vorliegen (via Payment-Zuordnung oder /confirm-cash).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingExpensesConfirmParams;\n query: BookkeepingExpensesConfirmQuery;\n body: BookkeepingExpensesConfirmBody;\n response: BookkeepingExpensesConfirmResponse;\n responseData: BookkeepingExpensesConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_confirm_cash\": {\n method: \"POST\",\n path: \"/bookkeeping/expenses/:id/confirm-cash\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Ausgabe als Barzahlung bestätigen\",\n description: \"Markiert eine Ausgabe als Barausgabe mit einem expliziten Zahlungsdatum (confirmedAt). Die Ausgabe wird mit diesem Datum in die EÜR aufgenommen (Abfluss-Prinzip § 4 Abs. 3 EStG). Kann nicht auf bereits durch Payment zugeordnete Ausgaben angewendet werden.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingExpensesConfirmCashParams;\n query: BookkeepingExpensesConfirmCashQuery;\n body: BookkeepingExpensesConfirmCashBody;\n response: BookkeepingExpensesConfirmCashResponse;\n responseData: BookkeepingExpensesConfirmCashResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_revoke_cash_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/expenses/:id/revoke-cash-confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Barzahlungs-Bestätigung widerrufen\",\n description: \"Widerruft die Barzahlungs-Bestätigung einer Ausgabe. Setzt den paymentStatus zurück auf 'unmatched' und entfernt das EÜR-Wirksamkeitsdatum. Nur möglich wenn paymentStatus = 'cash_confirmed'. Grund ist GoBD-Pflicht.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingExpensesRevokeCashConfirmParams;\n query: BookkeepingExpensesRevokeCashConfirmQuery;\n body: BookkeepingExpensesRevokeCashConfirmBody;\n response: BookkeepingExpensesRevokeCashConfirmResponse;\n responseData: BookkeepingExpensesRevokeCashConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_mark_as_asset\": {\n method: \"POST\",\n path: \"/bookkeeping/expenses/:id/mark-as-asset\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Ausgabe als Anlage erfassen\",\n description: \"Erstellt aus einer bestehenden Ausgabe einen verknüpften Anlagen-Datensatz. Standardwerte werden aus der Ausgabe übernommen (Datum, Netto-Betrag, Lieferant, Beleg), können aber überschrieben werden. Der Endpoint ist für den produktiven Buchhaltungs-Workflow gedacht: strikte Periodensperren werden respektiert, doppelte Asset-Erzeugung für dieselbe Ausgabe wird verhindert und das Frontend erhält sowohl die erzeugte Anlage als auch den aktualisierten `assetInfo`-Status der Ausgabe.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingExpensesMarkAsAssetParams;\n query: BookkeepingExpensesMarkAsAssetQuery;\n body: BookkeepingExpensesMarkAsAssetBody;\n response: BookkeepingExpensesMarkAsAssetResponse;\n responseData: BookkeepingExpensesMarkAsAssetResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_delete\": {\n method: \"DELETE\",\n path: \"/bookkeeping/expenses/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"expenses\"],\n summary: \"Ausgabe löschen\",\n description: \"Löscht eine Ausgabe. Bestätigte Ausgaben in gesperrten Perioden können nicht gelöscht werden.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingExpensesDeleteParams;\n query: BookkeepingExpensesDeleteQuery;\n body: BookkeepingExpensesDeleteBody;\n response: BookkeepingExpensesDeleteResponse;\n responseData: BookkeepingExpensesDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_expenses_create_external\": {\n method: \"POST\",\n path: \"/bookkeeping/expenses/external\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"expenses:write\"]},\n meta: {\n tags: [\"bookkeeping\",\"expenses-external\"],\n summary: \"Ausgabe von externer App anlegen\",\n description: \"Erstellt eine Ausgabe über eine externe Anwendung mittels OAuth2 oder API-Key (kein User-Session). Gedacht für automatisierte Integrationen (z.B. Rechnungseingänge aus drittseitiger Software). Scope: expenses:write. Ein Beleg kann als multipart-Datei oder als base64 im JSON-Body mitgeschickt werden. Der `Idempotency-Key`-Header ist Pflicht und verhindert Doppelbuchungen bei Wiederholungen.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingExpensesCreateExternalParams;\n query: BookkeepingExpensesCreateExternalQuery;\n body: BookkeepingExpensesCreateExternalBody;\n response: BookkeepingExpensesCreateExternalResponse;\n responseData: BookkeepingExpensesCreateExternalResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_list_sammelposten_pools\": {\n method: \"GET\",\n path: \"/bookkeeping/assets/sammelposten-pools\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Sammelposten-Pools auflisten\",\n description: \"Listet alle Sammelposten-Pools (§6 Abs. 2a EStG) eines Unternehmens auf, sortiert nach Wirtschaftsjahr.\",\n },\n types: null as unknown as {\n params: BookkeepingAssetsListSammelpostenPoolsParams;\n query: BookkeepingAssetsListSammelpostenPoolsQuery;\n body: BookkeepingAssetsListSammelpostenPoolsBody;\n response: BookkeepingAssetsListSammelpostenPoolsResponse;\n responseData: BookkeepingAssetsListSammelpostenPoolsResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_get_sammelposten_pool\": {\n method: \"GET\",\n path: \"/bookkeeping/assets/sammelposten-pools/:poolId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Sammelposten-Pool mit Assets laden\",\n description: \"Lädt einen Sammelposten-Pool mit allen zugehörigen Wirtschaftsgütern.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAssetsGetSammelpostenPoolParams;\n query: BookkeepingAssetsGetSammelpostenPoolQuery;\n body: BookkeepingAssetsGetSammelpostenPoolBody;\n response: BookkeepingAssetsGetSammelpostenPoolResponse;\n responseData: BookkeepingAssetsGetSammelpostenPoolResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_generate_depreciation\": {\n method: \"POST\",\n path: \"/bookkeeping/assets/depreciation/generate\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Jahresende-AfA generieren\",\n description: \"Generiert AfA-Buchungen für alle aktiven Assets eines Wirtschaftsjahres. Erstellt persistierte depreciation_records für GoBD-Audit-Trail. Sammelposten werden auf Pool-Ebene gebucht.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsGenerateDepreciationParams;\n query: BookkeepingAssetsGenerateDepreciationQuery;\n body: BookkeepingAssetsGenerateDepreciationBody;\n response: BookkeepingAssetsGenerateDepreciationResponse;\n responseData: BookkeepingAssetsGenerateDepreciationResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_get_depreciation_records\": {\n method: \"GET\",\n path: \"/bookkeeping/assets/depreciation/records\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"AfA-Buchungen abfragen\",\n description: \"Gibt alle persistierten AfA-Buchungen für ein Wirtschaftsjahr zurück.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAssetsGetDepreciationRecordsParams;\n query: BookkeepingAssetsGetDepreciationRecordsQuery;\n body: BookkeepingAssetsGetDepreciationRecordsBody;\n response: BookkeepingAssetsGetDepreciationRecordsResponse;\n responseData: BookkeepingAssetsGetDepreciationRecordsResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_finalize_depreciation\": {\n method: \"POST\",\n path: \"/bookkeeping/assets/depreciation/finalize\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"AfA-Jahresabschluss finalisieren (GoBD-Sperrung)\",\n description: \"Sperrt alle offenen AfA-Buchungen eines Wirtschaftsjahres. Gesperrte Buchungen können nicht mehr geändert werden (GoBD-konform). Erfordert Admin-Berechtigung.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsFinalizeDepreciationParams;\n query: BookkeepingAssetsFinalizeDepreciationQuery;\n body: BookkeepingAssetsFinalizeDepreciationBody;\n response: BookkeepingAssetsFinalizeDepreciationResponse;\n responseData: BookkeepingAssetsFinalizeDepreciationResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_iab_list\": {\n method: \"GET\",\n path: \"/bookkeeping/assets/iab\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"IAB-Einträge auflisten\",\n description: \"Alle Investitionsabzugsbeträge (§7g Abs. 1) eines Unternehmens. Zeigt aktive, aufgelöste und rückabgewickelte IABs.\",\n },\n types: null as unknown as {\n params: BookkeepingAssetsIabListParams;\n query: BookkeepingAssetsIabListQuery;\n body: BookkeepingAssetsIabListBody;\n response: BookkeepingAssetsIabListResponse;\n responseData: BookkeepingAssetsIabListResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_iab_create\": {\n method: \"POST\",\n path: \"/bookkeeping/assets/iab\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"IAB anlegen (geplante Investition)\",\n description: \"Erstellt einen Investitionsabzugsbetrag: Bis zu 50% der geplanten AK werden vom Gewinn des Abzugsjahres abgezogen. Prüft §7g-Gewinngrenze automatisch. 3-Jahres-Frist wird gesetzt.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsIabCreateParams;\n query: BookkeepingAssetsIabCreateQuery;\n body: BookkeepingAssetsIabCreateBody;\n response: BookkeepingAssetsIabCreateResponse;\n responseData: BookkeepingAssetsIabCreateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_iab_get\": {\n method: \"GET\",\n path: \"/bookkeeping/assets/iab/:iabId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"IAB-Eintrag laden\",\n description: \"Einzelnen Investitionsabzugsbetrag mit allen Details laden.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAssetsIabGetParams;\n query: BookkeepingAssetsIabGetQuery;\n body: BookkeepingAssetsIabGetBody;\n response: BookkeepingAssetsIabGetResponse;\n responseData: BookkeepingAssetsIabGetResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_iab_dissolve\": {\n method: \"POST\",\n path: \"/bookkeeping/assets/iab/:iabId/dissolve\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"IAB auflösen (bei Kauf)\",\n description: \"Löst den IAB auf und verknüpft ihn mit dem gekauften Asset. Die AK-Basis des Assets wird um den Abzugsbetrag reduziert.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsIabDissolveParams;\n query: BookkeepingAssetsIabDissolveQuery;\n body: BookkeepingAssetsIabDissolveBody;\n response: BookkeepingAssetsIabDissolveResponse;\n responseData: BookkeepingAssetsIabDissolveResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_iab_reverse\": {\n method: \"POST\",\n path: \"/bookkeeping/assets/iab/:iabId/reverse\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"IAB rückabwickeln (Frist abgelaufen)\",\n description: \"Rückabwicklung: Abzugsbetrag wird zum Gewinn hinzugerechnet + 6% Zinsen pro Jahr (§7g Abs. 3).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsIabReverseParams;\n query: BookkeepingAssetsIabReverseQuery;\n body: BookkeepingAssetsIabReverseBody;\n response: BookkeepingAssetsIabReverseResponse;\n responseData: BookkeepingAssetsIabReverseResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_iab_delete\": {\n method: \"DELETE\",\n path: \"/bookkeeping/assets/iab/:iabId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"IAB löschen (nur aktive)\",\n description: \"Soft-Delete eines aktiven IAB-Eintrags. Aufgelöste/rückabgewickelte IABs können nicht gelöscht werden.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAssetsIabDeleteParams;\n query: BookkeepingAssetsIabDeleteQuery;\n body: BookkeepingAssetsIabDeleteBody;\n response: BookkeepingAssetsIabDeleteResponse;\n responseData: BookkeepingAssetsIabDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_search\": {\n method: \"GET\",\n path: \"/bookkeeping/assets\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Anlagevermögen suchen\",\n description: \"Paginierte Suche über alle Anlagegüter mit erweiterten Filteroptionen (Typ, AfA-Methode, Gebäudetyp, Digital-Asset, Status). Unterstützt Sortierung nach Inventarnummer, Inbetriebnahmedatum etc.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAssetsSearchParams;\n query: BookkeepingAssetsSearchQuery;\n body: BookkeepingAssetsSearchBody;\n response: BookkeepingAssetsSearchResponse;\n responseData: BookkeepingAssetsSearchResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_create\": {\n method: \"POST\",\n path: \"/bookkeeping/assets\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Neue Anlage anlegen\",\n description: \"Erstellt ein Anlagegut mit vollständiger Validierung nach deutschem Steuerrecht. Unterstützt: lineare AfA, degressive AfA (§7 Abs. 2), GWG-Sofortabschreibung (≤800€), Sammelposten (250,01–1.000€), Digital-AfA (BMF 2021), Gebäude-AfA (§7 Abs. 4/5, §7i, §7b). Auto-Generierung von Inventarnummer. Sammelposten-Konsistenz wird pro Wirtschaftsjahr geprüft.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsCreateParams;\n query: BookkeepingAssetsCreateQuery;\n body: BookkeepingAssetsCreateBody;\n response: BookkeepingAssetsCreateResponse;\n responseData: BookkeepingAssetsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_get_by_id\": {\n method: \"GET\",\n path: \"/bookkeeping/assets/:assetId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Anlage mit AfA-Plan laden\",\n description: \"Lädt ein Anlagegut mit vollständigem AfA-Plan (alle Methoden: linear, degressive, GWG, Sammelposten, Digital-AfA, Gebäude-AfA). Enthält Sonderabschreibung, Buchgewinn/-verlust bei Abgang, und verknüpfte Erlöse.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAssetsGetByIdParams;\n query: BookkeepingAssetsGetByIdQuery;\n body: BookkeepingAssetsGetByIdBody;\n response: BookkeepingAssetsGetByIdResponse;\n responseData: BookkeepingAssetsGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_update\": {\n method: \"PUT\",\n path: \"/bookkeeping/assets/:assetId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Anlage aktualisieren\",\n description: \"Aktualisiert ein Anlagegut. Anschaffungsdaten sollten nach GoBD nur vor Finalisierung korrigiert werden. Veräußerte Anlagen können nicht bearbeitet werden.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsUpdateParams;\n query: BookkeepingAssetsUpdateQuery;\n body: BookkeepingAssetsUpdateBody;\n response: BookkeepingAssetsUpdateResponse;\n responseData: BookkeepingAssetsUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_dispose\": {\n method: \"POST\",\n path: \"/bookkeeping/assets/:assetId/dispose\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Anlage veräußern / aussondern\",\n description: \"Markiert Anlage als abgegangen. Berechnet automatisch Restbuchwert und Buchgewinn/-verlust. Bei Verkauf wird Revenue-Eintrag mit Kategorie 'asset_disposal' erstellt. Bei Sammelposten: Asset wird inaktiv, Pool-AfA läuft weiter.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsDisposeParams;\n query: BookkeepingAssetsDisposeQuery;\n body: BookkeepingAssetsDisposeBody;\n response: BookkeepingAssetsDisposeResponse;\n responseData: BookkeepingAssetsDisposeResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_delete\": {\n method: \"DELETE\",\n path: \"/bookkeeping/assets/:assetId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Anlage löschen (soft-delete, GoBD-konform)\",\n description: \"Soft-Delete: isDeleted=true, Daten bleiben für Revision erhalten.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAssetsDeleteParams;\n query: BookkeepingAssetsDeleteQuery;\n body: BookkeepingAssetsDeleteBody;\n response: BookkeepingAssetsDeleteResponse;\n responseData: BookkeepingAssetsDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_apply_sonderafa\": {\n method: \"POST\",\n path: \"/bookkeeping/assets/:assetId/sonderafa\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Sonderabschreibung §7g Abs. 5 anwenden\",\n description: \"Wendet Sonderabschreibung (max 20% der AK) an. Nur im Anschaffungsjahr, nur für bewegliche WG, ≥90% betriebliche Nutzung.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsApplySonderafaParams;\n query: BookkeepingAssetsApplySonderafaQuery;\n body: BookkeepingAssetsApplySonderafaBody;\n response: BookkeepingAssetsApplySonderafaResponse;\n responseData: BookkeepingAssetsApplySonderafaResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_switch_to_linear\": {\n method: \"POST\",\n path: \"/bookkeeping/assets/:assetId/switch-to-linear\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"Wechsel degressive → lineare AfA (§7 Abs. 3)\",\n description: \"Wechselt von degressiver zu linearer AfA. Restbuchwert wird über verbleibende Nutzungsdauer linear abgeschrieben.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsSwitchToLinearParams;\n query: BookkeepingAssetsSwitchToLinearQuery;\n body: BookkeepingAssetsSwitchToLinearBody;\n response: BookkeepingAssetsSwitchToLinearResponse;\n responseData: BookkeepingAssetsSwitchToLinearResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_add_cost_component\": {\n method: \"POST\",\n path: \"/bookkeeping/assets/:assetId/cost-components\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"AK-Bestandteil hinzufügen\",\n description: \"Fügt einen Anschaffungskostenbestandteil hinzu (Lieferung, Montage, Zoll, nachträgliche AK, Rabatte). Aktualisiert automatisch die AK-Summenfelder am Asset.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingAssetsAddCostComponentParams;\n query: BookkeepingAssetsAddCostComponentQuery;\n body: BookkeepingAssetsAddCostComponentBody;\n response: BookkeepingAssetsAddCostComponentResponse;\n responseData: BookkeepingAssetsAddCostComponentResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_list_cost_components\": {\n method: \"GET\",\n path: \"/bookkeeping/assets/:assetId/cost-components\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"AK-Bestandteile auflisten\",\n description: \"Listet alle Anschaffungskostenbestandteile eines Assets auf.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAssetsListCostComponentsParams;\n query: BookkeepingAssetsListCostComponentsQuery;\n body: BookkeepingAssetsListCostComponentsBody;\n response: BookkeepingAssetsListCostComponentsResponse;\n responseData: BookkeepingAssetsListCostComponentsResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_assets_delete_cost_component\": {\n method: \"DELETE\",\n path: \"/bookkeeping/assets/:assetId/cost-components/:componentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"assets\"],\n summary: \"AK-Bestandteil löschen\",\n description: \"Soft-Delete eines AK-Bestandteils. Aktualisiert AK-Summenfelder.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAssetsDeleteCostComponentParams;\n query: BookkeepingAssetsDeleteCostComponentQuery;\n body: BookkeepingAssetsDeleteCostComponentBody;\n response: BookkeepingAssetsDeleteCostComponentResponse;\n responseData: BookkeepingAssetsDeleteCostComponentResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_reports_euer\": {\n method: \"GET\",\n path: \"/bookkeeping/reports/euer\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reports\"],\n summary: \"EÜR-Bericht\",\n description: \"Erzeugt den Einnahmen-Überschuss-Rechnung (EÜR) Bericht für ein bestimmtes Jahr. Enthält alle relevanten Einnahmen- und Ausgabenposten nach Kategorie aggregiert. Ausgaben, die als Anlage erfasst wurden, werden dabei nicht mehr doppelt als Sofortaufwand gezählt; stattdessen erscheint deren AfA als Kategorie `depreciation`.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingReportsEuerParams;\n query: BookkeepingReportsEuerQuery;\n body: BookkeepingReportsEuerBody;\n response: BookkeepingReportsEuerResponse;\n responseData: BookkeepingReportsEuerResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_reports_summary\": {\n method: \"GET\",\n path: \"/bookkeeping/reports/summary\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reports\"],\n summary: \"Monatliche/Jährliche Zusammenfassung\",\n description: \"Gibt eine Zusammenfassung über Einnahmen, Ausgaben und Gewinn für einen bestimmten Zeitraum (Monat oder Jahr). Anlage-verknüpfte Ausgaben werden für diese Auswertung nicht als Sofortaufwand doppelt gezählt; stattdessen wird AfA als Ausgabenkategorie berücksichtigt.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingReportsSummaryParams;\n query: BookkeepingReportsSummaryQuery;\n body: BookkeepingReportsSummaryBody;\n response: BookkeepingReportsSummaryResponse;\n responseData: BookkeepingReportsSummaryResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_reports_monthly_trend\": {\n method: \"GET\",\n path: \"/bookkeeping/reports/monthly-trend\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reports\"],\n summary: \"Monatlicher Umsatztrend\",\n description: \"Gibt monatliche Umsatz- und Ausgabendaten für ein gesamtes Jahr zurück. Geeignet für Trendgrafiken und Zeitreihenanalysen.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingReportsMonthlyTrendParams;\n query: BookkeepingReportsMonthlyTrendQuery;\n body: BookkeepingReportsMonthlyTrendBody;\n response: BookkeepingReportsMonthlyTrendResponse;\n responseData: BookkeepingReportsMonthlyTrendResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_reports_asset_register\": {\n method: \"GET\",\n path: \"/bookkeeping/reports/assets\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reports\"],\n summary: \"Anlagen-Spiegel / AfA-Bericht\",\n description: \"Gibt für ein Jahr ein Anlagenverzeichnis mit allen relevanten Anlagegütern zurück, inklusive Buchwert zu Jahresanfang/-ende, AfA des Jahres, Zugängen, Abgängen, `linkedDisposalRevenueId` für verknüpfte Verkaufserlöse und dem Verknüpfungsstatus zur Ursprungs-Ausgabe. Für veräußerte Anlagen endet die AfA im Bericht mit dem Abgang.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingReportsAssetRegisterParams;\n query: BookkeepingReportsAssetRegisterQuery;\n body: BookkeepingReportsAssetRegisterBody;\n response: BookkeepingReportsAssetRegisterResponse;\n responseData: BookkeepingReportsAssetRegisterResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_reports_category_breakdown\": {\n method: \"GET\",\n path: \"/bookkeeping/reports/category-breakdown\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reports\"],\n summary: \"Aufschlüsselung nach Kategorie\",\n description: \"Gibt eine Aufschlüsselung der Ausgaben nach Kategorie für einen bestimmten Zeitraum zurück. Enthält bei Anlagevermögen zusätzlich die Kategorie `depreciation`, während verknüpfte Anschaffungsausgaben nicht doppelt als Sofortaufwand erscheinen.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingReportsCategoryBreakdownParams;\n query: BookkeepingReportsCategoryBreakdownQuery;\n body: BookkeepingReportsCategoryBreakdownBody;\n response: BookkeepingReportsCategoryBreakdownResponse;\n responseData: BookkeepingReportsCategoryBreakdownResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_reports_vendor_breakdown\": {\n method: \"GET\",\n path: \"/bookkeeping/reports/vendor-breakdown\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reports\"],\n summary: \"Aufschlüsselung nach Lieferant\",\n description: \"Gibt eine Aufschlüsselung der Ausgaben nach Lieferant für ein bestimmtes Jahr zurück. Zeigt die größten Lieferanten und zugehörige Beträge.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingReportsVendorBreakdownParams;\n query: BookkeepingReportsVendorBreakdownQuery;\n body: BookkeepingReportsVendorBreakdownBody;\n response: BookkeepingReportsVendorBreakdownResponse;\n responseData: BookkeepingReportsVendorBreakdownResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_reports_vat_status\": {\n method: \"GET\",\n path: \"/bookkeeping/reports/vat/status\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reports\"],\n summary: \"Aktueller USt-Status\",\n description: \"Gibt den aktuellen USt-Status zurück: aktuelles Besteuerungsverfahren (SOLL/IST), Kleinunternehmer-Status, UStVA-Anmeldepräferenz und aktuelle Schwellenwert-Warnungen (z.B. Nähe zur 25k-Grenze). Zentraler Baustein für die Tax-Übersicht.\",\n },\n types: null as unknown as {\n params: BookkeepingReportsVatStatusParams;\n query: BookkeepingReportsVatStatusQuery;\n body: BookkeepingReportsVatStatusBody;\n response: BookkeepingReportsVatStatusResponse;\n responseData: BookkeepingReportsVatStatusResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_reports_vat_periods\": {\n method: \"GET\",\n path: \"/bookkeeping/reports/vat/periods\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reports\"],\n summary: \"USt-Regimeperioden-Verlauf\",\n description: \"Gibt die historische Liste aller USt-Regimeperioden zurück (Kleinunternehmer ↔ Regelbesteuert Übergänge). Zeigt, seit wann das Unternehmen in welchem USt-Regime ist.\",\n },\n types: null as unknown as {\n params: BookkeepingReportsVatPeriodsParams;\n query: BookkeepingReportsVatPeriodsQuery;\n body: BookkeepingReportsVatPeriodsBody;\n response: BookkeepingReportsVatPeriodsResponse;\n responseData: BookkeepingReportsVatPeriodsResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_reports_vat_ustva\": {\n method: \"GET\",\n path: \"/bookkeeping/reports/vat/ustva\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reports\"],\n summary: \"UStVA-Voranmeldung\",\n description: \"Erzeugt die Umsatzsteuer-Voranmeldung (UStVA) für eine bestimmte Periode (Monat/Quartal/Jahr). Enthält Umsatzsteuer-Eingangsteuer, Ausgangsteuer und den zu zahlenden/erstattbaren Betrag.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingReportsVatUstvaParams;\n query: BookkeepingReportsVatUstvaQuery;\n body: BookkeepingReportsVatUstvaBody;\n response: BookkeepingReportsVatUstvaResponse;\n responseData: BookkeepingReportsVatUstvaResponseData;\n },\n },\n // Contract source: explicit\n \"payments_import_csv\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/import/csv\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlungen aus CSV importieren\",\n description: \"Importiert Zahlungen aus einer CSV-Datei mittels eines Importprofils. Gibt Anzahl eingefügter und übersprungener Zeilen zurück. Nutze vorher /import/csv/preview um die Daten zu überprüfen.\",\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsImportCsvParams;\n query: PaymentsImportCsvQuery;\n body: PaymentsImportCsvBody;\n response: PaymentsImportCsvResponse;\n responseData: PaymentsImportCsvResponseData;\n },\n },\n // Contract source: explicit\n \"payments_import_csv_preview\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/import/csv/preview\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"CSV-Import vorschau\",\n description: \"Vorschau eines CSV-Imports: erkennt automatisch das Profil und Trennzeichen, mappt die Spalten und gibt eine Vorschau der validierten Zeilen mit Fehlern zurück.\",\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsImportCsvPreviewParams;\n query: PaymentsImportCsvPreviewQuery;\n body: PaymentsImportCsvPreviewBody;\n response: PaymentsImportCsvPreviewResponse;\n responseData: PaymentsImportCsvPreviewResponseData;\n },\n },\n // Contract source: explicit\n \"payments_list_csv_profiles\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/import/csv/profiles\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Verfügbare CSV-Importprofile\",\n description: \"Gibt eine Liste aller verfügbaren CSV-Importprofile zurück (vordefinierte Bankformat-Profile wie VKB, ING, etc.) mit Name und Trennzeichen-Hinweis.\",\n },\n types: null as unknown as {\n params: PaymentsListCsvProfilesParams;\n query: PaymentsListCsvProfilesQuery;\n body: PaymentsListCsvProfilesBody;\n response: PaymentsListCsvProfilesResponse;\n responseData: PaymentsListCsvProfilesResponseData;\n },\n },\n // Contract source: explicit\n \"payments_download_csv_template\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/import/csv/template/:profileKey\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"CSV-Vorlage herunterladen\",\n description: \"Gibt eine Musterdatei (CSV-Template) für ein bestimmtes Importprofil zum Download zurück. Hilfreich um das erwartete Format zu verstehen.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsDownloadCsvTemplateParams;\n query: PaymentsDownloadCsvTemplateQuery;\n body: PaymentsDownloadCsvTemplateBody;\n response: PaymentsDownloadCsvTemplateResponse;\n responseData: PaymentsDownloadCsvTemplateResponseData;\n },\n },\n // Contract source: explicit\n \"payments_list_import_profiles\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/import/profiles\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Benutzerdefinierte Importprofile auflisten\",\n description: \"Gibt alle benutzerdefinierten Importprofile zurück. Optional einschließlich archivierter Profile. Diese Profile werden vom Benutzer erstellt und pflegen die Spalten-Mappings für CSV-Imports.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsListImportProfilesParams;\n query: PaymentsListImportProfilesQuery;\n body: PaymentsListImportProfilesBody;\n response: PaymentsListImportProfilesResponse;\n responseData: PaymentsListImportProfilesResponseData;\n },\n },\n // Contract source: explicit\n \"payments_create_import_profile\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/import/profiles\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Neues Importprofil anlegen\",\n description: \"Erstellt ein neues benutzerdefiniertes Importprofil mit Spalten-Mapping für CSV-Imports.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsCreateImportProfileParams;\n query: PaymentsCreateImportProfileQuery;\n body: PaymentsCreateImportProfileBody;\n response: PaymentsCreateImportProfileResponse;\n responseData: PaymentsCreateImportProfileResponseData;\n },\n },\n // Contract source: explicit\n \"payments_update_import_profile\": {\n method: \"PUT\",\n path: \"/bookkeeping/payments/import/profiles/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Importprofil aktualisieren\",\n description: \"Aktualisiert ein benutzerdefiniertes Importprofil (Name, Spalten-Mapping, Archivierung).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsUpdateImportProfileParams;\n query: PaymentsUpdateImportProfileQuery;\n body: PaymentsUpdateImportProfileBody;\n response: PaymentsUpdateImportProfileResponse;\n responseData: PaymentsUpdateImportProfileResponseData;\n },\n },\n // Contract source: explicit\n \"payments_search\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/search\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlungen suchen\",\n description: \"Paginierte Suche über alle Zahlungen mit Filteroptionen (Zeitraum, Konto, Zuweisungsstatus, Suchbegriff). Hauptliste für die Zahlungsübersicht.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsSearchParams;\n query: PaymentsSearchQuery;\n body: PaymentsSearchBody;\n response: PaymentsSearchResponse;\n responseData: PaymentsSearchResponseData;\n },\n },\n // Contract source: explicit\n \"payments_create_manual\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/manual\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Manuell Zahlung anlegen\",\n description: \"Erstellt eine manuell eingetragene Zahlung (z.B. Bargeld, überwiesenes Nicht-CSV). Alternative zum CSV-Import für einzelne Einträge.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsCreateManualParams;\n query: PaymentsCreateManualQuery;\n body: PaymentsCreateManualBody;\n response: PaymentsCreateManualResponse;\n responseData: PaymentsCreateManualResponseData;\n },\n },\n // Contract source: explicit\n \"payments_transfer_link\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/transfer/link\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zwei bestehende Zahlungen als Umbuchung verknüpfen\",\n description: \"Verknüpft zwei bestehende Zahlungen (z.B. aus Bankimporten) als Umbuchungspaar. Beide Zahlungen müssen auf unterschiedlichen Konten sein, eine eingehend und eine ausgehend. Die Zahlungen werden bidirektional via linkedPaymentId verknüpft. Es werden KEINE neuen Zahlungen erstellt.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsTransferLinkParams;\n query: PaymentsTransferLinkQuery;\n body: PaymentsTransferLinkBody;\n response: PaymentsTransferLinkResponse;\n responseData: PaymentsTransferLinkResponseData;\n },\n },\n // Contract source: explicit\n \"payments_cashbook\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/cashbook\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Kassenbestand / Kontobuch\",\n description: \"Gibt das Kontobuch für ein bestimmtes Zahlungskonto zurück: Eröffnungsbetrag, Schlussbetrag und paginierte Liste der Bewegungen im Zeitraum.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsCashbookParams;\n query: PaymentsCashbookQuery;\n body: PaymentsCashbookBody;\n response: PaymentsCashbookResponse;\n responseData: PaymentsCashbookResponseData;\n },\n },\n // Contract source: explicit\n \"payments_match_suggestions\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/match/:paymentId/suggestions\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zuweisungsvorschläge für Zahlung\",\n description: \"Gibt Vorschläge für die Zuordnung einer Zahlung zu Rechnungen/Ausgaben zurück (automatische Matching-Logik basierend auf Betrag und Zeitraum). Zeigt auch den verbleibenden Betrag an.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsMatchSuggestionsParams;\n query: PaymentsMatchSuggestionsQuery;\n body: PaymentsMatchSuggestionsBody;\n response: PaymentsMatchSuggestionsResponse;\n responseData: PaymentsMatchSuggestionsResponseData;\n },\n },\n // Contract source: explicit\n \"payments_booking_payment_suggestions\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/booking-match/:targetType/:targetId/payment-suggestions\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlungsvorschläge für Buchung\",\n description: \"Gibt Zahlungsvorschläge für eine Ausgabe oder Einnahme zurück (spiegelbildlich zu match-suggestions). Ermöglicht die Zuordnung von der Buchungsseite aus.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsBookingPaymentSuggestionsParams;\n query: PaymentsBookingPaymentSuggestionsQuery;\n body: PaymentsBookingPaymentSuggestionsBody;\n response: PaymentsBookingPaymentSuggestionsResponse;\n responseData: PaymentsBookingPaymentSuggestionsResponseData;\n },\n },\n // Contract source: explicit\n \"payments_allocate\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/allocate/:paymentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlung einer Rechnung zuweisen\",\n description: \"Weist eine Zahlung einer oder mehreren Rechnungen/Ausgaben zu (Allokation). Gibt die aktualisierten Allokations-Einträge zurück.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsAllocateParams;\n query: PaymentsAllocateQuery;\n body: PaymentsAllocateBody;\n response: PaymentsAllocateResponse;\n responseData: PaymentsAllocateResponseData;\n },\n },\n // Contract source: explicit\n \"payments_unallocate\": {\n method: \"DELETE\",\n path: \"/bookkeeping/payments/allocations/:paymentId/:allocationId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"[DEPRECATED] Zuweisung entfernen — gesperrt (GoBD)\",\n description: \"GoBD-konform: Zuordnungen dürfen nicht gelöscht werden. Verwende stattdessen POST /:paymentId/allocations/:allocationId/reverse für eine Stornierung.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsUnallocateParams;\n query: PaymentsUnallocateQuery;\n body: PaymentsUnallocateBody;\n response: PaymentsUnallocateResponse;\n responseData: PaymentsUnallocateResponseData;\n },\n },\n // Contract source: explicit\n \"payments_update\": {\n method: \"PUT\",\n path: \"/bookkeeping/payments/update/:paymentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlung aktualisieren\",\n description: \"Aktualisiert eine bestehende Zahlung (z.B. Notiz, Kategorie). Zahlungen in gesperrten Perioden können nicht mehr geändert werden.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsUpdateParams;\n query: PaymentsUpdateQuery;\n body: PaymentsUpdateBody;\n response: PaymentsUpdateResponse;\n responseData: PaymentsUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"payments_reversal_preview\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/:paymentId/reversal-preview\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Storno-Vorschau für Zahlung\",\n description: \"Zeigt eine Vorschau aller Auswirkungen einer Stornierung: betroffene Zuordnungen, Rechnungs-Status-Änderungen, Warnungen und Blocker. Muss VOR der Stornierung aufgerufen werden um dem User die Konsequenzen zu zeigen.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsReversalPreviewParams;\n query: PaymentsReversalPreviewQuery;\n body: PaymentsReversalPreviewBody;\n response: PaymentsReversalPreviewResponse;\n responseData: PaymentsReversalPreviewResponseData;\n },\n },\n // Contract source: explicit\n \"payments_reverse\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/:paymentId/reverse\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlung stornieren (GoBD-konform)\",\n description: \"Erstellt eine Gegenbuchung (Storno-Payment) mit umgekehrtem Vorzeichen und storniert alle zugehörigen Zuordnungen. Die ursprüngliche Zahlung wird als storniert markiert, aber NICHT gelöscht. Rechnungen werden ggf. auf 'issued' zurückgesetzt. Idempotent: doppelte Aufrufe geben das bestehende Storno zurück.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsReverseParams;\n query: PaymentsReverseQuery;\n body: PaymentsReverseBody;\n response: PaymentsReverseResponse;\n responseData: PaymentsReverseResponseData;\n },\n },\n // Contract source: explicit\n \"payments_transfer_unlink\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/:paymentId/transfer/unlink\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Umbuchung auflösen (Verknüpfung entfernen)\",\n description: \"Entfernt die Verknüpfung zwischen zwei als Umbuchung verknüpften Zahlungen. Die Zahlungen selbst bleiben bestehen, nur die bidirektionale Verknüpfung wird aufgehoben. Begründung ist Pflicht (GoBD).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsTransferUnlinkParams;\n query: PaymentsTransferUnlinkQuery;\n body: PaymentsTransferUnlinkBody;\n response: PaymentsTransferUnlinkResponse;\n responseData: PaymentsTransferUnlinkResponseData;\n },\n },\n // Contract source: explicit\n \"payments_transfer_linkable\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/:paymentId/transfer/linkable\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Verknüpfbare Zahlungen für Umbuchung suchen\",\n description: \"Gibt eine paginierte Liste von Zahlungen zurück, die als Umbuchungs-Gegenstück zur angegebenen Zahlung verknüpft werden könnten. Filtert nach Konto, Richtung, Zeitraum und Betrag. Nur unverknüpfte, nicht-stornierte Zahlungen werden zurückgegeben.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsTransferLinkableParams;\n query: PaymentsTransferLinkableQuery;\n body: PaymentsTransferLinkableBody;\n response: PaymentsTransferLinkableResponse;\n responseData: PaymentsTransferLinkableResponseData;\n },\n },\n // Contract source: explicit\n \"payments_allocation_reversal_preview\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/:paymentId/allocations/:allocationId/reversal-preview\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Storno-Vorschau für Zuordnung\",\n description: \"Zeigt die Auswirkungen einer Zuordnungs-Stornierung: betroffene Rechnung, neuer Status, verbleibender Zuordnungsbetrag nach Storno.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsAllocationReversalPreviewParams;\n query: PaymentsAllocationReversalPreviewQuery;\n body: PaymentsAllocationReversalPreviewBody;\n response: PaymentsAllocationReversalPreviewResponse;\n responseData: PaymentsAllocationReversalPreviewResponseData;\n },\n },\n // Contract source: explicit\n \"payments_allocation_reverse\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/:paymentId/allocations/:allocationId/reverse\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zuordnung stornieren (GoBD-konform)\",\n description: \"Erstellt eine Gegen-Zuordnung mit negativem Betrag auf derselben Zahlung. Die ursprüngliche Zuordnung wird als storniert markiert, aber NICHT gelöscht. Die Rechnung wird ggf. auf 'issued' zurückgesetzt. Idempotent: doppelte Aufrufe geben das bestehende Storno zurück.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsAllocationReverseParams;\n query: PaymentsAllocationReverseQuery;\n body: PaymentsAllocationReverseBody;\n response: PaymentsAllocationReverseResponse;\n responseData: PaymentsAllocationReverseResponseData;\n },\n },\n // Contract source: explicit\n \"payments_delete\": {\n method: \"DELETE\",\n path: \"/bookkeeping/payments/:paymentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"[DEPRECATED] Zahlung löschen — gesperrt (GoBD)\",\n description: \"GoBD-konform: Zahlungen dürfen nicht gelöscht werden. Verwende stattdessen POST /:paymentId/reverse für eine Stornierung.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsDeleteParams;\n query: PaymentsDeleteQuery;\n body: PaymentsDeleteBody;\n response: PaymentsDeleteResponse;\n responseData: PaymentsDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"payments_book\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/:paymentId/book\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Kontoauszugszeile direkt buchen (Bank-First)\",\n description: \"Erstellt eine Buchung (Ausgabe oder Einnahme) direkt aus einer Zahlungstransaktion und verknüpft sie atomisch via Allokation. Eingehende Zahlungen (direction=in) erzeugen eine Einnahme, ausgehende (direction=out) eine Ausgabe. Diese Route ist der empfohlene Einstiegspunkt für den Bank-First-Buchungsflow.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsBookParams;\n query: PaymentsBookQuery;\n body: PaymentsBookBody;\n response: PaymentsBookResponse;\n responseData: PaymentsBookResponseData;\n },\n },\n // Contract source: explicit\n \"payments_record_fee\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/:paymentId/fee\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Bankgebühr auf Zahlung buchen\",\n description: \"Erfasst eine Bankgebühr (z.B. Kontoführung, Überweisungsgebühr) für eine Zahlung. Erstellt automatisch eine Ausgabe mit Kategorie 'bank_fees' und verknüpft sie mit der Zahlung via Allokation (kind=fee). Die Gebühr reduziert den verfügbaren Betrag für weitere Zuweisungen.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsRecordFeeParams;\n query: PaymentsRecordFeeQuery;\n body: PaymentsRecordFeeBody;\n response: PaymentsRecordFeeResponse;\n responseData: PaymentsRecordFeeResponseData;\n },\n },\n // Contract source: explicit\n \"payments_writeoff\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/:paymentId/writeoff\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Forderung/Schuld abschreiben\",\n description: \"Schreibt einen nicht-einbringlichen Betrag ab (z.B. Kunde insolvent, Forderung uneinbringlich). Erstellt eine Allokation mit kind=writeoff, die den offenen Betrag auf der Zielrechnung/Ausgabe reduziert. Der abgeschriebene Betrag wird steuerlich als Forderungsausfall behandelt. Grund muss angegeben werden (GoBD-konform).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsWriteoffParams;\n query: PaymentsWriteoffQuery;\n body: PaymentsWriteoffBody;\n response: PaymentsWriteoffResponse;\n responseData: PaymentsWriteoffResponseData;\n },\n },\n // Contract source: explicit\n \"payments_apply_discount\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/:paymentId/discount\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Skonto / Rabatt anwenden\",\n description: \"Wendet einen Skonto (Zahlungszielrabatt) oder Rabatt auf eine Rechnung/Ausgabe an. Erstellt eine Allokation mit kind=discount, die den offenen Betrag reduziert. Typische Anwendung: 2% Skonto bei Zahlung innerhalb 10 Tagen. Der Grund kann optional angegeben werden (z.B. 'Skonto 2%, Zahlung innerhalb 10 Tagen').\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsApplyDiscountParams;\n query: PaymentsApplyDiscountQuery;\n body: PaymentsApplyDiscountBody;\n response: PaymentsApplyDiscountResponse;\n responseData: PaymentsApplyDiscountResponseData;\n },\n },\n // Contract source: explicit\n \"payments_get_account_by_id\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/accounts/bdId/:accountId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlungskonto nach ID laden\",\n description: \"Lädt ein einzelnes Zahlungskonto (Bank/Kasse) anhand seiner ID mit allen Details (Name, IBAN, Typ, Eröffnungsbetrag).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsGetAccountByIdParams;\n query: PaymentsGetAccountByIdQuery;\n body: PaymentsGetAccountByIdBody;\n response: PaymentsGetAccountByIdResponse;\n responseData: PaymentsGetAccountByIdResponseData;\n },\n },\n // Contract source: explicit\n \"payments_list_accounts\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/accounts\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlungskonten auflisten\",\n description: \"Gibt eine paginierte Liste aller Zahlungskonten (Bankkonten, Kassenkonten) zurück, optional gefiltert per Suchbegriff.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsListAccountsParams;\n query: PaymentsListAccountsQuery;\n body: PaymentsListAccountsBody;\n response: PaymentsListAccountsResponse;\n responseData: PaymentsListAccountsResponseData;\n },\n },\n // Contract source: explicit\n \"payments_create_account\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/accounts/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Neues Zahlungskonto anlegen\",\n description: \"Erstellt ein neues Zahlungskonto (Bankkonto oder Kasse) mit Name, IBAN und optionalem Eröffnungsbetrag.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsCreateAccountParams;\n query: PaymentsCreateAccountQuery;\n body: PaymentsCreateAccountBody;\n response: PaymentsCreateAccountResponse;\n responseData: PaymentsCreateAccountResponseData;\n },\n },\n // Contract source: explicit\n \"payments_update_account\": {\n method: \"PUT\",\n path: \"/bookkeeping/payments/accounts/update/:accountId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlungskonto aktualisieren\",\n description: \"Aktualisiert ein bestehendes Zahlungskonto (Name, IBAN, Typ, PayPal-Credentials).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsUpdateAccountParams;\n query: PaymentsUpdateAccountQuery;\n body: PaymentsUpdateAccountBody;\n response: PaymentsUpdateAccountResponse;\n responseData: PaymentsUpdateAccountResponseData;\n },\n },\n // Contract source: explicit\n \"payments_archive_account\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/accounts/:accountId/archive\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Zahlungskonto archivieren\",\n description: \"Archiviert ein Zahlungskonto (Soft-Delete). Nur möglich wenn: keine offenen Zahlungen, keine aktiven Provider-Verbindungen, kein verknüpftes Bankkonto von einem anderen Konto, und kein Standard-Konto. GoBD-konform: Konto bleibt in der DB erhalten.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsArchiveAccountParams;\n query: PaymentsArchiveAccountQuery;\n body: PaymentsArchiveAccountBody;\n response: PaymentsArchiveAccountResponse;\n responseData: PaymentsArchiveAccountResponseData;\n },\n },\n // Contract source: explicit\n \"payments_delete_account\": {\n method: \"DELETE\",\n path: \"/bookkeeping/payments/accounts/:accountId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Unbenutztes Zahlungskonto löschen\",\n description: \"Löscht ein Zahlungskonto permanent. Nur möglich wenn das Konto keinerlei Zahlungen, Verbindungen, Rechnungsreferenzen oder Snapshots hat. Für Konten mit Daten: /archive verwenden.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsDeleteAccountParams;\n query: PaymentsDeleteAccountQuery;\n body: PaymentsDeleteAccountBody;\n response: PaymentsDeleteAccountResponse;\n responseData: PaymentsDeleteAccountResponseData;\n },\n },\n // Contract source: explicit\n \"payments_paypal_sync\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/accounts/:accountId/paypal/sync\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"PayPal-Konto manuell synchronisieren\",\n description: \"Ruft Transaktionen über die PayPal REST API ab und importiert sie idempotent (fingerprint-basiert, keine Duplikate). Optionaler 'fromDate' überschreibt den gespeicherten Sync-Cursor.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsPaypalSyncParams;\n query: PaymentsPaypalSyncQuery;\n body: PaymentsPaypalSyncBody;\n response: PaymentsPaypalSyncResponse;\n responseData: PaymentsPaypalSyncResponseData;\n },\n },\n // Contract source: explicit\n \"payments_sumup_oauth_start\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/accounts/:accountId/sumup/oauth/start\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"SumUp OAuth starten\",\n description: \"Erzeugt einen kurzlebigen OAuth-State und gibt die Authorize-URL fuer den SumUp Sign-in Flow zurueck. autoCreateBankAccount steuert ob nach OAuth automatisch ein Bankkonto aus den SumUp-Payout-Settings angelegt wird.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsSumupOauthStartParams;\n query: PaymentsSumupOauthStartQuery;\n body: PaymentsSumupOauthStartBody;\n response: PaymentsSumupOauthStartResponse;\n responseData: PaymentsSumupOauthStartResponseData;\n },\n },\n // Contract source: explicit\n \"payments_sumup_sync\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/accounts/:accountId/sumup/sync\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"SumUp-Konto manuell synchronisieren\",\n description: \"Importiert SumUp-Transaktionen und Payouts idempotent ueber die SumUp API.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsSumupSyncParams;\n query: PaymentsSumupSyncQuery;\n body: PaymentsSumupSyncBody;\n response: PaymentsSumupSyncResponse;\n responseData: PaymentsSumupSyncResponseData;\n },\n },\n // Contract source: explicit\n \"payments_sumup_oauth_disconnect\": {\n method: \"DELETE\",\n path: \"/bookkeeping/payments/accounts/:accountId/sumup/oauth\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"SumUp-Verbindung trennen\",\n description: \"Trennt die gespeicherte SumUp OAuth-Verbindung fuer ein Zahlungskonto und deaktiviert den automatischen Sync.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsSumupOauthDisconnectParams;\n query: PaymentsSumupOauthDisconnectQuery;\n body: PaymentsSumupOauthDisconnectBody;\n response: PaymentsSumupOauthDisconnectResponse;\n responseData: PaymentsSumupOauthDisconnectResponseData;\n },\n },\n // Contract source: explicit\n \"payments_paypal_webhook_register\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/accounts/:accountId/paypal/webhook/register\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"PayPal-Webhook registrieren\",\n description: \"Registriert eine HTTPS-Callback-URL bei PayPal für Echtzeit-Zahlungsbenachrichtigungen. Überschreibt einen vorhandenen Webhook automatisch.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsPaypalWebhookRegisterParams;\n query: PaymentsPaypalWebhookRegisterQuery;\n body: PaymentsPaypalWebhookRegisterBody;\n response: PaymentsPaypalWebhookRegisterResponse;\n responseData: PaymentsPaypalWebhookRegisterResponseData;\n },\n },\n // Contract source: explicit\n \"payments_paypal_webhook_deregister\": {\n method: \"DELETE\",\n path: \"/bookkeeping/payments/accounts/:accountId/paypal/webhook\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"PayPal-Webhook entfernen\",\n description: \"Entfernt den registrierten PayPal-Webhook und löscht die webhookId aus der Datenbank.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsPaypalWebhookDeregisterParams;\n query: PaymentsPaypalWebhookDeregisterQuery;\n body: PaymentsPaypalWebhookDeregisterBody;\n response: PaymentsPaypalWebhookDeregisterResponse;\n responseData: PaymentsPaypalWebhookDeregisterResponseData;\n },\n },\n // Contract source: explicit\n \"payments_list_balance_snapshots\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/snapshots\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Ist-Saldo Snapshots auflisten\",\n description: \"Gibt alle externen Saldo-Snapshots für ein Zahlungskonto zurück (Bank/PayPal/SumUp). Nicht-stornierte Einträge werden standardmäßig zurückgegeben. Dient der Anzeige von Systemsaldo vs. Ist-Saldo und Abweichung. GoBD: Einträge werden nie gelöscht — nur storniert.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsListBalanceSnapshotsParams;\n query: PaymentsListBalanceSnapshotsQuery;\n body: PaymentsListBalanceSnapshotsBody;\n response: PaymentsListBalanceSnapshotsResponse;\n responseData: PaymentsListBalanceSnapshotsResponseData;\n },\n },\n // Contract source: explicit\n \"payments_create_balance_snapshot\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/snapshots\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Ist-Saldo Snapshot anlegen\",\n description: \"Erfasst einen externen Saldo-Snapshot (z.B. Kontoauszug, PayPal-Saldo). Jeder Snapshot ist ein unveränderlicher Eintrag. Korrekturen erfolgen durch Stornierung und Neuanlage. GoBD: append-only, kein DELETE.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsCreateBalanceSnapshotParams;\n query: PaymentsCreateBalanceSnapshotQuery;\n body: PaymentsCreateBalanceSnapshotBody;\n response: PaymentsCreateBalanceSnapshotResponse;\n responseData: PaymentsCreateBalanceSnapshotResponseData;\n },\n },\n // Contract source: explicit\n \"payments_void_balance_snapshot\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/snapshots/:snapshotId/void\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Ist-Saldo Snapshot stornieren (GoBD)\",\n description: \"Storniert einen fehlerhaften Saldo-Snapshot. Der Eintrag wird als storniert markiert (isVoided = true) und aus der aktiven Anzeige ausgeblendet, bleibt aber dauerhaft im Audit-Trail erhalten. Begründung ist Pflicht (GoBD). Keine Datenlöschung.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsVoidBalanceSnapshotParams;\n query: PaymentsVoidBalanceSnapshotQuery;\n body: PaymentsVoidBalanceSnapshotBody;\n response: PaymentsVoidBalanceSnapshotResponse;\n responseData: PaymentsVoidBalanceSnapshotResponseData;\n },\n },\n // Contract source: explicit\n \"payments_update_fee_vat_treatment\": {\n method: \"PUT\",\n path: \"/bookkeeping/payments/accounts/:accountId/fee-vat-treatment\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Gebuehren-Steuerbehandlung der Provider-Verbindung setzen\",\n description: \"Legt fest wie Provider-Gebuehren steuerlich behandelt werden: EXEMPT (steuerfrei, §4 Nr. 8 UStG), INCLUSIVE_STANDARD (19% inklusive, deutsche Entity), REVERSE_CHARGE_13B (§13b, EU-Entity). Gilt pro Verbindung, nicht global.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsUpdateFeeVatTreatmentParams;\n query: PaymentsUpdateFeeVatTreatmentQuery;\n body: PaymentsUpdateFeeVatTreatmentBody;\n response: PaymentsUpdateFeeVatTreatmentResponse;\n responseData: PaymentsUpdateFeeVatTreatmentResponseData;\n },\n },\n // Contract source: explicit\n \"payments_list_fee_proposals\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/fee-proposals\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Gebuehren-Vorschlaege auflisten\",\n description: \"Listet alle vom Sync vorgeschlagenen Fee-Expenses die auf Bestaetigung warten. Diese Vorschlaege wurden automatisch beim Import erstellt und muessen vom User bestaetigt werden bevor sie in die UStVA einfliessen.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsListFeeProposalsParams;\n query: PaymentsListFeeProposalsQuery;\n body: PaymentsListFeeProposalsBody;\n response: PaymentsListFeeProposalsResponse;\n responseData: PaymentsListFeeProposalsResponseData;\n },\n },\n // Contract source: explicit\n \"payments_confirm_fee_proposals\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/fee-proposals/confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Gebuehren-Vorschlaege bestaetigen\",\n description: \"Bestaetigt ausgewaehlte Fee-Vorschlaege. Nach Bestaetigung werden sie als regulaere Ausgaben gebucht und fliessen in die UStVA ein.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsConfirmFeeProposalsParams;\n query: PaymentsConfirmFeeProposalsQuery;\n body: PaymentsConfirmFeeProposalsBody;\n response: PaymentsConfirmFeeProposalsResponse;\n responseData: PaymentsConfirmFeeProposalsResponseData;\n },\n },\n // Contract source: explicit\n \"payments_reject_fee_proposals\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/fee-proposals/reject\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"Gebuehren-Vorschlaege ablehnen\",\n description: \"Lehnt ausgewaehlte Fee-Vorschlaege ab. Abgelehnte Vorschlaege werden als geloescht markiert. Beim naechsten Sync koennen neue Vorschlaege erstellt werden.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PaymentsRejectFeeProposalsParams;\n query: PaymentsRejectFeeProposalsQuery;\n body: PaymentsRejectFeeProposalsBody;\n response: PaymentsRejectFeeProposalsResponse;\n responseData: PaymentsRejectFeeProposalsResponseData;\n },\n },\n // Contract source: explicit\n \"payments_paypal_webhook_receive\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/public/paypal/webhook\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"PayPal-Webhook empfangen (public)\",\n description: \"Öffentlicher Endpunkt für eingehende PayPal-Webhook-Events. Signatur wird intern via PayPal API verifiziert. Gibt immer HTTP 200 zurück.\",\n },\n types: null as unknown as {\n params: PaymentsPaypalWebhookReceiveParams;\n query: PaymentsPaypalWebhookReceiveQuery;\n body: PaymentsPaypalWebhookReceiveBody;\n response: PaymentsPaypalWebhookReceiveResponse;\n responseData: PaymentsPaypalWebhookReceiveResponseData;\n },\n },\n // Contract source: explicit\n \"payments_sumup_oauth_callback\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/public/sumup/oauth/callback\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"bookkeeping\",\"payments\"],\n summary: \"SumUp OAuth Callback (public)\",\n description: \"Öffentlicher Callback-Endpunkt für den SumUp OAuth Authorization-Code-Flow. Validiert den OAuth-State, speichert Tokens serverseitig und leitet zurück ins Frontend.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PaymentsSumupOauthCallbackParams;\n query: PaymentsSumupOauthCallbackQuery;\n body: PaymentsSumupOauthCallbackBody;\n response: PaymentsSumupOauthCallbackResponse;\n responseData: PaymentsSumupOauthCallbackResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_payments_list_accounts_external\": {\n method: \"GET\",\n path: \"/bookkeeping/payments/external/accounts\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"payments:read\"]},\n meta: {\n tags: [\"bookkeeping\",\"payments-external\"],\n summary: \"List payment accounts via external API\",\n description: \"Returns payment accounts accessible for the token (cost center filtered). Use this to resolve paymentAccountId before calling settle-invoice.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingPaymentsListAccountsExternalParams;\n query: BookkeepingPaymentsListAccountsExternalQuery;\n body: BookkeepingPaymentsListAccountsExternalBody;\n response: BookkeepingPaymentsListAccountsExternalResponse;\n responseData: BookkeepingPaymentsListAccountsExternalResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_payments_create_manual_external\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/external/manual\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"payments:write\"]},\n meta: {\n tags: [\"bookkeeping\",\"payments-external\"],\n summary: \"Create manual payment via external API\",\n description: \"Creates a manual payment entry via OAuth2/API key for integration scenarios (e.g. PSP clearing events). Kept intentionally narrow; allocation/reconciliation remains an internal or CSV-led workflow.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingPaymentsCreateManualExternalParams;\n query: BookkeepingPaymentsCreateManualExternalQuery;\n body: BookkeepingPaymentsCreateManualExternalBody;\n response: BookkeepingPaymentsCreateManualExternalResponse;\n responseData: BookkeepingPaymentsCreateManualExternalResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_payments_settle_invoice_external\": {\n method: \"POST\",\n path: \"/bookkeeping/payments/external/settle-invoice\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"payments:write\",\"invoices:write\"]},\n meta: {\n tags: [\"bookkeeping\",\"payments-external\"],\n summary: \"Settle invoice via external API\",\n description: \"One-shot settlement for shop/payment-provider flows: creates payment, allocates it to the invoice, and can auto-close shortfall as discount so no manual allocation step remains.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingPaymentsSettleInvoiceExternalParams;\n query: BookkeepingPaymentsSettleInvoiceExternalQuery;\n body: BookkeepingPaymentsSettleInvoiceExternalBody;\n response: BookkeepingPaymentsSettleInvoiceExternalResponse;\n responseData: BookkeepingPaymentsSettleInvoiceExternalResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_audit_logs\": {\n method: \"GET\",\n path: \"/bookkeeping/audit/logs\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"audit\"],\n summary: \"Buchungs-Audit-Protokoll\",\n description: \"Gibt eine paginierte Liste aller Buchungs-Audit-Einträge zurück: Sperränderungen, Zahlungsoperationen, Rechnungsänderungen, USt-Änderungen etc. Vollständiges Prüfprotokoll für das Unternehmen.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingAuditLogsParams;\n query: BookkeepingAuditLogsQuery;\n body: BookkeepingAuditLogsBody;\n response: BookkeepingAuditLogsResponse;\n responseData: BookkeepingAuditLogsResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_locks_get_state\": {\n method: \"GET\",\n path: \"/bookkeeping/locks/state\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"locks\"],\n summary: \"Aktueller Buchungssperre-Status\",\n description: \"Gibt den aktuellen Buchungssperre-Zustand zurück: welche Periode gesperrt ist, seit wann und in welchem Modus (payments_only = nur Zahlungen blockiert, strict = alles blockiert). Basis für die Sperrübersicht im Frontend.\",\n },\n types: null as unknown as {\n params: BookkeepingLocksGetStateParams;\n query: BookkeepingLocksGetStateQuery;\n body: BookkeepingLocksGetStateBody;\n response: BookkeepingLocksGetStateResponse;\n responseData: BookkeepingLocksGetStateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_locks_recommendation\": {\n method: \"GET\",\n path: \"/bookkeeping/locks/recommendation\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"locks\"],\n summary: \"Empfohlene nächste Buchungssperre\",\n description: \"Berechnet dynamisch die nächste empfohlene Buchungssperre basierend auf der UStVA-Anmeldepräferenz des Unternehmens (monatlich/vierteljährlich/jährlich). Gibt die vorgeschlagene Periode, Beginn/Ende, Begründung und Readiness-Checks zurück (offene Entwürfe, nicht zugewiesene Zahlungen etc.). Das ist die 'was ist geplant'-Information für Locks.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingLocksRecommendationParams;\n query: BookkeepingLocksRecommendationQuery;\n body: BookkeepingLocksRecommendationBody;\n response: BookkeepingLocksRecommendationResponse;\n responseData: BookkeepingLocksRecommendationResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_locks_overview\": {\n method: \"GET\",\n path: \"/bookkeeping/locks/overview\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"locks\"],\n summary: \"Frontend-Übersicht für Buchungssperre\",\n description: \"Liefert den aktuellen Sperr-UI-State inkl. Bedeutung (State-Legende), betroffener Bereiche, Modi und klarer Boundary-Regel. Diese Antwort ist speziell für eine leicht verständliche Frontend-Anzeige gedacht.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingLocksOverviewParams;\n query: BookkeepingLocksOverviewQuery;\n body: BookkeepingLocksOverviewBody;\n response: BookkeepingLocksOverviewResponse;\n responseData: BookkeepingLocksOverviewResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_locks_set\": {\n method: \"POST\",\n path: \"/bookkeeping/locks/set\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"locks\"],\n summary: \"Buchungssperre setzen oder aufheben\",\n description: \"Setzt eine neue Buchungssperre bis zu einem bestimmten Datum in einem gewählten Modus (payments_only oder strict), oder hebt eine bestehende Sperre auf. Erzeugt einen Eintrag im Buchungs-Audit-Log. Sollte erst nach einer positiven Empfehlung von /recommendation verwendet werden.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingLocksSetParams;\n query: BookkeepingLocksSetQuery;\n body: BookkeepingLocksSetBody;\n response: BookkeepingLocksSetResponse;\n responseData: BookkeepingLocksSetResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_tax_params_health\": {\n method: \"GET\",\n path: \"/bookkeeping/tax-params/health\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"tax-params\"],\n summary: \"Tax-Parameter Health Check\",\n description: \"Prüft ob alle erwarteten Steuerparameter in der DB vorhanden sind. Zeigt fehlende Keys und aktuelle Werte. Status 503 wenn Parameter fehlen.\",\n },\n types: null as unknown as {\n params: BookkeepingTaxParamsHealthParams;\n query: BookkeepingTaxParamsHealthQuery;\n body: BookkeepingTaxParamsHealthBody;\n response: BookkeepingTaxParamsHealthResponse;\n responseData: BookkeepingTaxParamsHealthResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_tax_params_sync\": {\n method: \"POST\",\n path: \"/bookkeeping/tax-params/sync\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"tax-params\"],\n summary: \"Tax-Parameter synchronisieren\",\n description: \"Fügt fehlende Seed-Daten ein ohne bestehende zu überschreiben. Sicher für Produktion – idempotent.\",\n },\n types: null as unknown as {\n params: BookkeepingTaxParamsSyncParams;\n query: BookkeepingTaxParamsSyncQuery;\n body: BookkeepingTaxParamsSyncBody;\n response: BookkeepingTaxParamsSyncResponse;\n responseData: BookkeepingTaxParamsSyncResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_tax_params_list\": {\n method: \"GET\",\n path: \"/bookkeeping/tax-params\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"tax-params\"],\n summary: \"Steuerparameter auflisten\",\n description: \"Listet alle gesetzlichen Steuerparameter mit zeitlicher Gueltigkeit. Filterbar nach Kategorie (afa, vat, threshold, building) und Stichtag.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingTaxParamsListParams;\n query: BookkeepingTaxParamsListQuery;\n body: BookkeepingTaxParamsListBody;\n response: BookkeepingTaxParamsListResponse;\n responseData: BookkeepingTaxParamsListResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_tax_params_history\": {\n method: \"GET\",\n path: \"/bookkeeping/tax-params/:key/history\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"tax-params\"],\n summary: \"Parameter-Aenderungshistorie\",\n description: \"Zeigt die vollstaendige Aenderungshistorie eines Steuerparameters (Audit-Trail).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingTaxParamsHistoryParams;\n query: BookkeepingTaxParamsHistoryQuery;\n body: BookkeepingTaxParamsHistoryBody;\n response: BookkeepingTaxParamsHistoryResponse;\n responseData: BookkeepingTaxParamsHistoryResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_tax_params_create\": {\n method: \"POST\",\n path: \"/bookkeeping/tax-params\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"tax-params\"],\n summary: \"Neuen Steuerparameter-Zeitraum anlegen\",\n description: \"Erstellt einen neuen Gueltigkeitszeitraum fuer einen Steuerparameter. Setzt automatisch validTo auf dem bisherigen aktiven Eintrag. Nur Platform-Admins.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingTaxParamsCreateParams;\n query: BookkeepingTaxParamsCreateQuery;\n body: BookkeepingTaxParamsCreateBody;\n response: BookkeepingTaxParamsCreateResponse;\n responseData: BookkeepingTaxParamsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_tax_params_update\": {\n method: \"PATCH\",\n path: \"/bookkeeping/tax-params/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"tax-params\"],\n summary: \"Steuerparameter aendern (nur zukuenftige)\",\n description: \"Aendert einen noch nicht gueltigen Steuerparameter. Bereits gueltige/vergangene Parameter koennen nicht geaendert werden.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingTaxParamsUpdateParams;\n query: BookkeepingTaxParamsUpdateQuery;\n body: BookkeepingTaxParamsUpdateBody;\n response: BookkeepingTaxParamsUpdateResponse;\n responseData: BookkeepingTaxParamsUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_get_settings\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/settings\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"ESt-Einstellungen laden\",\n description: \"Laedt die Einkommensteuer-Einstellungen (Bundesland, Kirchensteuer, Gewerbesteuer-Hebesatz, Vorauszahlungen, etc.) fuer das ausgewaehlte Unternehmen.\",\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxGetSettingsParams;\n query: BookkeepingIncomeTaxGetSettingsQuery;\n body: BookkeepingIncomeTaxGetSettingsBody;\n response: BookkeepingIncomeTaxGetSettingsResponse;\n responseData: BookkeepingIncomeTaxGetSettingsResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_upsert_settings\": {\n method: \"POST\",\n path: \"/bookkeeping/income-tax/settings\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"ESt-Einstellungen speichern\",\n description: \"Erstellt oder aktualisiert die Einkommensteuer-Einstellungen fuer das ausgewaehlte Unternehmen. Alle Felder sind optional; vorhandene Werte werden ueberschrieben.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxUpsertSettingsParams;\n query: BookkeepingIncomeTaxUpsertSettingsQuery;\n body: BookkeepingIncomeTaxUpsertSettingsBody;\n response: BookkeepingIncomeTaxUpsertSettingsResponse;\n responseData: BookkeepingIncomeTaxUpsertSettingsResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_list_employment\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/employment\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Angestellteneinkommen auflisten\",\n description: \"Listet alle erfassten Angestellteneinkommen fuer ein Steuerjahr auf.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxListEmploymentParams;\n query: BookkeepingIncomeTaxListEmploymentQuery;\n body: BookkeepingIncomeTaxListEmploymentBody;\n response: BookkeepingIncomeTaxListEmploymentResponse;\n responseData: BookkeepingIncomeTaxListEmploymentResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_get_employment\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/employment/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Angestellteneinkommen nach ID laden\",\n description: \"Laedt ein einzelnes Angestellteneinkommen anhand seiner ID.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxGetEmploymentParams;\n query: BookkeepingIncomeTaxGetEmploymentQuery;\n body: BookkeepingIncomeTaxGetEmploymentBody;\n response: BookkeepingIncomeTaxGetEmploymentResponse;\n responseData: BookkeepingIncomeTaxGetEmploymentResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_create_employment\": {\n method: \"POST\",\n path: \"/bookkeeping/income-tax/employment\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Angestellteneinkommen anlegen\",\n description: \"Erstellt ein neues Angestellteneinkommen (Lohnsteuerbescheinigung). Alle Betraege koennen als String oder Zahl uebergeben werden.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxCreateEmploymentParams;\n query: BookkeepingIncomeTaxCreateEmploymentQuery;\n body: BookkeepingIncomeTaxCreateEmploymentBody;\n response: BookkeepingIncomeTaxCreateEmploymentResponse;\n responseData: BookkeepingIncomeTaxCreateEmploymentResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_update_employment\": {\n method: \"PUT\",\n path: \"/bookkeeping/income-tax/employment/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Angestellteneinkommen aktualisieren\",\n description: \"Aktualisiert ein bestehendes Angestellteneinkommen. Alle Felder sind optional (Partial Update).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxUpdateEmploymentParams;\n query: BookkeepingIncomeTaxUpdateEmploymentQuery;\n body: BookkeepingIncomeTaxUpdateEmploymentBody;\n response: BookkeepingIncomeTaxUpdateEmploymentResponse;\n responseData: BookkeepingIncomeTaxUpdateEmploymentResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_delete_employment\": {\n method: \"DELETE\",\n path: \"/bookkeeping/income-tax/employment/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Angestellteneinkommen loeschen\",\n description: \"Loescht ein Angestellteneinkommen anhand seiner ID.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxDeleteEmploymentParams;\n query: BookkeepingIncomeTaxDeleteEmploymentQuery;\n body: BookkeepingIncomeTaxDeleteEmploymentBody;\n response: BookkeepingIncomeTaxDeleteEmploymentResponse;\n responseData: BookkeepingIncomeTaxDeleteEmploymentResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_list_werbungskosten\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/werbungskosten\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Werbungskosten auflisten\",\n description: \"Listet alle erfassten Werbungskosten fuer ein Steuerjahr auf.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxListWerbungskostenParams;\n query: BookkeepingIncomeTaxListWerbungskostenQuery;\n body: BookkeepingIncomeTaxListWerbungskostenBody;\n response: BookkeepingIncomeTaxListWerbungskostenResponse;\n responseData: BookkeepingIncomeTaxListWerbungskostenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_create_werbungskosten\": {\n method: \"POST\",\n path: \"/bookkeeping/income-tax/werbungskosten\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Werbungskosten anlegen\",\n description: \"Erstellt einen neuen Werbungskosten-Eintrag (Entfernungspauschale, Homeoffice, Arbeitsmittel, etc.).\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxCreateWerbungskostenParams;\n query: BookkeepingIncomeTaxCreateWerbungskostenQuery;\n body: BookkeepingIncomeTaxCreateWerbungskostenBody;\n response: BookkeepingIncomeTaxCreateWerbungskostenResponse;\n responseData: BookkeepingIncomeTaxCreateWerbungskostenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_update_werbungskosten\": {\n method: \"PUT\",\n path: \"/bookkeeping/income-tax/werbungskosten/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Werbungskosten aktualisieren\",\n description: \"Aktualisiert einen bestehenden Werbungskosten-Eintrag.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxUpdateWerbungskostenParams;\n query: BookkeepingIncomeTaxUpdateWerbungskostenQuery;\n body: BookkeepingIncomeTaxUpdateWerbungskostenBody;\n response: BookkeepingIncomeTaxUpdateWerbungskostenResponse;\n responseData: BookkeepingIncomeTaxUpdateWerbungskostenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_delete_werbungskosten\": {\n method: \"DELETE\",\n path: \"/bookkeeping/income-tax/werbungskosten/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Werbungskosten loeschen\",\n description: \"Loescht einen Werbungskosten-Eintrag anhand seiner ID.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxDeleteWerbungskostenParams;\n query: BookkeepingIncomeTaxDeleteWerbungskostenQuery;\n body: BookkeepingIncomeTaxDeleteWerbungskostenBody;\n response: BookkeepingIncomeTaxDeleteWerbungskostenResponse;\n responseData: BookkeepingIncomeTaxDeleteWerbungskostenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_list_sonderausgaben\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/sonderausgaben\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Sonderausgaben auflisten\",\n description: \"Listet alle erfassten Sonderausgaben fuer ein Steuerjahr auf.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxListSonderausgabenParams;\n query: BookkeepingIncomeTaxListSonderausgabenQuery;\n body: BookkeepingIncomeTaxListSonderausgabenBody;\n response: BookkeepingIncomeTaxListSonderausgabenResponse;\n responseData: BookkeepingIncomeTaxListSonderausgabenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_create_sonderausgaben\": {\n method: \"POST\",\n path: \"/bookkeeping/income-tax/sonderausgaben\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Sonderausgaben anlegen\",\n description: \"Erstellt einen neuen Sonderausgaben-Eintrag (Kirchensteuer, Spenden, Ausbildungskosten, etc.).\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxCreateSonderausgabenParams;\n query: BookkeepingIncomeTaxCreateSonderausgabenQuery;\n body: BookkeepingIncomeTaxCreateSonderausgabenBody;\n response: BookkeepingIncomeTaxCreateSonderausgabenResponse;\n responseData: BookkeepingIncomeTaxCreateSonderausgabenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_update_sonderausgaben\": {\n method: \"PUT\",\n path: \"/bookkeeping/income-tax/sonderausgaben/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Sonderausgaben aktualisieren\",\n description: \"Aktualisiert einen bestehenden Sonderausgaben-Eintrag.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxUpdateSonderausgabenParams;\n query: BookkeepingIncomeTaxUpdateSonderausgabenQuery;\n body: BookkeepingIncomeTaxUpdateSonderausgabenBody;\n response: BookkeepingIncomeTaxUpdateSonderausgabenResponse;\n responseData: BookkeepingIncomeTaxUpdateSonderausgabenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_delete_sonderausgaben\": {\n method: \"DELETE\",\n path: \"/bookkeeping/income-tax/sonderausgaben/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Sonderausgaben loeschen\",\n description: \"Loescht einen Sonderausgaben-Eintrag anhand seiner ID.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxDeleteSonderausgabenParams;\n query: BookkeepingIncomeTaxDeleteSonderausgabenQuery;\n body: BookkeepingIncomeTaxDeleteSonderausgabenBody;\n response: BookkeepingIncomeTaxDeleteSonderausgabenResponse;\n responseData: BookkeepingIncomeTaxDeleteSonderausgabenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_list_vorsorge\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/vorsorge\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Vorsorgeaufwendungen auflisten\",\n description: \"Listet alle erfassten Vorsorgeaufwendungen fuer ein Steuerjahr auf.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxListVorsorgeParams;\n query: BookkeepingIncomeTaxListVorsorgeQuery;\n body: BookkeepingIncomeTaxListVorsorgeBody;\n response: BookkeepingIncomeTaxListVorsorgeResponse;\n responseData: BookkeepingIncomeTaxListVorsorgeResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_create_vorsorge\": {\n method: \"POST\",\n path: \"/bookkeeping/income-tax/vorsorge\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Vorsorgeaufwendungen anlegen\",\n description: \"Erstellt einen neuen Vorsorgeaufwendungen-Eintrag (Krankenversicherung, Rentenversicherung, Haftpflicht, etc.).\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxCreateVorsorgeParams;\n query: BookkeepingIncomeTaxCreateVorsorgeQuery;\n body: BookkeepingIncomeTaxCreateVorsorgeBody;\n response: BookkeepingIncomeTaxCreateVorsorgeResponse;\n responseData: BookkeepingIncomeTaxCreateVorsorgeResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_update_vorsorge\": {\n method: \"PUT\",\n path: \"/bookkeeping/income-tax/vorsorge/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Vorsorgeaufwendungen aktualisieren\",\n description: \"Aktualisiert einen bestehenden Vorsorgeaufwendungen-Eintrag.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxUpdateVorsorgeParams;\n query: BookkeepingIncomeTaxUpdateVorsorgeQuery;\n body: BookkeepingIncomeTaxUpdateVorsorgeBody;\n response: BookkeepingIncomeTaxUpdateVorsorgeResponse;\n responseData: BookkeepingIncomeTaxUpdateVorsorgeResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_delete_vorsorge\": {\n method: \"DELETE\",\n path: \"/bookkeeping/income-tax/vorsorge/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Vorsorgeaufwendungen loeschen\",\n description: \"Loescht einen Vorsorgeaufwendungen-Eintrag anhand seiner ID.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxDeleteVorsorgeParams;\n query: BookkeepingIncomeTaxDeleteVorsorgeQuery;\n body: BookkeepingIncomeTaxDeleteVorsorgeBody;\n response: BookkeepingIncomeTaxDeleteVorsorgeResponse;\n responseData: BookkeepingIncomeTaxDeleteVorsorgeResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_list_steuerminderungen\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/steuerminderungen\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Steuerminderungen auflisten\",\n description: \"Listet alle erfassten Steuerminderungen (§35a EStG) fuer ein Steuerjahr auf.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxListSteuerminderungenParams;\n query: BookkeepingIncomeTaxListSteuerminderungenQuery;\n body: BookkeepingIncomeTaxListSteuerminderungenBody;\n response: BookkeepingIncomeTaxListSteuerminderungenResponse;\n responseData: BookkeepingIncomeTaxListSteuerminderungenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_create_steuerminderungen\": {\n method: \"POST\",\n path: \"/bookkeeping/income-tax/steuerminderungen\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Steuerminderungen anlegen\",\n description: \"Erstellt einen neuen Steuerminderungen-Eintrag (haushaltsnahe Dienstleistungen, Handwerkerleistungen, energetische Sanierung).\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxCreateSteuerminderungenParams;\n query: BookkeepingIncomeTaxCreateSteuerminderungenQuery;\n body: BookkeepingIncomeTaxCreateSteuerminderungenBody;\n response: BookkeepingIncomeTaxCreateSteuerminderungenResponse;\n responseData: BookkeepingIncomeTaxCreateSteuerminderungenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_update_steuerminderungen\": {\n method: \"PUT\",\n path: \"/bookkeeping/income-tax/steuerminderungen/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Steuerminderungen aktualisieren\",\n description: \"Aktualisiert einen bestehenden Steuerminderungen-Eintrag.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxUpdateSteuerminderungenParams;\n query: BookkeepingIncomeTaxUpdateSteuerminderungenQuery;\n body: BookkeepingIncomeTaxUpdateSteuerminderungenBody;\n response: BookkeepingIncomeTaxUpdateSteuerminderungenResponse;\n responseData: BookkeepingIncomeTaxUpdateSteuerminderungenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_delete_steuerminderungen\": {\n method: \"DELETE\",\n path: \"/bookkeeping/income-tax/steuerminderungen/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Steuerminderungen loeschen\",\n description: \"Loescht einen Steuerminderungen-Eintrag anhand seiner ID.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxDeleteSteuerminderungenParams;\n query: BookkeepingIncomeTaxDeleteSteuerminderungenQuery;\n body: BookkeepingIncomeTaxDeleteSteuerminderungenBody;\n response: BookkeepingIncomeTaxDeleteSteuerminderungenResponse;\n responseData: BookkeepingIncomeTaxDeleteSteuerminderungenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_get_estimate\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/estimate\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"ESt-Schaetzung berechnen\",\n description: \"Berechnet die vollstaendige Einkommensteuer-Schaetzung fuer ein Steuerjahr. Beruecksichtigt EUeR-Gewinn, Angestellteneinkommen, alle Abzuege und Vorauszahlungen.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxGetEstimateParams;\n query: BookkeepingIncomeTaxGetEstimateQuery;\n body: BookkeepingIncomeTaxGetEstimateBody;\n response: BookkeepingIncomeTaxGetEstimateResponse;\n responseData: BookkeepingIncomeTaxGetEstimateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_get_vorauszahlungen\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/vorauszahlungen\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"Vorauszahlungen berechnen\",\n description: \"Berechnet die empfohlenen quartalsweisen Steuervorauszahlungen (ESt, Soli, KiSt) basierend auf der aktuellen Schaetzung.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxGetVorauszahlungenParams;\n query: BookkeepingIncomeTaxGetVorauszahlungenQuery;\n body: BookkeepingIncomeTaxGetVorauszahlungenBody;\n response: BookkeepingIncomeTaxGetVorauszahlungenResponse;\n responseData: BookkeepingIncomeTaxGetVorauszahlungenResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_income_tax_get_summary\": {\n method: \"GET\",\n path: \"/bookkeeping/income-tax/summary\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"income-tax\"],\n summary: \"ESt-Zusammenfassung\",\n description: \"Gibt eine kompakte Zusammenfassung der Steuerberechnung zurueck: zvE, ESt, Soli, KiSt, GewSt, Gesamtlast und Nachzahlung/Erstattung.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIncomeTaxGetSummaryParams;\n query: BookkeepingIncomeTaxGetSummaryQuery;\n body: BookkeepingIncomeTaxGetSummaryBody;\n response: BookkeepingIncomeTaxGetSummaryResponse;\n responseData: BookkeepingIncomeTaxGetSummaryResponseData;\n },\n },\n // Contract source: explicit\n \"reconciliation_dashboard\": {\n method: \"GET\",\n path: \"/bookkeeping/reconciliation/dashboard\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reconciliation\"],\n summary: \"Reconciliation Dashboard\",\n description: \"Übersicht aller nicht zugeordneten Zahlungen, Rechnungen, Ausgaben und Einnahmen mit Summen und Anzahlen. SumUp-Terminal-Konten werden automatisch ausgeschlossen. Mit estimateActionCounts=true werden zusätzlich Provider-Payout-Counts geschätzt.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ReconciliationDashboardParams;\n query: ReconciliationDashboardQuery;\n body: ReconciliationDashboardBody;\n response: ReconciliationDashboardResponse;\n responseData: ReconciliationDashboardResponseData;\n },\n },\n // Contract source: explicit\n \"reconciliation_queue\": {\n method: \"GET\",\n path: \"/bookkeeping/reconciliation/queue\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reconciliation\"],\n summary: \"Smart Reconciliation Queue\",\n description: \"Payment-zentrierte Queue: Zeigt nicht zugeordnete Zahlungen mit ihrem besten Match-Vorschlag, priorisiert nach Confidence, Betrag und Alter. Leitet den User durch die Zuordnungsarbeit.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ReconciliationQueueParams;\n query: ReconciliationQueueQuery;\n body: ReconciliationQueueBody;\n response: ReconciliationQueueResponse;\n responseData: ReconciliationQueueResponseData;\n },\n },\n // Contract source: explicit\n \"reconciliation_batch_suggestions\": {\n method: \"POST\",\n path: \"/bookkeeping/reconciliation/batch-suggestions\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reconciliation\"],\n summary: \"Batch Match-Vorschläge\",\n description: \"Gibt Match-Vorschläge für bis zu 20 Zahlungen gleichzeitig zurück. Effizienter als Einzelabfragen.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ReconciliationBatchSuggestionsParams;\n query: ReconciliationBatchSuggestionsQuery;\n body: ReconciliationBatchSuggestionsBody;\n response: ReconciliationBatchSuggestionsResponse;\n responseData: ReconciliationBatchSuggestionsResponseData;\n },\n },\n // Contract source: explicit\n \"reconciliation_auto_match_preview\": {\n method: \"GET\",\n path: \"/bookkeeping/reconciliation/auto-match/preview\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reconciliation\"],\n summary: \"Auto-Match Vorschau\",\n description: \"Zeigt alle High-Confidence Match-Kandidaten (Score >= minScore) als Vorschau. Der User kann diese dann per Confirm-Endpoint bestätigen.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ReconciliationAutoMatchPreviewParams;\n query: ReconciliationAutoMatchPreviewQuery;\n body: ReconciliationAutoMatchPreviewBody;\n response: ReconciliationAutoMatchPreviewResponse;\n responseData: ReconciliationAutoMatchPreviewResponseData;\n },\n },\n // Contract source: explicit\n \"reconciliation_auto_match_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/reconciliation/auto-match/confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reconciliation\"],\n summary: \"Auto-Match Bestätigen\",\n description: \"Führt die ausgewählten Auto-Match-Zuordnungen durch. Nutzt intern die bestehende Allocate-Logik für GoBD-Compliance.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ReconciliationAutoMatchConfirmParams;\n query: ReconciliationAutoMatchConfirmQuery;\n body: ReconciliationAutoMatchConfirmBody;\n response: ReconciliationAutoMatchConfirmResponse;\n responseData: ReconciliationAutoMatchConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"reconciliation_confirm_provider_payout\": {\n method: \"POST\",\n path: \"/bookkeeping/reconciliation/confirm-provider-payout\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reconciliation\"],\n summary: \"Provider-Payout bestätigen\",\n description: \"Verknüpft eine Bank-Einzahlung mit einem Provider-Payout (z.B. SumUp). Falls kein Payout-Record existiert, wird ein aggregierter Payout aus den Terminal-Transaktionen erstellt und per Transfer-Link verknüpft.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ReconciliationConfirmProviderPayoutParams;\n query: ReconciliationConfirmProviderPayoutQuery;\n body: ReconciliationConfirmProviderPayoutBody;\n response: ReconciliationConfirmProviderPayoutResponse;\n responseData: ReconciliationConfirmProviderPayoutResponseData;\n },\n },\n // Contract source: explicit\n \"reconciliation_groups\": {\n method: \"GET\",\n path: \"/bookkeeping/reconciliation/groups\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"reconciliation\"],\n summary: \"Split-Payment-Gruppenerkennung\",\n description: \"Erkennt Gruppen von Zahlungen vom selben Counterparty die zusammen einen offenen Betrag (Rechnung/Ausgabe) ergeben könnten. Hilfreich für Ratenzahlungen und Split-Payments.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ReconciliationGroupsParams;\n query: ReconciliationGroupsQuery;\n body: ReconciliationGroupsBody;\n response: ReconciliationGroupsResponse;\n responseData: ReconciliationGroupsResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_search\": {\n method: \"GET\",\n path: \"/bookkeeping/capital-movements\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Kapitalbewegungen suchen\",\n description: \"Paginierte Suche über Privatentnahmen und Privateinlagen mit Filteroptionen.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsSearchParams;\n query: BookkeepingCapitalMovementsSearchQuery;\n body: BookkeepingCapitalMovementsSearchBody;\n response: BookkeepingCapitalMovementsSearchResponse;\n responseData: BookkeepingCapitalMovementsSearchResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_kapitalkonto\": {\n method: \"GET\",\n path: \"/bookkeeping/capital-movements/kapitalkonto\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Kapitalkonto abrufen\",\n description: \"Aggregierte Entnahmen und Einlagen für ein Steuerjahr (Anlage EÜR Zeile 122-125).\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsKapitalkontoParams;\n query: BookkeepingCapitalMovementsKapitalkontoQuery;\n body: BookkeepingCapitalMovementsKapitalkontoBody;\n response: BookkeepingCapitalMovementsKapitalkontoResponse;\n responseData: BookkeepingCapitalMovementsKapitalkontoResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_get_by_id\": {\n method: \"GET\",\n path: \"/bookkeeping/capital-movements/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Kapitalbewegung nach ID\",\n description: \"Lädt eine einzelne Privatentnahme oder Privateinlage.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsGetByIdParams;\n query: BookkeepingCapitalMovementsGetByIdQuery;\n body: BookkeepingCapitalMovementsGetByIdBody;\n response: BookkeepingCapitalMovementsGetByIdResponse;\n responseData: BookkeepingCapitalMovementsGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_create\": {\n method: \"POST\",\n path: \"/bookkeeping/capital-movements\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Kapitalbewegung erstellen\",\n description: \"Erstellt eine neue Privatentnahme oder Privateinlage.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsCreateParams;\n query: BookkeepingCapitalMovementsCreateQuery;\n body: BookkeepingCapitalMovementsCreateBody;\n response: BookkeepingCapitalMovementsCreateResponse;\n responseData: BookkeepingCapitalMovementsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_update\": {\n method: \"PATCH\",\n path: \"/bookkeeping/capital-movements/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Kapitalbewegung aktualisieren\",\n description: \"Aktualisiert eine bestehende Kapitalbewegung. Bestätigte Einträge in gesperrten Perioden sind blockiert.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsUpdateParams;\n query: BookkeepingCapitalMovementsUpdateQuery;\n body: BookkeepingCapitalMovementsUpdateBody;\n response: BookkeepingCapitalMovementsUpdateResponse;\n responseData: BookkeepingCapitalMovementsUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/capital-movements/:id/confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Kapitalbewegung bestätigen\",\n description: \"Bestätigt die Datenqualität einer Kapitalbewegung.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsConfirmParams;\n query: BookkeepingCapitalMovementsConfirmQuery;\n body: BookkeepingCapitalMovementsConfirmBody;\n response: BookkeepingCapitalMovementsConfirmResponse;\n responseData: BookkeepingCapitalMovementsConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_cash_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/capital-movements/:id/cash-confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Barzahlung bestätigen\",\n description: \"Markiert eine Kapitalbewegung als bar/direkt abgewickelt. Setzt eurEffectiveDate für das Kapitalkonto.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsCashConfirmParams;\n query: BookkeepingCapitalMovementsCashConfirmQuery;\n body: BookkeepingCapitalMovementsCashConfirmBody;\n response: BookkeepingCapitalMovementsCashConfirmResponse;\n responseData: BookkeepingCapitalMovementsCashConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_revoke_cash_confirm\": {\n method: \"POST\",\n path: \"/bookkeeping/capital-movements/:id/revoke-cash-confirm\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Cash-Confirm widerrufen\",\n description: \"Widerruft die Barzahlungs-Bestätigung.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsRevokeCashConfirmParams;\n query: BookkeepingCapitalMovementsRevokeCashConfirmQuery;\n body: BookkeepingCapitalMovementsRevokeCashConfirmBody;\n response: BookkeepingCapitalMovementsRevokeCashConfirmResponse;\n responseData: BookkeepingCapitalMovementsRevokeCashConfirmResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_reverse\": {\n method: \"POST\",\n path: \"/bookkeeping/capital-movements/:id/reverse\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Kapitalbewegung stornieren (GoBD)\",\n description: \"Erstellt eine GoBD-konforme Gegenbuchung. Das Original wird als storniert markiert.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsReverseParams;\n query: BookkeepingCapitalMovementsReverseQuery;\n body: BookkeepingCapitalMovementsReverseBody;\n response: BookkeepingCapitalMovementsReverseResponse;\n responseData: BookkeepingCapitalMovementsReverseResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_capital_movements_delete\": {\n method: \"DELETE\",\n path: \"/bookkeeping/capital-movements/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"capital-movements\"],\n summary: \"Kapitalbewegung löschen\",\n description: \"Soft-Delete einer Kapitalbewegung (GoBD-konform).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingCapitalMovementsDeleteParams;\n query: BookkeepingCapitalMovementsDeleteQuery;\n body: BookkeepingCapitalMovementsDeleteBody;\n response: BookkeepingCapitalMovementsDeleteResponse;\n responseData: BookkeepingCapitalMovementsDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_iap_payouts_import\": {\n method: \"POST\",\n path: \"/bookkeeping/iap-payouts/import\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"iap-payouts\"],\n summary: \"Apple/Google IAP-Auszahlung importieren\",\n description: \"Importiert eine monatliche Apple- oder Google-IAP-Auszahlung. Idempotent über externalRef = rc_payout_<period>_<platform>. Default-Quelle ist die RevenueCat-API (env: REVENUECAT_SECRET_API_KEY, REVENUECAT_PROJECT_ID); alternativ kann der Caller die Werte im Body unter `period` direkt mitliefern (manueller CSV-Import-Fallback). Bucht eine bookkeepingRevenue mit vatTreatment=REVERSE_CHARGE_13B in der Kategorie saas_revenue_apple_iap bzw. saas_revenue_google_iap.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: BookkeepingIapPayoutsImportParams;\n query: BookkeepingIapPayoutsImportQuery;\n body: BookkeepingIapPayoutsImportBody;\n response: BookkeepingIapPayoutsImportResponse;\n responseData: BookkeepingIapPayoutsImportResponseData;\n },\n },\n // Contract source: explicit\n \"bookkeeping_iap_payouts_list\": {\n method: \"GET\",\n path: \"/bookkeeping/iap-payouts\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"bookkeeping\",\"iap-payouts\"],\n summary: \"IAP-Auszahlungs-Imports auflisten\",\n description: \"Liste aller importierten Apple/Google-Auszahlungs-Belege für die gewählte Firma. Optional filterbar nach Jahr und Plattform.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: BookkeepingIapPayoutsListParams;\n query: BookkeepingIapPayoutsListQuery;\n body: BookkeepingIapPayoutsListBody;\n response: BookkeepingIapPayoutsListResponse;\n responseData: BookkeepingIapPayoutsListResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type CurrencyRatesGetParams = {\n fromCurrency: string;\n toCurrency: string;\n};\nexport type CurrencyRatesGetQuery = {\n\n};\nexport type CurrencyRatesGetBody = undefined;\nexport type CurrencyRatesGetResponseData = {\n from: string;\n to: string;\n rate: number;\n provider: string;\n asOfDate: string;\n source: \"db\" | \"provider\";\n variance?: {\n spreadPct: number;\n min: number;\n max: number;\n providerRates: Array<{\n provider: string;\n rate: number;\n}>;\n};\n};\nexport type CurrencyRatesGetResponse = import(\"../types\").ApiEnvelope<CurrencyRatesGetResponseData>;\n\nexport const apiRoutes_currency_rates = {\n // Contract source: explicit\n \"currency_rates_get\": {\n method: \"GET\",\n path: \"/currency-rates/:fromCurrency/:toCurrency\",\n auth: {\"type\":\"x_api_key_http\"},\n meta: {\n tags: [\"currency-rates\"],\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: CurrencyRatesGetParams;\n query: CurrencyRatesGetQuery;\n body: CurrencyRatesGetBody;\n response: CurrencyRatesGetResponse;\n responseData: CurrencyRatesGetResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { CompanyEmployee, CompanyEmployeeAssignment, CustomerCompany, EmployeeSearchItem, FullCompany, PaginatedResult } from \"../../frontend-types\";\n\nexport type CustomerCompaniesEmployeesCreateParams = undefined;\nexport type CustomerCompaniesEmployeesCreateQuery = undefined;\nexport type CustomerCompaniesEmployeesCreateBody = {\n firstName?: string | null;\n lastName?: string | null;\n birthDate?: string | null;\n gender?: \"male\" | \"female\" | \"other\" | null;\n street?: string | null;\n streetNr?: string | null;\n zip?: string | null;\n city?: string | null;\n country?: string | null;\n email: string;\n phone?: string | null;\n externalUserId?: string | null;\n companyId?: number;\n companyRole?: string;\n};\nexport type CustomerCompaniesEmployeesCreateResponseData = CompanyEmployee;\nexport type CustomerCompaniesEmployeesCreateResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesEmployeesCreateResponseData>;\n\nexport type CustomerCompaniesEmployeesDeleteParams = {\n employeeId: number;\n};\nexport type CustomerCompaniesEmployeesDeleteQuery = undefined;\nexport type CustomerCompaniesEmployeesDeleteBody = undefined;\nexport type CustomerCompaniesEmployeesDeleteResponseData = null;\nexport type CustomerCompaniesEmployeesDeleteResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesEmployeesDeleteResponseData>;\n\nexport type CustomerCompaniesEmployeesUpdateParams = {\n employeeId: number;\n};\nexport type CustomerCompaniesEmployeesUpdateQuery = undefined;\nexport type CustomerCompaniesEmployeesUpdateBody = {\n firstName?: string | null;\n lastName?: string | null;\n birthDate?: string | null;\n gender?: \"male\" | \"female\" | \"other\" | null;\n street?: string | null;\n streetNr?: string | null;\n zip?: string | null;\n city?: string | null;\n country?: string | null;\n email?: string;\n phone?: string | null;\n externalUserId?: string | null;\n};\nexport type CustomerCompaniesEmployeesUpdateResponseData = CompanyEmployee;\nexport type CustomerCompaniesEmployeesUpdateResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesEmployeesUpdateResponseData>;\n\nexport type CustomerCompaniesEmployeesGetByIdParams = {\n employeeId: number;\n};\nexport type CustomerCompaniesEmployeesGetByIdQuery = undefined;\nexport type CustomerCompaniesEmployeesGetByIdBody = undefined;\nexport type CustomerCompaniesEmployeesGetByIdResponseData = CompanyEmployee;\nexport type CustomerCompaniesEmployeesGetByIdResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesEmployeesGetByIdResponseData>;\n\nexport type CustomerCompaniesEmployeesSearchParams = undefined;\nexport type CustomerCompaniesEmployeesSearchQuery = {\n q?: string;\n search?: string;\n page?: number;\n pageSize?: number;\n activeEmployeesOnly?: boolean;\n companyId?: number;\n};\nexport type CustomerCompaniesEmployeesSearchBody = undefined;\nexport type CustomerCompaniesEmployeesSearchResponseData = PaginatedResult<EmployeeSearchItem>;\nexport type CustomerCompaniesEmployeesSearchResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesEmployeesSearchResponseData>;\n\nexport type CustomerCompaniesEmployeeAssignmentsCreateParams = undefined;\nexport type CustomerCompaniesEmployeeAssignmentsCreateQuery = undefined;\nexport type CustomerCompaniesEmployeeAssignmentsCreateBody = {\n companyEmployeeId: number;\n companyId: number;\n companyRole?: string | null;\n status?: \"active\" | \"inactive\" | \"terminated\";\n validFrom?: string;\n validTo?: string | null;\n};\nexport type CustomerCompaniesEmployeeAssignmentsCreateResponseData = CompanyEmployeeAssignment;\nexport type CustomerCompaniesEmployeeAssignmentsCreateResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesEmployeeAssignmentsCreateResponseData>;\n\nexport type CustomerCompaniesEmployeeAssignmentsUpdateParams = {\n assignmentId: number;\n};\nexport type CustomerCompaniesEmployeeAssignmentsUpdateQuery = undefined;\nexport type CustomerCompaniesEmployeeAssignmentsUpdateBody = {\n forceUpdate?: boolean;\n companyId?: number;\n companyRole?: string | null;\n status?: \"active\" | \"inactive\" | \"terminated\";\n validTo?: string | null;\n};\nexport type CustomerCompaniesEmployeeAssignmentsUpdateResponseData = CompanyEmployeeAssignment;\nexport type CustomerCompaniesEmployeeAssignmentsUpdateResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesEmployeeAssignmentsUpdateResponseData>;\n\nexport type CustomerCompaniesEmployeeAssignmentsByCompanyIdParams = {\n companyId: number;\n};\nexport type CustomerCompaniesEmployeeAssignmentsByCompanyIdQuery = {\n activeEmployeesOnly?: boolean;\n};\nexport type CustomerCompaniesEmployeeAssignmentsByCompanyIdBody = undefined;\nexport type CustomerCompaniesEmployeeAssignmentsByCompanyIdResponseData = Array<CompanyEmployeeAssignment>;\nexport type CustomerCompaniesEmployeeAssignmentsByCompanyIdResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesEmployeeAssignmentsByCompanyIdResponseData>;\n\nexport type CustomerCompaniesEmployeeAssignmentsByEmployeeIdParams = {\n employeeId: number;\n};\nexport type CustomerCompaniesEmployeeAssignmentsByEmployeeIdQuery = {\n activeEmployeesOnly?: boolean;\n};\nexport type CustomerCompaniesEmployeeAssignmentsByEmployeeIdBody = undefined;\nexport type CustomerCompaniesEmployeeAssignmentsByEmployeeIdResponseData = Array<CompanyEmployeeAssignment>;\nexport type CustomerCompaniesEmployeeAssignmentsByEmployeeIdResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesEmployeeAssignmentsByEmployeeIdResponseData>;\n\nexport type CustomerCompaniesCreateParams = undefined;\nexport type CustomerCompaniesCreateQuery = undefined;\nexport type CustomerCompaniesCreateBody = {\n isFreelancer?: boolean;\n name: string;\n street?: string | null;\n streetNr?: string | null;\n zip?: string | null;\n city?: string | null;\n country?: string | null;\n email: string;\n phone?: string | null;\n ustId?: string | null;\n costCenterId?: number | null;\n defaultHourlyRate?: string | null;\n};\nexport type CustomerCompaniesCreateResponseData = CustomerCompany;\nexport type CustomerCompaniesCreateResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesCreateResponseData>;\n\nexport type CustomerCompaniesDeleteParams = {\n companyId: number;\n};\nexport type CustomerCompaniesDeleteQuery = undefined;\nexport type CustomerCompaniesDeleteBody = undefined;\nexport type CustomerCompaniesDeleteResponseData = null;\nexport type CustomerCompaniesDeleteResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesDeleteResponseData>;\n\nexport type CustomerCompaniesUpdateParams = {\n companyId: number;\n};\nexport type CustomerCompaniesUpdateQuery = undefined;\nexport type CustomerCompaniesUpdateBody = {\n isFreelancer?: boolean;\n name?: string;\n street?: string | null;\n streetNr?: string | null;\n zip?: string | null;\n city?: string | null;\n country?: string | null;\n email?: string;\n phone?: string | null;\n ustId?: string | null;\n costCenterId?: number | null;\n defaultHourlyRate?: string | null;\n};\nexport type CustomerCompaniesUpdateResponseData = CustomerCompany;\nexport type CustomerCompaniesUpdateResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesUpdateResponseData>;\n\nexport type CustomerCompaniesGetByIdParams = {\n companyId: number;\n};\nexport type CustomerCompaniesGetByIdQuery = undefined;\nexport type CustomerCompaniesGetByIdBody = undefined;\nexport type CustomerCompaniesGetByIdResponseData = CustomerCompany;\nexport type CustomerCompaniesGetByIdResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesGetByIdResponseData>;\n\nexport type CustomerCompaniesGetFullByIdParams = {\n companyId: number;\n};\nexport type CustomerCompaniesGetFullByIdQuery = {\n activeEmployeesOnly?: boolean;\n};\nexport type CustomerCompaniesGetFullByIdBody = undefined;\nexport type CustomerCompaniesGetFullByIdResponseData = FullCompany;\nexport type CustomerCompaniesGetFullByIdResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesGetFullByIdResponseData>;\n\nexport type CustomerCompaniesSearchParams = undefined;\nexport type CustomerCompaniesSearchQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n activeEmployeesOnly?: boolean;\n};\nexport type CustomerCompaniesSearchBody = undefined;\nexport type CustomerCompaniesSearchResponseData = PaginatedResult<FullCompany>;\nexport type CustomerCompaniesSearchResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesSearchResponseData>;\n\nexport const apiRoutes_customer_companies = {\n // Contract source: explicit\n \"customer_companies_employees_create\": {\n method: \"POST\",\n path: \"/customer-companies/employees/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\",\"employees\"],\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: CustomerCompaniesEmployeesCreateParams;\n query: CustomerCompaniesEmployeesCreateQuery;\n body: CustomerCompaniesEmployeesCreateBody;\n response: CustomerCompaniesEmployeesCreateResponse;\n responseData: CustomerCompaniesEmployeesCreateResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_employees_delete\": {\n method: \"DELETE\",\n path: \"/customer-companies/employees/delete/:employeeId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\",\"employees\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesEmployeesDeleteParams;\n query: CustomerCompaniesEmployeesDeleteQuery;\n body: CustomerCompaniesEmployeesDeleteBody;\n response: CustomerCompaniesEmployeesDeleteResponse;\n responseData: CustomerCompaniesEmployeesDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_employees_update\": {\n method: \"PUT\",\n path: \"/customer-companies/employees/update/:employeeId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\",\"employees\"],\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: CustomerCompaniesEmployeesUpdateParams;\n query: CustomerCompaniesEmployeesUpdateQuery;\n body: CustomerCompaniesEmployeesUpdateBody;\n response: CustomerCompaniesEmployeesUpdateResponse;\n responseData: CustomerCompaniesEmployeesUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_employees_get_by_id\": {\n method: \"GET\",\n path: \"/customer-companies/employees/byId/:employeeId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\",\"employees\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesEmployeesGetByIdParams;\n query: CustomerCompaniesEmployeesGetByIdQuery;\n body: CustomerCompaniesEmployeesGetByIdBody;\n response: CustomerCompaniesEmployeesGetByIdResponse;\n responseData: CustomerCompaniesEmployeesGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_employees_search\": {\n method: \"GET\",\n path: \"/customer-companies/employees/search\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\",\"employees\"],\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesEmployeesSearchParams;\n query: CustomerCompaniesEmployeesSearchQuery;\n body: CustomerCompaniesEmployeesSearchBody;\n response: CustomerCompaniesEmployeesSearchResponse;\n responseData: CustomerCompaniesEmployeesSearchResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_employee_assignments_create\": {\n method: \"POST\",\n path: \"/customer-companies/employee-assignments/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\",\"employee-assignments\"],\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: CustomerCompaniesEmployeeAssignmentsCreateParams;\n query: CustomerCompaniesEmployeeAssignmentsCreateQuery;\n body: CustomerCompaniesEmployeeAssignmentsCreateBody;\n response: CustomerCompaniesEmployeeAssignmentsCreateResponse;\n responseData: CustomerCompaniesEmployeeAssignmentsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_employee_assignments_update\": {\n method: \"PUT\",\n path: \"/customer-companies/employee-assignments/update/:assignmentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\",\"employee-assignments\"],\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: CustomerCompaniesEmployeeAssignmentsUpdateParams;\n query: CustomerCompaniesEmployeeAssignmentsUpdateQuery;\n body: CustomerCompaniesEmployeeAssignmentsUpdateBody;\n response: CustomerCompaniesEmployeeAssignmentsUpdateResponse;\n responseData: CustomerCompaniesEmployeeAssignmentsUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_employee_assignments_by_company_id\": {\n method: \"GET\",\n path: \"/customer-companies/employee-assignments/byCompanyId/:companyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\",\"employee-assignments\"],\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesEmployeeAssignmentsByCompanyIdParams;\n query: CustomerCompaniesEmployeeAssignmentsByCompanyIdQuery;\n body: CustomerCompaniesEmployeeAssignmentsByCompanyIdBody;\n response: CustomerCompaniesEmployeeAssignmentsByCompanyIdResponse;\n responseData: CustomerCompaniesEmployeeAssignmentsByCompanyIdResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_employee_assignments_by_employee_id\": {\n method: \"GET\",\n path: \"/customer-companies/employee-assignments/byEmployeeId/:employeeId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\",\"employee-assignments\"],\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesEmployeeAssignmentsByEmployeeIdParams;\n query: CustomerCompaniesEmployeeAssignmentsByEmployeeIdQuery;\n body: CustomerCompaniesEmployeeAssignmentsByEmployeeIdBody;\n response: CustomerCompaniesEmployeeAssignmentsByEmployeeIdResponse;\n responseData: CustomerCompaniesEmployeeAssignmentsByEmployeeIdResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_create\": {\n method: \"POST\",\n path: \"/customer-companies/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\"],\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: CustomerCompaniesCreateParams;\n query: CustomerCompaniesCreateQuery;\n body: CustomerCompaniesCreateBody;\n response: CustomerCompaniesCreateResponse;\n responseData: CustomerCompaniesCreateResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_delete\": {\n method: \"DELETE\",\n path: \"/customer-companies/delete/:companyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesDeleteParams;\n query: CustomerCompaniesDeleteQuery;\n body: CustomerCompaniesDeleteBody;\n response: CustomerCompaniesDeleteResponse;\n responseData: CustomerCompaniesDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_update\": {\n method: \"PUT\",\n path: \"/customer-companies/update/:companyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\"],\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: CustomerCompaniesUpdateParams;\n query: CustomerCompaniesUpdateQuery;\n body: CustomerCompaniesUpdateBody;\n response: CustomerCompaniesUpdateResponse;\n responseData: CustomerCompaniesUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_get_by_id\": {\n method: \"GET\",\n path: \"/customer-companies/byId/:companyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesGetByIdParams;\n query: CustomerCompaniesGetByIdQuery;\n body: CustomerCompaniesGetByIdBody;\n response: CustomerCompaniesGetByIdResponse;\n responseData: CustomerCompaniesGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_get_full_by_id\": {\n method: \"GET\",\n path: \"/customer-companies/byId/:companyId/full\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\"],\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesGetFullByIdParams;\n query: CustomerCompaniesGetFullByIdQuery;\n body: CustomerCompaniesGetFullByIdBody;\n response: CustomerCompaniesGetFullByIdResponse;\n responseData: CustomerCompaniesGetFullByIdResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_search\": {\n method: \"GET\",\n path: \"/customer-companies/search\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"customer-companies\"],\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesSearchParams;\n query: CustomerCompaniesSearchQuery;\n body: CustomerCompaniesSearchBody;\n response: CustomerCompaniesSearchResponse;\n responseData: CustomerCompaniesSearchResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { CustomerCompany, PaginatedResult } from \"../../frontend-types\";\n\nexport type CustomerCompaniesSearchExternalParams = undefined;\nexport type CustomerCompaniesSearchExternalQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n activeEmployeesOnly?: boolean;\n};\nexport type CustomerCompaniesSearchExternalBody = undefined;\nexport type CustomerCompaniesSearchExternalResponseData = PaginatedResult<CustomerCompany>;\nexport type CustomerCompaniesSearchExternalResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesSearchExternalResponseData>;\n\nexport type CustomerCompaniesGetByIdExternalParams = {\n companyId: number;\n};\nexport type CustomerCompaniesGetByIdExternalQuery = undefined;\nexport type CustomerCompaniesGetByIdExternalBody = undefined;\nexport type CustomerCompaniesGetByIdExternalResponseData = CustomerCompany;\nexport type CustomerCompaniesGetByIdExternalResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesGetByIdExternalResponseData>;\n\nexport type CustomerCompaniesCreateExternalParams = undefined;\nexport type CustomerCompaniesCreateExternalQuery = undefined;\nexport type CustomerCompaniesCreateExternalBody = {\n isFreelancer?: boolean;\n name: string;\n street?: string | null;\n streetNr?: string | null;\n zip?: string | null;\n city?: string | null;\n country?: string | null;\n email: string;\n phone?: string | null;\n ustId?: string | null;\n costCenterId?: number | null;\n defaultHourlyRate?: string | null;\n};\nexport type CustomerCompaniesCreateExternalResponseData = CustomerCompany;\nexport type CustomerCompaniesCreateExternalResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesCreateExternalResponseData>;\n\nexport type CustomerCompaniesUpdateExternalParams = {\n companyId: number;\n};\nexport type CustomerCompaniesUpdateExternalQuery = undefined;\nexport type CustomerCompaniesUpdateExternalBody = {\n isFreelancer?: boolean;\n name?: string;\n street?: string | null;\n streetNr?: string | null;\n zip?: string | null;\n city?: string | null;\n country?: string | null;\n email?: string;\n phone?: string | null;\n ustId?: string | null;\n costCenterId?: number | null;\n defaultHourlyRate?: string | null;\n};\nexport type CustomerCompaniesUpdateExternalResponseData = CustomerCompany;\nexport type CustomerCompaniesUpdateExternalResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesUpdateExternalResponseData>;\n\nexport type CustomerCompaniesDeleteExternalParams = {\n companyId: number;\n};\nexport type CustomerCompaniesDeleteExternalQuery = undefined;\nexport type CustomerCompaniesDeleteExternalBody = undefined;\nexport type CustomerCompaniesDeleteExternalResponseData = null;\nexport type CustomerCompaniesDeleteExternalResponse = import(\"../types\").ApiEnvelope<CustomerCompaniesDeleteExternalResponseData>;\n\nexport const apiRoutes_customer_companies_external = {\n // Contract source: explicit\n \"customer_companies_search_external\": {\n method: \"GET\",\n path: \"/customer-companies/external\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"companies:read\"]},\n meta: {\n tags: [\"customer-companies-external\"],\n summary: \"Search customer companies (external API)\",\n description: \"Paginated search over customer companies. Filters by name, email, phone, address fields. Cost center visibility is applied per token permissions.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesSearchExternalParams;\n query: CustomerCompaniesSearchExternalQuery;\n body: CustomerCompaniesSearchExternalBody;\n response: CustomerCompaniesSearchExternalResponse;\n responseData: CustomerCompaniesSearchExternalResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_get_by_id_external\": {\n method: \"GET\",\n path: \"/customer-companies/external/:companyId\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"companies:read\"]},\n meta: {\n tags: [\"customer-companies-external\"],\n summary: \"Get customer company by ID (external API)\",\n description: \"Returns a single customer company by ID. Company must belong to the token's managing company.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesGetByIdExternalParams;\n query: CustomerCompaniesGetByIdExternalQuery;\n body: CustomerCompaniesGetByIdExternalBody;\n response: CustomerCompaniesGetByIdExternalResponse;\n responseData: CustomerCompaniesGetByIdExternalResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_create_external\": {\n method: \"POST\",\n path: \"/customer-companies/external\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"companies:write\"]},\n meta: {\n tags: [\"customer-companies-external\"],\n summary: \"Create customer company (external API)\",\n description: \"Creates a new customer company. managingCompanyId is derived from the auth token. Required fields: name, email.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: CustomerCompaniesCreateExternalParams;\n query: CustomerCompaniesCreateExternalQuery;\n body: CustomerCompaniesCreateExternalBody;\n response: CustomerCompaniesCreateExternalResponse;\n responseData: CustomerCompaniesCreateExternalResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_update_external\": {\n method: \"PUT\",\n path: \"/customer-companies/external/:companyId\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"companies:write\"]},\n meta: {\n tags: [\"customer-companies-external\"],\n summary: \"Update customer company (external API)\",\n description: \"Updates an existing customer company. All fields are optional (partial update). Company must belong to the token's managing company.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: CustomerCompaniesUpdateExternalParams;\n query: CustomerCompaniesUpdateExternalQuery;\n body: CustomerCompaniesUpdateExternalBody;\n response: CustomerCompaniesUpdateExternalResponse;\n responseData: CustomerCompaniesUpdateExternalResponseData;\n },\n },\n // Contract source: explicit\n \"customer_companies_delete_external\": {\n method: \"DELETE\",\n path: \"/customer-companies/external/:companyId\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"admin\",\"scopes\":[\"companies:delete\"]},\n meta: {\n tags: [\"customer-companies-external\"],\n summary: \"Delete customer company (external API)\",\n description: \"Deletes a customer company. Company must belong to the token's managing company. Warning: this also removes employee assignments.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: CustomerCompaniesDeleteExternalParams;\n query: CustomerCompaniesDeleteExternalQuery;\n body: CustomerCompaniesDeleteExternalBody;\n response: CustomerCompaniesDeleteExternalResponse;\n responseData: CustomerCompaniesDeleteExternalResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { Document, DocumentAssignment, FullDocument } from \"../../frontend-types\";\n\nexport type DocumentsGetByIdParams = {\n documentId: number;\n};\nexport type DocumentsGetByIdQuery = undefined;\nexport type DocumentsGetByIdBody = undefined;\nexport type DocumentsGetByIdResponseData = FullDocument;\nexport type DocumentsGetByIdResponse = import(\"../types\").ApiEnvelope<DocumentsGetByIdResponseData>;\n\nexport type DocumentsGetFullByIdParams = {\n documentId: number;\n};\nexport type DocumentsGetFullByIdQuery = undefined;\nexport type DocumentsGetFullByIdBody = undefined;\nexport type DocumentsGetFullByIdResponseData = FullDocument;\nexport type DocumentsGetFullByIdResponse = import(\"../types\").ApiEnvelope<DocumentsGetFullByIdResponseData>;\n\nexport type DocumentsSearchParams = undefined;\nexport type DocumentsSearchQuery = {\n q?: string;\n ownerType?: \"company\" | \"user\" | \"invoice\" | \"internal\" | \"revenue\" | \"expense\" | \"asset\" | \"capital_movement\";\n ownerId?: number;\n page?: number;\n pageSize?: number;\n};\nexport type DocumentsSearchBody = undefined;\nexport type DocumentsSearchResponseData = { items: Array<Document>; total: number; page: number; pageSize: number };\nexport type DocumentsSearchResponse = import(\"../types\").ApiEnvelope<DocumentsSearchResponseData>;\n\nexport type DocumentsDownloadUrlParams = {\n documentId: number;\n};\nexport type DocumentsDownloadUrlQuery = {\n expiresInSec?: number;\n};\nexport type DocumentsDownloadUrlBody = undefined;\nexport type DocumentsDownloadUrlResponseData = string;\nexport type DocumentsDownloadUrlResponse = import(\"../types\").ApiEnvelope<DocumentsDownloadUrlResponseData>;\n\nexport type DocumentsStreamParams = {\n documentId: number;\n};\nexport type DocumentsStreamQuery = {\n expiresInSec?: number;\n};\nexport type DocumentsStreamBody = undefined;\nexport type DocumentsStreamResponseData = Blob;\nexport type DocumentsStreamResponse = Blob;\n\nexport type DocumentsCreateParams = undefined;\nexport type DocumentsCreateQuery = undefined;\nexport type DocumentsCreateBody = {\n ownerType?: \"company\" | \"user\" | \"invoice\" | \"internal\" | \"revenue\" | \"expense\" | \"asset\" | \"capital_movement\";\n ownerId?: number;\n};\nexport type DocumentsCreateResponseData = Document;\nexport type DocumentsCreateResponse = import(\"../types\").ApiEnvelope<DocumentsCreateResponseData>;\n\nexport type DocumentsAssignParams = undefined;\nexport type DocumentsAssignQuery = undefined;\nexport type DocumentsAssignBody = {\n documentId: number;\n ownerType: \"company\" | \"user\" | \"invoice\" | \"internal\" | \"revenue\" | \"expense\" | \"asset\" | \"capital_movement\";\n ownerId?: number;\n};\nexport type DocumentsAssignResponseData = DocumentAssignment;\nexport type DocumentsAssignResponse = import(\"../types\").ApiEnvelope<DocumentsAssignResponseData>;\n\nexport type DocumentsDeleteAssignmentParams = {\n assignmentId: number;\n};\nexport type DocumentsDeleteAssignmentQuery = undefined;\nexport type DocumentsDeleteAssignmentBody = undefined;\nexport type DocumentsDeleteAssignmentResponseData = null;\nexport type DocumentsDeleteAssignmentResponse = import(\"../types\").ApiEnvelope<DocumentsDeleteAssignmentResponseData>;\n\nexport type DocumentsDeleteParams = {\n documentId: number;\n};\nexport type DocumentsDeleteQuery = {\n force?: boolean;\n};\nexport type DocumentsDeleteBody = undefined;\nexport type DocumentsDeleteResponseData = null;\nexport type DocumentsDeleteResponse = import(\"../types\").ApiEnvelope<DocumentsDeleteResponseData>;\n\nexport type DocumentsSetLockParams = {\n documentId: number;\n};\nexport type DocumentsSetLockQuery = undefined;\nexport type DocumentsSetLockBody = {\n locked: boolean;\n};\nexport type DocumentsSetLockResponseData = Document;\nexport type DocumentsSetLockResponse = import(\"../types\").ApiEnvelope<DocumentsSetLockResponseData>;\n\nexport const apiRoutes_documents = {\n // Contract source: explicit\n \"documents_get_by_id\": {\n method: \"GET\",\n path: \"/documents/admin/byId/:documentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_access\"},\n meta: {\n tags: [\"documents\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: DocumentsGetByIdParams;\n query: DocumentsGetByIdQuery;\n body: DocumentsGetByIdBody;\n response: DocumentsGetByIdResponse;\n responseData: DocumentsGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"documents_get_full_by_id\": {\n method: \"GET\",\n path: \"/documents/admin/byId/:documentId/full\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_access\"},\n meta: {\n tags: [\"documents\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: DocumentsGetFullByIdParams;\n query: DocumentsGetFullByIdQuery;\n body: DocumentsGetFullByIdBody;\n response: DocumentsGetFullByIdResponse;\n responseData: DocumentsGetFullByIdResponseData;\n },\n },\n // Contract source: explicit\n \"documents_search\": {\n method: \"GET\",\n path: \"/documents/admin/search\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_access\"},\n meta: {\n tags: [\"documents\"],\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: DocumentsSearchParams;\n query: DocumentsSearchQuery;\n body: DocumentsSearchBody;\n response: DocumentsSearchResponse;\n responseData: DocumentsSearchResponseData;\n },\n },\n // Contract source: explicit\n \"documents_download_url\": {\n method: \"GET\",\n path: \"/documents/admin/byId/:documentId/download-url\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_access\"},\n meta: {\n tags: [\"documents\"],\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: DocumentsDownloadUrlParams;\n query: DocumentsDownloadUrlQuery;\n body: DocumentsDownloadUrlBody;\n response: DocumentsDownloadUrlResponse;\n responseData: DocumentsDownloadUrlResponseData;\n },\n },\n // Contract source: explicit\n \"documents_stream\": {\n method: \"GET\",\n path: \"/documents/admin/stream/:documentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_access\"},\n meta: {\n tags: [\"documents\"],\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: DocumentsStreamParams;\n query: DocumentsStreamQuery;\n body: DocumentsStreamBody;\n response: DocumentsStreamResponse;\n responseData: DocumentsStreamResponseData;\n },\n },\n // Contract source: explicit\n \"documents_create\": {\n method: \"POST\",\n path: \"/documents/admin/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_manage\"},\n meta: {\n tags: [\"documents\"],\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: DocumentsCreateParams;\n query: DocumentsCreateQuery;\n body: DocumentsCreateBody;\n response: DocumentsCreateResponse;\n responseData: DocumentsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"documents_assign\": {\n method: \"POST\",\n path: \"/documents/admin/assign\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_manage\"},\n meta: {\n tags: [\"documents\"],\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: DocumentsAssignParams;\n query: DocumentsAssignQuery;\n body: DocumentsAssignBody;\n response: DocumentsAssignResponse;\n responseData: DocumentsAssignResponseData;\n },\n },\n // Contract source: explicit\n \"documents_delete_assignment\": {\n method: \"DELETE\",\n path: \"/documents/admin/assignments/:assignmentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_manage\"},\n meta: {\n tags: [\"documents\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: DocumentsDeleteAssignmentParams;\n query: DocumentsDeleteAssignmentQuery;\n body: DocumentsDeleteAssignmentBody;\n response: DocumentsDeleteAssignmentResponse;\n responseData: DocumentsDeleteAssignmentResponseData;\n },\n },\n // Contract source: explicit\n \"documents_delete\": {\n method: \"DELETE\",\n path: \"/documents/admin/delete/:documentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_manage\"},\n meta: {\n tags: [\"documents\"],\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: DocumentsDeleteParams;\n query: DocumentsDeleteQuery;\n body: DocumentsDeleteBody;\n response: DocumentsDeleteResponse;\n responseData: DocumentsDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"documents_set_lock\": {\n method: \"PUT\",\n path: \"/documents/admin/lock/:documentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"documents_admin\"},\n meta: {\n tags: [\"documents\"],\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: DocumentsSetLockParams;\n query: DocumentsSetLockQuery;\n body: DocumentsSetLockBody;\n response: DocumentsSetLockResponse;\n responseData: DocumentsSetLockResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type DunningSuggestionsExternalParams = undefined;\nexport type DunningSuggestionsExternalQuery = {\n asOf?: string;\n limit?: number;\n};\nexport type DunningSuggestionsExternalBody = undefined;\nexport type DunningSuggestionsExternalResponseData = {\n asOf: string;\n items: Array<{\n invoiceId: number;\n invoiceNumber: string;\n status: string;\n dueDate: string;\n daysOverdue: number;\n currency: string;\n invoiceTotal: string;\n openAmount: string;\n suggestedLevel: \"level0\" | \"level1\" | \"level2\" | \"level3\" | null;\n latestNoticeLevel: \"level0\" | \"level1\" | \"level2\" | \"level3\" | null;\n latestNoticeAt: string | null;\n}>;\n};\nexport type DunningSuggestionsExternalResponse = import(\"../types\").ApiEnvelope<DunningSuggestionsExternalResponseData>;\n\nexport type DunningPreviewExternalParams = {\n invoiceId: number;\n};\nexport type DunningPreviewExternalQuery = undefined;\nexport type DunningPreviewExternalBody = {\n asOf?: string;\n level?: \"level0\" | \"level1\" | \"level2\" | \"level3\";\n};\nexport type DunningPreviewExternalResponseData = {\n invoiceId: number;\n invoiceNumber: string;\n dueDate: string;\n asOf: string;\n daysOverdue: number;\n currency: string;\n invoiceTotal: string;\n openAmount: string;\n level: \"level0\" | \"level1\" | \"level2\" | \"level3\";\n feeAmount: string;\n interestAmount: string;\n lumpSum40Amount: string;\n totalClaimed: string;\n statutoryRateUsed: string;\n baseRateUsed: string;\n notes: Array<string>;\n isPaymentReminder: boolean;\n};\nexport type DunningPreviewExternalResponse = import(\"../types\").ApiEnvelope<DunningPreviewExternalResponseData>;\n\nexport type DunningNoticePdfExternalParams = {\n noticeId: number;\n};\nexport type DunningNoticePdfExternalQuery = undefined;\nexport type DunningNoticePdfExternalBody = undefined;\nexport type DunningNoticePdfExternalResponseData = Blob;\nexport type DunningNoticePdfExternalResponse = Blob;\n\nexport type DunningNoticeDownloadExternalParams = {\n noticeId: number;\n};\nexport type DunningNoticeDownloadExternalQuery = undefined;\nexport type DunningNoticeDownloadExternalBody = undefined;\nexport type DunningNoticeDownloadExternalResponseData = Blob;\nexport type DunningNoticeDownloadExternalResponse = Blob;\n\nexport type DunningGetSettingsExternalParams = undefined;\nexport type DunningGetSettingsExternalQuery = {\n\n};\nexport type DunningGetSettingsExternalBody = undefined;\nexport type DunningGetSettingsExternalResponseData = {\n id: number;\n managingCompanyId: number;\n isEnabled: boolean;\n reminderEnabled: boolean;\n reminderAfterDays: number;\n level1AfterDays: number;\n level2AfterDays: number;\n level3AfterDays: number;\n feeLevel1: string;\n feeLevel2: string;\n feeLevel3: string;\n interestEnabled: boolean;\n baseRate: string;\n statutoryMarginB2B: string;\n statutoryMarginConsumer: string;\n lumpSum40Enabled: boolean;\n emailEnabled: boolean;\n emailFromName: string | null;\n emailReplyToAddress: string | null;\n emailSubjectLevel0: string | null;\n emailBodyLevel0: string | null;\n emailSubjectLevel1: string | null;\n emailBodyLevel1: string | null;\n emailSubjectLevel2: string | null;\n emailBodyLevel2: string | null;\n emailSubjectLevel3: string | null;\n emailBodyLevel3: string | null;\n};\nexport type DunningGetSettingsExternalResponse = import(\"../types\").ApiEnvelope<DunningGetSettingsExternalResponseData>;\n\nexport type DunningIssueExternalParams = {\n invoiceId: number;\n};\nexport type DunningIssueExternalQuery = undefined;\nexport type DunningIssueExternalBody = {\n asOf?: string;\n level: \"level0\" | \"level1\" | \"level2\" | \"level3\";\n delivery?: \"manual\" | \"email\" | \"letter\";\n subject?: string;\n body?: string;\n};\nexport type DunningIssueExternalResponseData = {\n notice: {\n id: number;\n managingCompanyId: number;\n invoiceId: number;\n documentId?: number | null;\n level: \"level1\" | \"level2\" | \"level3\";\n delivery: \"manual\" | \"email\" | \"letter\";\n issuedAt: string;\n issuedBy?: number | null;\n asOf: string;\n daysOverdue: number;\n invoiceTotal: string;\n openAmount: string;\n currency: string;\n interestAmount: string;\n feeAmount: string;\n lumpSum40Amount: string;\n totalClaimed: string;\n baseRateUsed?: string | null;\n statutoryRateUsed?: string | null;\n subject?: string | null;\n body?: string | null;\n createdAt: string;\n isPaymentReminder?: boolean;\n};\n preview: {\n invoiceId: number;\n invoiceNumber: string;\n dueDate: string;\n asOf: string;\n daysOverdue: number;\n currency: string;\n invoiceTotal: string;\n openAmount: string;\n level: \"level0\" | \"level1\" | \"level2\" | \"level3\";\n feeAmount: string;\n interestAmount: string;\n lumpSum40Amount: string;\n totalClaimed: string;\n statutoryRateUsed: string;\n baseRateUsed: string;\n notes: Array<string>;\n isPaymentReminder: boolean;\n};\n document: {\n id: number;\n managingCompanyId: number;\n costCenterId: number | null;\n createdAt: string;\n updatedAt: string | null;\n fileName: string;\n fileType: string;\n fileSizeBytes: number;\n s3Key: string;\n uploadedBy: number | null;\n isLocked: boolean;\n};\n};\nexport type DunningIssueExternalResponse = import(\"../types\").ApiEnvelope<DunningIssueExternalResponseData>;\n\nexport type DunningUpdateSettingsExternalParams = undefined;\nexport type DunningUpdateSettingsExternalQuery = undefined;\nexport type DunningUpdateSettingsExternalBody = {\n isEnabled?: boolean;\n reminderEnabled?: boolean;\n reminderAfterDays?: number;\n level1AfterDays?: number;\n level2AfterDays?: number;\n level3AfterDays?: number;\n feeLevel1?: string;\n feeLevel2?: string;\n feeLevel3?: string;\n interestEnabled?: boolean;\n baseRate?: string;\n statutoryMarginB2B?: string;\n statutoryMarginConsumer?: string;\n lumpSum40Enabled?: boolean;\n emailEnabled?: boolean;\n emailFromName?: string | null;\n emailReplyToAddress?: string | null;\n emailSubjectLevel0?: string | null;\n emailBodyLevel0?: string | null;\n emailSubjectLevel1?: string | null;\n emailBodyLevel1?: string | null;\n emailSubjectLevel2?: string | null;\n emailBodyLevel2?: string | null;\n emailSubjectLevel3?: string | null;\n emailBodyLevel3?: string | null;\n};\nexport type DunningUpdateSettingsExternalResponseData = {\n id: number;\n managingCompanyId: number;\n isEnabled: boolean;\n reminderEnabled: boolean;\n reminderAfterDays: number;\n level1AfterDays: number;\n level2AfterDays: number;\n level3AfterDays: number;\n feeLevel1: string;\n feeLevel2: string;\n feeLevel3: string;\n interestEnabled: boolean;\n baseRate: string;\n statutoryMarginB2B: string;\n statutoryMarginConsumer: string;\n lumpSum40Enabled: boolean;\n emailEnabled: boolean;\n emailFromName: string | null;\n emailReplyToAddress: string | null;\n emailSubjectLevel0: string | null;\n emailBodyLevel0: string | null;\n emailSubjectLevel1: string | null;\n emailBodyLevel1: string | null;\n emailSubjectLevel2: string | null;\n emailBodyLevel2: string | null;\n emailSubjectLevel3: string | null;\n emailBodyLevel3: string | null;\n};\nexport type DunningUpdateSettingsExternalResponse = import(\"../types\").ApiEnvelope<DunningUpdateSettingsExternalResponseData>;\n\nexport const apiRoutes_dunning_external = {\n // Contract source: explicit\n \"dunning_suggestions_external\": {\n method: \"GET\",\n path: \"/invoices/external/dunning/suggestions\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"dunning-external\"],\n summary: \"Get dunning candidates (external API)\",\n description: \"Returns a list of overdue invoices eligible for dunning, including suggested dunning level. Nothing is sent – this is for previewing which invoices need dunning action. Paid/draft/cancelled invoices are excluded.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: DunningSuggestionsExternalParams;\n query: DunningSuggestionsExternalQuery;\n body: DunningSuggestionsExternalBody;\n response: DunningSuggestionsExternalResponse;\n responseData: DunningSuggestionsExternalResponseData;\n },\n },\n // Contract source: explicit\n \"dunning_preview_external\": {\n method: \"POST\",\n path: \"/invoices/external/dunning/:invoiceId/preview\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"dunning-external\"],\n summary: \"Preview dunning fees and interest (external API)\",\n description: \"Calculates fees, interest, and lump sum for a specific invoice and dunning level (or lets the system suggest the level). No dunning notice is created. Blocked if invoice is paid, not overdue, or open amount is 0.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: DunningPreviewExternalParams;\n query: DunningPreviewExternalQuery;\n body: DunningPreviewExternalBody;\n response: DunningPreviewExternalResponse;\n responseData: DunningPreviewExternalResponseData;\n },\n },\n // Contract source: explicit\n \"dunning_notice_pdf_external\": {\n method: \"GET\",\n path: \"/invoices/external/dunning/notices/:noticeId/pdf\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"dunning-external\"],\n summary: \"View dunning notice PDF (external API)\",\n description: \"Streams the PDF of a dunning notice inline (Content-Type: application/pdf).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: DunningNoticePdfExternalParams;\n query: DunningNoticePdfExternalQuery;\n body: DunningNoticePdfExternalBody;\n response: DunningNoticePdfExternalResponse;\n responseData: DunningNoticePdfExternalResponseData;\n },\n },\n // Contract source: explicit\n \"dunning_notice_download_external\": {\n method: \"GET\",\n path: \"/invoices/external/dunning/notices/:noticeId/download\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"dunning-external\"],\n summary: \"Download dunning notice PDF (external API)\",\n description: \"Downloads the PDF of a dunning notice as attachment (Content-Disposition: attachment).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: DunningNoticeDownloadExternalParams;\n query: DunningNoticeDownloadExternalQuery;\n body: DunningNoticeDownloadExternalBody;\n response: DunningNoticeDownloadExternalResponse;\n responseData: DunningNoticeDownloadExternalResponseData;\n },\n },\n // Contract source: explicit\n \"dunning_get_settings_external\": {\n method: \"GET\",\n path: \"/invoices/external/dunning/settings\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"dunning-external\"],\n summary: \"Get dunning settings (external API)\",\n description: \"Returns the current dunning settings for the managing company (fee thresholds, interest rates, lump sum configuration).\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: DunningGetSettingsExternalParams;\n query: DunningGetSettingsExternalQuery;\n body: DunningGetSettingsExternalBody;\n response: DunningGetSettingsExternalResponse;\n responseData: DunningGetSettingsExternalResponseData;\n },\n },\n // Contract source: explicit\n \"dunning_issue_external\": {\n method: \"POST\",\n path: \"/invoices/external/dunning/:invoiceId/issue\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"invoices:write\"]},\n meta: {\n tags: [\"dunning-external\"],\n summary: \"Issue dunning notice (external API)\",\n description: \"Creates a dunning notice (Mahnschreiben) for an invoice at the specified level. Generates a PDF and creates an immutable document. delivery=manual/email/letter is recorded as metadata only (no auto-sending). Blocked if invoice is paid, not overdue, or open amount is 0.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: DunningIssueExternalParams;\n query: DunningIssueExternalQuery;\n body: DunningIssueExternalBody;\n response: DunningIssueExternalResponse;\n responseData: DunningIssueExternalResponseData;\n },\n },\n // Contract source: explicit\n \"dunning_update_settings_external\": {\n method: \"PUT\",\n path: \"/invoices/external/dunning/settings\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"admin\",\"scopes\":[\"invoices:write\"]},\n meta: {\n tags: [\"dunning-external\"],\n summary: \"Update dunning settings (external API)\",\n description: \"Updates the dunning settings (fees, interest rates, thresholds). Requires admin role. Returns the updated settings.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: DunningUpdateSettingsExternalParams;\n query: DunningUpdateSettingsExternalQuery;\n body: DunningUpdateSettingsExternalBody;\n response: DunningUpdateSettingsExternalResponse;\n responseData: DunningUpdateSettingsExternalResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type EnterpriseOnboardingStateGetParams = undefined;\nexport type EnterpriseOnboardingStateGetQuery = {\n\n};\nexport type EnterpriseOnboardingStateGetBody = undefined;\nexport type EnterpriseOnboardingStateGetResponseData = {\n /** ISO-Timestamp wann dieser State generiert wurde. */\n generatedAt: string;\n userId: number;\n context: {\n /** Aktuell ausgewaehlte Managing Company des Users. Null wenn noch keine ausgewaehlt. */\n selectedManagingCompanyId: number | null;\n /** Die Company fuer die der Onboarding-State gilt (i.d.R. = selectedManagingCompanyId). */\n targetManagingCompanyId: number | null;\n /** Anzahl aller Managing Companies des Users. */\n managingCompaniesCount: number;\n /** Davon mit Admin-Zugriff. */\n adminManagingCompaniesCount: number;\n};\n summary: {\n /** Fortschritt in Prozent (0–100) ueber alle Schritte. */\n percent: number;\n totalSteps: number;\n completedSteps: number;\n totalRequiredSteps: number;\n completedRequiredSteps: number;\n /** Anzahl blocking+required Schritte, die noch nicht abgeschlossen sind. Ist 0 sobald alle Pflichtschritte erledigt sind. */\n blockingOpenSteps: number;\n /** HAUPT-SCHALTER: true = Onboarding-Overlay/Banner anzeigen, false = Onboarding abgeschlossen, App normal nutzbar. Leite den User NIEMALS in einen Hard-Block wenn showOnboarding=false, egal was andere Felder sagen. Das Frontend sollte dieses */\n showOnboarding: boolean;\n /** Step-ID des naechsten empfohlenen Schritts. Null wenn alles erledigt. Nutze diesen Wert um den User direkt zum richtigen Tab/Screen zu navigieren. */\n recommendedNextStepId: string | null;\n};\n /** Alle Onboarding-Schritte in der empfohlenen Reihenfolge. Das Frontend kann diese Liste direkt als Stepper/Sidebar rendern. */\n steps: Array<{\n /** Eindeutige Step-ID. Moegliche Werte: company_create | company_profile | tax_setup | bank_setup | invoice_setup */\n id: string;\n /** Kurzname des Schritts fuer Ueberschriften / Stepper. */\n title: string;\n /** Laengere Erklaerung des Schritts fuer Hilfetexte / Tooltips. */\n description: string;\n /** Zusaetzlicher Kontext-Hinweis (z.B. rechtlicher Hinweis). Null wenn nicht vorhanden. */\n hint: string | null;\n /** true = Pflichtschritt – darf nicht dauerhaft uebersprungen werden. */\n required: boolean;\n /** true = dieser Schritt blockiert den App-Zugang solange er offen ist. blocking=true + required=true + nicht abgeschlossen => showOnboarding=true. */\n blocking: boolean;\n /** true = User darf diesen Schritt aktiv ueberspringen (POST /skip-step). */\n skippable: boolean;\n /** true = User hat diesen Schritt aktiv uebersprungen. */\n skipped: boolean;\n /** true = Schritt wird auch dann angezeigt, wenn er optional ist. */\n showByDefault: boolean;\n status: \"pending\" | \"completed\" | \"auto_completed\" | \"locked\" | \"skipped\";\n /** true = dieser Schritt wuerde normalerweise einen manuellen Abschluss-Klick benoetigen. Relevant fuer die UI: zeige dann einen 'Abschliessen'-Button, ABER nur wenn readyToComplete=true und acknowledged=false. Sobald acknowledged=true ist der */\n requiresAcknowledgement: boolean;\n /** true = alle Pflichtdaten sind vorhanden, der Schritt kann abgeschlossen werden. Der Server auto-completed solche Schritte beim naechsten GET /state automatisch. Das Frontend muss POST /complete-step NUR noch aufrufen, falls readyToComplete= */\n readyToComplete: boolean;\n /** true = Schritt ist serverseitig als abgeschlossen persistiert. Wenn acknowledged=true und status=completed/auto_completed/skipped: Schritt gilt als fertig, kein weiterer Aufruf noetig. */\n acknowledged: boolean;\n /** true = Schritt loest sich automatisch auf (z.B. company_create nach erster Firma-Erstellung). Kein Acknowledgement und kein Button noetig. */\n autoResolved: boolean;\n /** Detaillierte Checkliste mit einzelnen Datenpunkten. Null wenn kein Checklisten-Fortschritt verfuegbar. required=true Eintraege sind Pflicht, optional=false Eintraege sind nice-to-have. */\n checklist: Array<{\n /** Interner Bezeichner des Checklistenpunkts. */\n key: string;\n /** Menschenlesbarer Name des Checklistenpunkts, direkt im UI verwendbar. */\n label: string;\n /** Optionaler Hilfstext (Tooltip / Erklaerung). Null wenn nicht vorhanden. */\n hint: string | null;\n /** true = dieser Punkt ist erledigt. */\n done: boolean;\n /** true = Pflichtfeld, muss done=true sein damit der Schritt abschliessbar ist. */\n required: boolean;\n}> | null;\n /** Aggregierter Fortschritt (deprecated – bitte checklist verwenden). Null wenn kein Fortschritt verfuegbar. */\n progress: {\n /** Anzahl abgeschlossener Checklistenpunkte. */\n done: number;\n /** Gesamtanzahl Checklistenpunkte. */\n total: number;\n /** Labels der noch fehlenden Pflichtfelder – direkt im UI verwendbar. */\n missing: Array<string>;\n} | null;\n /** Liste der API-Operationen, die das Frontend fuer diesen Schritt benoetigt. Jeder Eintrag enthaelt key, method und path – damit weiss das Frontend genau, welchen Aufruf es machen muss. */\n operations: Array<{\n /** Eindeutiger Bezeichner der Operation (z.B. 'companyUpdate', 'logoUpload'). Das Frontend nutzt diesen Key um zu wissen, welchen API-Aufruf es fuer diesen Schritt braucht. */\n key: string;\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n /** API-Pfad der Operation, relativ zur API-Base-URL. */\n path: string;\n /** Menschenlesbare Beschreibung was diese Operation tut. */\n description?: string | null;\n}>;\n}>;\n /** Zusammengefuehrte Map aller Operations aus allen Steps (Dedupliziert). Praktisch um global nachzuschlagen welcher API-Call zu welchem key gehoert. */\n operations: Array<{\n /** Eindeutiger Bezeichner der Operation (z.B. 'companyUpdate', 'logoUpload'). Das Frontend nutzt diesen Key um zu wissen, welchen API-Aufruf es fuer diesen Schritt braucht. */\n key: string;\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n /** API-Pfad der Operation, relativ zur API-Base-URL. */\n path: string;\n /** Menschenlesbare Beschreibung was diese Operation tut. */\n description?: string | null;\n}>;\n};\nexport type EnterpriseOnboardingStateGetResponse = import(\"../types\").ApiEnvelope<EnterpriseOnboardingStateGetResponseData>;\n\nexport type EnterpriseOnboardingCompleteStepParams = undefined;\nexport type EnterpriseOnboardingCompleteStepQuery = undefined;\nexport type EnterpriseOnboardingCompleteStepBody = {\n stepId: \"company_create\" | \"company_profile\" | \"tax_setup\" | \"bank_setup\" | \"invoice_setup\";\n};\nexport type EnterpriseOnboardingCompleteStepResponseData = {\n accepted: boolean;\n stepId: string;\n status: \"pending\" | \"completed\" | \"auto_completed\" | \"locked\" | \"skipped\";\n blocking: boolean;\n reason: string | null;\n missing: Array<string>;\n recommendedNextStepId: string | null;\n state: {\n /** ISO-Timestamp wann dieser State generiert wurde. */\n generatedAt: string;\n userId: number;\n context: {\n /** Aktuell ausgewaehlte Managing Company des Users. Null wenn noch keine ausgewaehlt. */\n selectedManagingCompanyId: number | null;\n /** Die Company fuer die der Onboarding-State gilt (i.d.R. = selectedManagingCompanyId). */\n targetManagingCompanyId: number | null;\n /** Anzahl aller Managing Companies des Users. */\n managingCompaniesCount: number;\n /** Davon mit Admin-Zugriff. */\n adminManagingCompaniesCount: number;\n};\n summary: {\n /** Fortschritt in Prozent (0–100) ueber alle Schritte. */\n percent: number;\n totalSteps: number;\n completedSteps: number;\n totalRequiredSteps: number;\n completedRequiredSteps: number;\n /** Anzahl blocking+required Schritte, die noch nicht abgeschlossen sind. Ist 0 sobald alle Pflichtschritte erledigt sind. */\n blockingOpenSteps: number;\n /** HAUPT-SCHALTER: true = Onboarding-Overlay/Banner anzeigen, false = Onboarding abgeschlossen, App normal nutzbar. Leite den User NIEMALS in einen Hard-Block wenn showOnboarding=false, egal was andere Felder sagen. Das Frontend sollte dieses */\n showOnboarding: boolean;\n /** Step-ID des naechsten empfohlenen Schritts. Null wenn alles erledigt. Nutze diesen Wert um den User direkt zum richtigen Tab/Screen zu navigieren. */\n recommendedNextStepId: string | null;\n};\n /** Alle Onboarding-Schritte in der empfohlenen Reihenfolge. Das Frontend kann diese Liste direkt als Stepper/Sidebar rendern. */\n steps: Array<{\n /** Eindeutige Step-ID. Moegliche Werte: company_create | company_profile | tax_setup | bank_setup | invoice_setup */\n id: string;\n /** Kurzname des Schritts fuer Ueberschriften / Stepper. */\n title: string;\n /** Laengere Erklaerung des Schritts fuer Hilfetexte / Tooltips. */\n description: string;\n /** Zusaetzlicher Kontext-Hinweis (z.B. rechtlicher Hinweis). Null wenn nicht vorhanden. */\n hint: string | null;\n /** true = Pflichtschritt – darf nicht dauerhaft uebersprungen werden. */\n required: boolean;\n /** true = dieser Schritt blockiert den App-Zugang solange er offen ist. blocking=true + required=true + nicht abgeschlossen => showOnboarding=true. */\n blocking: boolean;\n /** true = User darf diesen Schritt aktiv ueberspringen (POST /skip-step). */\n skippable: boolean;\n /** true = User hat diesen Schritt aktiv uebersprungen. */\n skipped: boolean;\n /** true = Schritt wird auch dann angezeigt, wenn er optional ist. */\n showByDefault: boolean;\n status: \"pending\" | \"completed\" | \"auto_completed\" | \"locked\" | \"skipped\";\n /** true = dieser Schritt wuerde normalerweise einen manuellen Abschluss-Klick benoetigen. Relevant fuer die UI: zeige dann einen 'Abschliessen'-Button, ABER nur wenn readyToComplete=true und acknowledged=false. Sobald acknowledged=true ist der */\n requiresAcknowledgement: boolean;\n /** true = alle Pflichtdaten sind vorhanden, der Schritt kann abgeschlossen werden. Der Server auto-completed solche Schritte beim naechsten GET /state automatisch. Das Frontend muss POST /complete-step NUR noch aufrufen, falls readyToComplete= */\n readyToComplete: boolean;\n /** true = Schritt ist serverseitig als abgeschlossen persistiert. Wenn acknowledged=true und status=completed/auto_completed/skipped: Schritt gilt als fertig, kein weiterer Aufruf noetig. */\n acknowledged: boolean;\n /** true = Schritt loest sich automatisch auf (z.B. company_create nach erster Firma-Erstellung). Kein Acknowledgement und kein Button noetig. */\n autoResolved: boolean;\n /** Detaillierte Checkliste mit einzelnen Datenpunkten. Null wenn kein Checklisten-Fortschritt verfuegbar. required=true Eintraege sind Pflicht, optional=false Eintraege sind nice-to-have. */\n checklist: Array<{\n /** Interner Bezeichner des Checklistenpunkts. */\n key: string;\n /** Menschenlesbarer Name des Checklistenpunkts, direkt im UI verwendbar. */\n label: string;\n /** Optionaler Hilfstext (Tooltip / Erklaerung). Null wenn nicht vorhanden. */\n hint: string | null;\n /** true = dieser Punkt ist erledigt. */\n done: boolean;\n /** true = Pflichtfeld, muss done=true sein damit der Schritt abschliessbar ist. */\n required: boolean;\n}> | null;\n /** Aggregierter Fortschritt (deprecated – bitte checklist verwenden). Null wenn kein Fortschritt verfuegbar. */\n progress: {\n /** Anzahl abgeschlossener Checklistenpunkte. */\n done: number;\n /** Gesamtanzahl Checklistenpunkte. */\n total: number;\n /** Labels der noch fehlenden Pflichtfelder – direkt im UI verwendbar. */\n missing: Array<string>;\n} | null;\n /** Liste der API-Operationen, die das Frontend fuer diesen Schritt benoetigt. Jeder Eintrag enthaelt key, method und path – damit weiss das Frontend genau, welchen Aufruf es machen muss. */\n operations: Array<{\n /** Eindeutiger Bezeichner der Operation (z.B. 'companyUpdate', 'logoUpload'). Das Frontend nutzt diesen Key um zu wissen, welchen API-Aufruf es fuer diesen Schritt braucht. */\n key: string;\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n /** API-Pfad der Operation, relativ zur API-Base-URL. */\n path: string;\n /** Menschenlesbare Beschreibung was diese Operation tut. */\n description?: string | null;\n}>;\n}>;\n /** Zusammengefuehrte Map aller Operations aus allen Steps (Dedupliziert). Praktisch um global nachzuschlagen welcher API-Call zu welchem key gehoert. */\n operations: Array<{\n /** Eindeutiger Bezeichner der Operation (z.B. 'companyUpdate', 'logoUpload'). Das Frontend nutzt diesen Key um zu wissen, welchen API-Aufruf es fuer diesen Schritt braucht. */\n key: string;\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n /** API-Pfad der Operation, relativ zur API-Base-URL. */\n path: string;\n /** Menschenlesbare Beschreibung was diese Operation tut. */\n description?: string | null;\n}>;\n};\n};\nexport type EnterpriseOnboardingCompleteStepResponse = import(\"../types\").ApiEnvelope<EnterpriseOnboardingCompleteStepResponseData>;\n\nexport type EnterpriseOnboardingSkipStepParams = undefined;\nexport type EnterpriseOnboardingSkipStepQuery = undefined;\nexport type EnterpriseOnboardingSkipStepBody = {\n stepId: \"company_create\" | \"company_profile\" | \"tax_setup\" | \"bank_setup\" | \"invoice_setup\";\n};\nexport type EnterpriseOnboardingSkipStepResponseData = {\n skipped: boolean;\n stepId: string;\n status: \"pending\" | \"completed\" | \"auto_completed\" | \"locked\" | \"skipped\";\n reason: string | null;\n recommendedNextStepId: string | null;\n state: {\n /** ISO-Timestamp wann dieser State generiert wurde. */\n generatedAt: string;\n userId: number;\n context: {\n /** Aktuell ausgewaehlte Managing Company des Users. Null wenn noch keine ausgewaehlt. */\n selectedManagingCompanyId: number | null;\n /** Die Company fuer die der Onboarding-State gilt (i.d.R. = selectedManagingCompanyId). */\n targetManagingCompanyId: number | null;\n /** Anzahl aller Managing Companies des Users. */\n managingCompaniesCount: number;\n /** Davon mit Admin-Zugriff. */\n adminManagingCompaniesCount: number;\n};\n summary: {\n /** Fortschritt in Prozent (0–100) ueber alle Schritte. */\n percent: number;\n totalSteps: number;\n completedSteps: number;\n totalRequiredSteps: number;\n completedRequiredSteps: number;\n /** Anzahl blocking+required Schritte, die noch nicht abgeschlossen sind. Ist 0 sobald alle Pflichtschritte erledigt sind. */\n blockingOpenSteps: number;\n /** HAUPT-SCHALTER: true = Onboarding-Overlay/Banner anzeigen, false = Onboarding abgeschlossen, App normal nutzbar. Leite den User NIEMALS in einen Hard-Block wenn showOnboarding=false, egal was andere Felder sagen. Das Frontend sollte dieses */\n showOnboarding: boolean;\n /** Step-ID des naechsten empfohlenen Schritts. Null wenn alles erledigt. Nutze diesen Wert um den User direkt zum richtigen Tab/Screen zu navigieren. */\n recommendedNextStepId: string | null;\n};\n /** Alle Onboarding-Schritte in der empfohlenen Reihenfolge. Das Frontend kann diese Liste direkt als Stepper/Sidebar rendern. */\n steps: Array<{\n /** Eindeutige Step-ID. Moegliche Werte: company_create | company_profile | tax_setup | bank_setup | invoice_setup */\n id: string;\n /** Kurzname des Schritts fuer Ueberschriften / Stepper. */\n title: string;\n /** Laengere Erklaerung des Schritts fuer Hilfetexte / Tooltips. */\n description: string;\n /** Zusaetzlicher Kontext-Hinweis (z.B. rechtlicher Hinweis). Null wenn nicht vorhanden. */\n hint: string | null;\n /** true = Pflichtschritt – darf nicht dauerhaft uebersprungen werden. */\n required: boolean;\n /** true = dieser Schritt blockiert den App-Zugang solange er offen ist. blocking=true + required=true + nicht abgeschlossen => showOnboarding=true. */\n blocking: boolean;\n /** true = User darf diesen Schritt aktiv ueberspringen (POST /skip-step). */\n skippable: boolean;\n /** true = User hat diesen Schritt aktiv uebersprungen. */\n skipped: boolean;\n /** true = Schritt wird auch dann angezeigt, wenn er optional ist. */\n showByDefault: boolean;\n status: \"pending\" | \"completed\" | \"auto_completed\" | \"locked\" | \"skipped\";\n /** true = dieser Schritt wuerde normalerweise einen manuellen Abschluss-Klick benoetigen. Relevant fuer die UI: zeige dann einen 'Abschliessen'-Button, ABER nur wenn readyToComplete=true und acknowledged=false. Sobald acknowledged=true ist der */\n requiresAcknowledgement: boolean;\n /** true = alle Pflichtdaten sind vorhanden, der Schritt kann abgeschlossen werden. Der Server auto-completed solche Schritte beim naechsten GET /state automatisch. Das Frontend muss POST /complete-step NUR noch aufrufen, falls readyToComplete= */\n readyToComplete: boolean;\n /** true = Schritt ist serverseitig als abgeschlossen persistiert. Wenn acknowledged=true und status=completed/auto_completed/skipped: Schritt gilt als fertig, kein weiterer Aufruf noetig. */\n acknowledged: boolean;\n /** true = Schritt loest sich automatisch auf (z.B. company_create nach erster Firma-Erstellung). Kein Acknowledgement und kein Button noetig. */\n autoResolved: boolean;\n /** Detaillierte Checkliste mit einzelnen Datenpunkten. Null wenn kein Checklisten-Fortschritt verfuegbar. required=true Eintraege sind Pflicht, optional=false Eintraege sind nice-to-have. */\n checklist: Array<{\n /** Interner Bezeichner des Checklistenpunkts. */\n key: string;\n /** Menschenlesbarer Name des Checklistenpunkts, direkt im UI verwendbar. */\n label: string;\n /** Optionaler Hilfstext (Tooltip / Erklaerung). Null wenn nicht vorhanden. */\n hint: string | null;\n /** true = dieser Punkt ist erledigt. */\n done: boolean;\n /** true = Pflichtfeld, muss done=true sein damit der Schritt abschliessbar ist. */\n required: boolean;\n}> | null;\n /** Aggregierter Fortschritt (deprecated – bitte checklist verwenden). Null wenn kein Fortschritt verfuegbar. */\n progress: {\n /** Anzahl abgeschlossener Checklistenpunkte. */\n done: number;\n /** Gesamtanzahl Checklistenpunkte. */\n total: number;\n /** Labels der noch fehlenden Pflichtfelder – direkt im UI verwendbar. */\n missing: Array<string>;\n} | null;\n /** Liste der API-Operationen, die das Frontend fuer diesen Schritt benoetigt. Jeder Eintrag enthaelt key, method und path – damit weiss das Frontend genau, welchen Aufruf es machen muss. */\n operations: Array<{\n /** Eindeutiger Bezeichner der Operation (z.B. 'companyUpdate', 'logoUpload'). Das Frontend nutzt diesen Key um zu wissen, welchen API-Aufruf es fuer diesen Schritt braucht. */\n key: string;\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n /** API-Pfad der Operation, relativ zur API-Base-URL. */\n path: string;\n /** Menschenlesbare Beschreibung was diese Operation tut. */\n description?: string | null;\n}>;\n}>;\n /** Zusammengefuehrte Map aller Operations aus allen Steps (Dedupliziert). Praktisch um global nachzuschlagen welcher API-Call zu welchem key gehoert. */\n operations: Array<{\n /** Eindeutiger Bezeichner der Operation (z.B. 'companyUpdate', 'logoUpload'). Das Frontend nutzt diesen Key um zu wissen, welchen API-Aufruf es fuer diesen Schritt braucht. */\n key: string;\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n /** API-Pfad der Operation, relativ zur API-Base-URL. */\n path: string;\n /** Menschenlesbare Beschreibung was diese Operation tut. */\n description?: string | null;\n}>;\n};\n};\nexport type EnterpriseOnboardingSkipStepResponse = import(\"../types\").ApiEnvelope<EnterpriseOnboardingSkipStepResponseData>;\n\nexport const apiRoutes_enterprise = {\n // Contract source: explicit\n \"enterprise_onboarding_state_get\": {\n method: \"GET\",\n path: \"/apps/enterprise/onboarding/state\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"enterprise\",\"onboarding\"],\n summary: \"Enterprise Onboarding Status\",\n description: \"Liefert den vollstaendigen Onboarding-Status fuer das Frontend. WICHTIG – Frontend-Logik: (1) summary.showOnboarding ist der einzige Gate-Schalter. Ist er false → App normal nutzbar, kein Block. (2) Schritte mit readyToComplete=true werden vom Server beim naechsten Aufruf automatisch abgeschlossen – kein manueller POST /complete-step noetig. (3) Schritte mit acknowledged=true sind bereits persistiert – kein erneuter Aufruf noetig. (4) requiresAcknowledgement=true + readyToComplete=true + acknowledged=false → optionaler 'Abschliessen'-Button anzeigen (Komfort, kein Blocker). (5) Jeder Step enthaelt operations[] mit den exakten API-Calls (key, method, path) die fuer diesen Schritt noetig sind. (6) recommendedNextStepId zeigt den naechsten offenen Schritt – direkt zur Navigation nutzbar. Auth: Bearer + BookkeepingAccess-Permission.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: EnterpriseOnboardingStateGetParams;\n query: EnterpriseOnboardingStateGetQuery;\n body: EnterpriseOnboardingStateGetBody;\n response: EnterpriseOnboardingStateGetResponse;\n responseData: EnterpriseOnboardingStateGetResponseData;\n },\n },\n // Contract source: explicit\n \"enterprise_onboarding_complete_step\": {\n method: \"POST\",\n path: \"/apps/enterprise/onboarding/complete-step\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"enterprise\",\"onboarding\"],\n summary: \"Onboarding Step Validieren/Abschliessen\",\n description: \"Validiert serverseitig ob ein Schritt wirklich abgeschlossen ist und persistiert die Bestaetigung. Wann aufrufen: NUR wenn readyToComplete=true und acknowledged=false und der User explizit auf 'Abschliessen' geklickt hat. Schritte mit readyToComplete=true werden vom Server beim naechsten GET /state OHNEHIN automatisch abgeschlossen. Dieser Endpoint ist also ein optionaler Komfort-Call, kein Pflichtaufruf. Response: accepted=true wenn Schritt valide war, missing[] enthaelt fehlende Pflichtfelder falls accepted=false. state enthaelt den aktualisierten Gesamtstatus (direkt verwendbar, kein erneutes GET noetig).\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: EnterpriseOnboardingCompleteStepParams;\n query: EnterpriseOnboardingCompleteStepQuery;\n body: EnterpriseOnboardingCompleteStepBody;\n response: EnterpriseOnboardingCompleteStepResponse;\n responseData: EnterpriseOnboardingCompleteStepResponseData;\n },\n },\n // Contract source: explicit\n \"enterprise_onboarding_skip_step\": {\n method: \"POST\",\n path: \"/apps/enterprise/onboarding/skip-step\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"enterprise\",\"onboarding\"],\n summary: \"Onboarding Schritt Ueberspringen\",\n description: \"Markiert einen skippbaren Onboarding-Schritt als uebersprungen (skipped=true). Nur aufrufbar wenn step.skippable=true. Nicht-skippbare oder bereits abgeschlossene Schritte werden abgelehnt (skipped=false in Response). Uebersprungene Schritte gelten als 'erledigt' fuer blockingOpenSteps – der User kommt also weiter. Response enthaelt den aktualisierten State (direkt verwendbar, kein erneutes GET noetig).\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: EnterpriseOnboardingSkipStepParams;\n query: EnterpriseOnboardingSkipStepQuery;\n body: EnterpriseOnboardingSkipStepBody;\n response: EnterpriseOnboardingSkipStepResponse;\n responseData: EnterpriseOnboardingSkipStepResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { Role, RoleAssignment } from \"../../frontend-types\";\n\nexport type EntitlementsListParams = undefined;\nexport type EntitlementsListQuery = {\n\n};\nexport type EntitlementsListBody = undefined;\nexport type EntitlementsListResponseData = { app: { appId: string }; data: Array<{ externalIdentifier: string; entitlementType: 'role' | 'area'; externalName: string; externalDescription: string | null }>; total: number };\nexport type EntitlementsListResponse = import(\"../types\").ApiEnvelope<EntitlementsListResponseData>;\n\nexport type EntitlementsAssignParams = undefined;\nexport type EntitlementsAssignQuery = undefined;\nexport type EntitlementsAssignBody = {\n externalUserId: string;\n externalIdentifier: string;\n entitlementType: \"role\" | \"area\";\n validFrom?: string | null;\n expiresAt?: string | null;\n limits?: Record<string, {\n included: number;\n behavior: string;\n payAsYouGoActive: boolean;\n maxOverageQuantity?: number | null;\n overagePricePerUnit?: number | null;\n}>;\n credits?: Record<string, {\n remaining: number;\n type: string;\n pools?: Array<{\n poolId: number;\n creditType: string;\n totalCredits: number;\n usedCredits: number;\n remaining: number;\n expiresAt: string | null;\n}>;\n}>;\n};\nexport type EntitlementsAssignResponseData = { created: boolean; externalUserId: string; externalIdentifier: string; entitlementType: 'role' | 'area'; validFrom: Date; expiresAt: Date | null };\nexport type EntitlementsAssignResponse = import(\"../types\").ApiEnvelope<EntitlementsAssignResponseData>;\n\nexport type EntitlementsGetAllParams = undefined;\nexport type EntitlementsGetAllQuery = {\n\n};\nexport type EntitlementsGetAllBody = undefined;\nexport type EntitlementsGetAllResponseData = { app: { appId: string }; data: Array<{ externalIdentifier: string; entitlementType: 'role' | 'area'; externalName: string; externalDescription: string | null }>; total: number };\nexport type EntitlementsGetAllResponse = import(\"../types\").ApiEnvelope<EntitlementsGetAllResponseData>;\n\nexport type EntitlementsGetAssignedParams = undefined;\nexport type EntitlementsGetAssignedQuery = {\n userId?: string;\n};\nexport type EntitlementsGetAssignedBody = undefined;\nexport type EntitlementsGetAssignedResponseData = { data: RoleAssignment[]; total: number };\nexport type EntitlementsGetAssignedResponse = import(\"../types\").ApiEnvelope<EntitlementsGetAssignedResponseData>;\n\nexport type EntitlementsGetUserEntitlementsParams = {\n userId: string;\n};\nexport type EntitlementsGetUserEntitlementsQuery = undefined;\nexport type EntitlementsGetUserEntitlementsBody = undefined;\nexport type EntitlementsGetUserEntitlementsResponseData = { data: Role[]; total: number };\nexport type EntitlementsGetUserEntitlementsResponse = import(\"../types\").ApiEnvelope<EntitlementsGetUserEntitlementsResponseData>;\n\nexport type EntitlementsContextGetByShopAssignmentParams = {\n shopAssignmentId: string;\n};\nexport type EntitlementsContextGetByShopAssignmentQuery = undefined;\nexport type EntitlementsContextGetByShopAssignmentBody = undefined;\nexport type EntitlementsContextGetByShopAssignmentResponseData = { id: number } & Record<string, unknown>;\nexport type EntitlementsContextGetByShopAssignmentResponse = import(\"../types\").ApiEnvelope<EntitlementsContextGetByShopAssignmentResponseData>;\n\nexport type EntitlementsUsageOveragesPullParams = undefined;\nexport type EntitlementsUsageOveragesPullQuery = {\n since?: string;\n periodStart?: string;\n periodEnd?: string;\n limit?: number;\n};\nexport type EntitlementsUsageOveragesPullBody = undefined;\nexport type EntitlementsUsageOveragesPullResponseData = Array<Record<string, unknown>>;\nexport type EntitlementsUsageOveragesPullResponse = import(\"../types\").ApiEnvelope<EntitlementsUsageOveragesPullResponseData>;\n\nexport type EntitlementsGetStateParams = {\n userId: string;\n type: \"role\" | \"area\";\n identifier: string;\n};\nexport type EntitlementsGetStateQuery = undefined;\nexport type EntitlementsGetStateBody = undefined;\nexport type EntitlementsGetStateResponseData = { externalUserId: string; externalIdentifier: string; entitlementType: 'role' | 'area'; validFrom: Date; expiresAt: Date | null };\nexport type EntitlementsGetStateResponse = import(\"../types\").ApiEnvelope<EntitlementsGetStateResponseData>;\n\nexport type EntitlementsUpdateStateParams = {\n userId: string;\n type: \"role\" | \"area\";\n identifier: string;\n};\nexport type EntitlementsUpdateStateQuery = undefined;\nexport type EntitlementsUpdateStateBody = {\n validFrom?: string | null;\n expiresAt?: string | null;\n};\nexport type EntitlementsUpdateStateResponseData = { success: boolean; externalUserId: string; externalIdentifier: string; entitlementType: 'role' | 'area'; validFrom: Date; expiresAt: Date | null };\nexport type EntitlementsUpdateStateResponse = import(\"../types\").ApiEnvelope<EntitlementsUpdateStateResponseData>;\n\nexport type EntitlementsRevokeParams = {\n userId: string;\n type: \"role\" | \"area\";\n identifier: string;\n};\nexport type EntitlementsRevokeQuery = undefined;\nexport type EntitlementsRevokeBody = undefined;\nexport type EntitlementsRevokeResponseData = { success: boolean; revoked: boolean };\nexport type EntitlementsRevokeResponse = import(\"../types\").ApiEnvelope<EntitlementsRevokeResponseData>;\n\nexport type EntitlementsGetByIdParams = {\n id: number;\n};\nexport type EntitlementsGetByIdQuery = undefined;\nexport type EntitlementsGetByIdBody = undefined;\nexport type EntitlementsGetByIdResponseData = Role;\nexport type EntitlementsGetByIdResponse = import(\"../types\").ApiEnvelope<EntitlementsGetByIdResponseData>;\n\nexport const apiRoutes_entitlements = {\n // Contract source: explicit\n \"entitlements_list\": {\n method: \"GET\",\n path: \"/entitlements\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"List available entitlements\",\n description: \"Returns available entitlements for sync. Payload follows the external entitlements contract.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: EntitlementsListParams;\n query: EntitlementsListQuery;\n body: EntitlementsListBody;\n response: EntitlementsListResponse;\n responseData: EntitlementsListResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_assign\": {\n method: \"POST\",\n path: \"/entitlements\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Assign entitlement to user\",\n description: \"Assigns an entitlement to a user. Idempotent behavior: existing assignment is updated and returns 200.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: EntitlementsAssignParams;\n query: EntitlementsAssignQuery;\n body: EntitlementsAssignBody;\n response: EntitlementsAssignResponse;\n responseData: EntitlementsAssignResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_getAll\": {\n method: \"GET\",\n path: \"/entitlements/getAll\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Alias for listing entitlements\",\n description: \"Alias endpoint for backwards compatibility.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: EntitlementsGetAllParams;\n query: EntitlementsGetAllQuery;\n body: EntitlementsGetAllBody;\n response: EntitlementsGetAllResponse;\n responseData: EntitlementsGetAllResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_getAssigned\": {\n method: \"GET\",\n path: \"/entitlements/assigned\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Get role assignments (legacy)\",\n description: \"Legacy endpoint for active role assignments.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: EntitlementsGetAssignedParams;\n query: EntitlementsGetAssignedQuery;\n body: EntitlementsGetAssignedBody;\n response: EntitlementsGetAssignedResponse;\n responseData: EntitlementsGetAssignedResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_getUserEntitlements\": {\n method: \"GET\",\n path: \"/entitlements/user/:userId\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Get active user entitlements (legacy)\",\n description: \"Legacy endpoint returning active user roles with permissions.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: EntitlementsGetUserEntitlementsParams;\n query: EntitlementsGetUserEntitlementsQuery;\n body: EntitlementsGetUserEntitlementsBody;\n response: EntitlementsGetUserEntitlementsResponse;\n responseData: EntitlementsGetUserEntitlementsResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_context_get_by_shop_assignment\": {\n method: \"GET\",\n path: \"/entitlements/context/by-shop-assignment/:shopAssignmentId\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Get entitlement sync context by shop assignment id\",\n description: \"Returns the persisted entitlement-sync context row (shop linkage + local assignment references) for a given x-shop-assignment-id.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: EntitlementsContextGetByShopAssignmentParams;\n query: EntitlementsContextGetByShopAssignmentQuery;\n body: EntitlementsContextGetByShopAssignmentBody;\n response: EntitlementsContextGetByShopAssignmentResponse;\n responseData: EntitlementsContextGetByShopAssignmentResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_usage_overages_pull\": {\n method: \"GET\",\n path: \"/entitlements/usage-overages\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Pull usage overages\",\n description: \"Returns deterministic usage-overage events for shop-initiated pull billing sync. Endpoint is idempotent via stable externalEventId per event snapshot.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: EntitlementsUsageOveragesPullParams;\n query: EntitlementsUsageOveragesPullQuery;\n body: EntitlementsUsageOveragesPullBody;\n response: EntitlementsUsageOveragesPullResponse;\n responseData: EntitlementsUsageOveragesPullResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_get_state\": {\n method: \"GET\",\n path: \"/entitlements/:userId/:type/:identifier\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Get current entitlement state\",\n description: \"Returns the current entitlement assignment for one user + identifier tuple.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: EntitlementsGetStateParams;\n query: EntitlementsGetStateQuery;\n body: EntitlementsGetStateBody;\n response: EntitlementsGetStateResponse;\n responseData: EntitlementsGetStateResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_update_state\": {\n method: \"PUT\",\n path: \"/entitlements/:userId/:type/:identifier\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Update entitlement validity\",\n description: \"Updates (or creates) a single entitlement assignment for one user + identifier tuple.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: EntitlementsUpdateStateParams;\n query: EntitlementsUpdateStateQuery;\n body: EntitlementsUpdateStateBody;\n response: EntitlementsUpdateStateResponse;\n responseData: EntitlementsUpdateStateResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_revoke\": {\n method: \"DELETE\",\n path: \"/entitlements/:userId/:type/:identifier\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Revoke entitlement from user\",\n description: \"Revokes the entitlement assignment. Idempotent: missing assignment still returns success.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: EntitlementsRevokeParams;\n query: EntitlementsRevokeQuery;\n body: EntitlementsRevokeBody;\n response: EntitlementsRevokeResponse;\n responseData: EntitlementsRevokeResponseData;\n },\n },\n // Contract source: explicit\n \"entitlements_getById\": {\n method: \"GET\",\n path: \"/entitlements/:id\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":false,\"allowApiKey\":true},\n meta: {\n tags: [\"entitlements\"],\n summary: \"Get entitlement by role id (legacy)\",\n description: \"Legacy endpoint: returns sellable role details by numeric role id.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: EntitlementsGetByIdParams;\n query: EntitlementsGetByIdQuery;\n body: EntitlementsGetByIdBody;\n response: EntitlementsGetByIdResponse;\n responseData: EntitlementsGetByIdResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type ExportsDatevMetadataParams = undefined;\nexport type ExportsDatevMetadataQuery = import(\"../types\").ContractNotReady<\"Query not typed yet. Add DTO + validate({ query }) to the route (or explicitly declare none).\">;\nexport type ExportsDatevMetadataBody = undefined;\nexport type ExportsDatevMetadataResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type ExportsDatevMetadataResponse = import(\"../types\").ApiEnvelope<ExportsDatevMetadataResponseData>;\n\nexport type ExportsDatevBuchungsstapelParams = undefined;\nexport type ExportsDatevBuchungsstapelQuery = import(\"../types\").ContractNotReady<\"Query not typed yet. Add DTO + validate({ query }) to the route (or explicitly declare none).\">;\nexport type ExportsDatevBuchungsstapelBody = undefined;\nexport type ExportsDatevBuchungsstapelResponseData = import(\"../types\").ContractNotReady<\"Response type not ready. Use typeRef(\\\"...\\\") (preferred) or a concrete Zod schema for responses[].data.\">;\nexport type ExportsDatevBuchungsstapelResponse = import(\"../types\").ApiEnvelope<ExportsDatevBuchungsstapelResponseData>;\n\nexport const apiRoutes_exports = {\n // Contract source: explicit\n \"exports_datev_metadata\": {\n method: \"GET\",\n path: \"/exports/bookkeeping/datev/metadata\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"exports\",\"datev\"],\n summary: \"DATEV Export-Metadaten\",\n description: \"Gibt verfügbare Jahre und SKR-Optionen für den DATEV-Export zurück.\",\n },\n types: null as unknown as {\n params: ExportsDatevMetadataParams;\n query: ExportsDatevMetadataQuery;\n body: ExportsDatevMetadataBody;\n response: ExportsDatevMetadataResponse;\n responseData: ExportsDatevMetadataResponseData;\n },\n },\n // Contract source: explicit\n \"exports_datev_buchungsstapel\": {\n method: \"GET\",\n path: \"/exports/bookkeeping/datev/buchungsstapel\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"exports\",\"datev\"],\n summary: \"DATEV Buchungsstapel herunterladen\",\n description: \"Generiert und liefert einen DATEV-kompatiblen Buchungsstapel (Format EXTF, Version 12) als CSV. Enthält alle EÜR-wirksamen Einnahmen und Ausgaben für das angegebene Jahr/Monat. Query-Parameter: year (Pflicht), month (optional, 1-12), skr (optional, skr03|skr04).\",\n },\n types: null as unknown as {\n params: ExportsDatevBuchungsstapelParams;\n query: ExportsDatevBuchungsstapelQuery;\n body: ExportsDatevBuchungsstapelBody;\n response: ExportsDatevBuchungsstapelResponse;\n responseData: ExportsDatevBuchungsstapelResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type InternalUsersProvisionParams = undefined;\nexport type InternalUsersProvisionQuery = undefined;\nexport type InternalUsersProvisionBody = {\n externalUserId: string;\n email: string;\n emailVerifiedAt: string | null;\n firstName?: string | null;\n lastName?: string | null;\n name?: string | null;\n locale?: string;\n idempotencyKey?: string;\n};\nexport type InternalUsersProvisionResponseData = { userId: number; created: boolean; linked: boolean } & {};\nexport type InternalUsersProvisionResponse = InternalUsersProvisionResponseData;\n\nexport type InternalUsersSyncParams = undefined;\nexport type InternalUsersSyncQuery = undefined;\nexport type InternalUsersSyncBody = {\n externalUserId: string;\n fields: {\n email?: string;\n emailVerifiedAt?: string | null;\n firstName?: string | null;\n lastName?: string | null;\n name?: string | null;\n};\n sourceUpdatedAt: string;\n};\nexport type InternalUsersSyncResponseData = { outcome: 'updated' | 'skipped_stale'; userId: number };\nexport type InternalUsersSyncResponse = InternalUsersSyncResponseData;\n\nexport type InternalUsersDeleteParams = {\n externalUserId: string;\n};\nexport type InternalUsersDeleteQuery = undefined;\nexport type InternalUsersDeleteBody = undefined;\nexport type InternalUsersDeleteResponseData = { deleted: boolean; userId: number | null };\nexport type InternalUsersDeleteResponse = InternalUsersDeleteResponseData;\n\nexport const apiRoutes_internal = {\n // Contract source: explicit\n \"internal_users_provision\": {\n method: \"POST\",\n path: \"/internal/users/provision\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"internal\",\"users\"],\n summary: \"Idempotente Provisionierung: User-Anlage (oder Link via E-Mail-Match), Startrolle und App-Extras.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InternalUsersProvisionParams;\n query: InternalUsersProvisionQuery;\n body: InternalUsersProvisionBody;\n response: InternalUsersProvisionResponse;\n responseData: InternalUsersProvisionResponseData;\n },\n },\n // Contract source: explicit\n \"internal_users_sync\": {\n method: \"POST\",\n path: \"/internal/users/sync\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"internal\",\"users\"],\n summary: \"Update der Profil-Felder (Email/Name/Verify). Out-of-order-geschützt via sourceUpdatedAt-Vergleich.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InternalUsersSyncParams;\n query: InternalUsersSyncQuery;\n body: InternalUsersSyncBody;\n response: InternalUsersSyncResponse;\n responseData: InternalUsersSyncResponseData;\n },\n },\n // Contract source: explicit\n \"internal_users_delete\": {\n method: \"DELETE\",\n path: \"/internal/users/:externalUserId\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"internal\",\"users\"],\n summary: \"DSGVO Art. 17 Hard-Delete. Cascade über vorhandene FK-Constraints. Idempotent (200 mit deleted:false bei not-found).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InternalUsersDeleteParams;\n query: InternalUsersDeleteQuery;\n body: InternalUsersDeleteBody;\n response: InternalUsersDeleteResponse;\n responseData: InternalUsersDeleteResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { CustomerCompany, Invoice, PaginatedResult } from \"../../frontend-types\";\n\nexport type InvoiceDunningSuggestionsParams = undefined;\nexport type InvoiceDunningSuggestionsQuery = {\n asOf?: string;\n limit?: number;\n};\nexport type InvoiceDunningSuggestionsBody = undefined;\nexport type InvoiceDunningSuggestionsResponseData = {\n asOf: string;\n items: Array<{\n invoiceId: number;\n invoiceNumber: string;\n status: string;\n dueDate: string;\n daysOverdue: number;\n currency: string;\n invoiceTotal: string;\n openAmount: string;\n suggestedLevel: \"level0\" | \"level1\" | \"level2\" | \"level3\" | null;\n latestNoticeLevel: \"level0\" | \"level1\" | \"level2\" | \"level3\" | null;\n latestNoticeAt: string | null;\n}>;\n};\nexport type InvoiceDunningSuggestionsResponse = import(\"../types\").ApiEnvelope<InvoiceDunningSuggestionsResponseData>;\n\nexport type InvoiceDunningListNoticesParams = {\n invoiceId: number;\n};\nexport type InvoiceDunningListNoticesQuery = undefined;\nexport type InvoiceDunningListNoticesBody = undefined;\nexport type InvoiceDunningListNoticesResponseData = {\n invoiceId: number;\n notices: Array<{\n id: number;\n managingCompanyId: number;\n invoiceId: number;\n documentId?: number | null;\n level: \"level1\" | \"level2\" | \"level3\";\n delivery: \"manual\" | \"email\" | \"letter\";\n issuedAt: string;\n issuedBy?: number | null;\n asOf: string;\n daysOverdue: number;\n invoiceTotal: string;\n openAmount: string;\n currency: string;\n interestAmount: string;\n feeAmount: string;\n lumpSum40Amount: string;\n totalClaimed: string;\n baseRateUsed?: string | null;\n statutoryRateUsed?: string | null;\n subject?: string | null;\n body?: string | null;\n createdAt: string;\n isPaymentReminder?: boolean;\n}>;\n totalCount: number;\n};\nexport type InvoiceDunningListNoticesResponse = import(\"../types\").ApiEnvelope<InvoiceDunningListNoticesResponseData>;\n\nexport type InvoiceDunningPreviewParams = {\n invoiceId: number;\n};\nexport type InvoiceDunningPreviewQuery = undefined;\nexport type InvoiceDunningPreviewBody = {\n asOf?: string;\n level?: \"level0\" | \"level1\" | \"level2\" | \"level3\";\n};\nexport type InvoiceDunningPreviewResponseData = {\n invoiceId: number;\n invoiceNumber: string;\n dueDate: string;\n asOf: string;\n daysOverdue: number;\n currency: string;\n invoiceTotal: string;\n openAmount: string;\n level: \"level0\" | \"level1\" | \"level2\" | \"level3\";\n feeAmount: string;\n interestAmount: string;\n lumpSum40Amount: string;\n totalClaimed: string;\n statutoryRateUsed: string;\n baseRateUsed: string;\n notes: Array<string>;\n isPaymentReminder: boolean;\n};\nexport type InvoiceDunningPreviewResponse = import(\"../types\").ApiEnvelope<InvoiceDunningPreviewResponseData>;\n\nexport type InvoiceDunningIssueParams = {\n invoiceId: number;\n};\nexport type InvoiceDunningIssueQuery = undefined;\nexport type InvoiceDunningIssueBody = {\n asOf?: string;\n level: \"level0\" | \"level1\" | \"level2\" | \"level3\";\n delivery?: \"manual\" | \"email\" | \"letter\";\n subject?: string;\n body?: string;\n};\nexport type InvoiceDunningIssueResponseData = {\n notice: {\n id: number;\n managingCompanyId: number;\n invoiceId: number;\n documentId?: number | null;\n level: \"level1\" | \"level2\" | \"level3\";\n delivery: \"manual\" | \"email\" | \"letter\";\n issuedAt: string;\n issuedBy?: number | null;\n asOf: string;\n daysOverdue: number;\n invoiceTotal: string;\n openAmount: string;\n currency: string;\n interestAmount: string;\n feeAmount: string;\n lumpSum40Amount: string;\n totalClaimed: string;\n baseRateUsed?: string | null;\n statutoryRateUsed?: string | null;\n subject?: string | null;\n body?: string | null;\n createdAt: string;\n isPaymentReminder?: boolean;\n};\n preview: {\n invoiceId: number;\n invoiceNumber: string;\n dueDate: string;\n asOf: string;\n daysOverdue: number;\n currency: string;\n invoiceTotal: string;\n openAmount: string;\n level: \"level0\" | \"level1\" | \"level2\" | \"level3\";\n feeAmount: string;\n interestAmount: string;\n lumpSum40Amount: string;\n totalClaimed: string;\n statutoryRateUsed: string;\n baseRateUsed: string;\n notes: Array<string>;\n isPaymentReminder: boolean;\n};\n document: {\n id: number;\n managingCompanyId: number;\n costCenterId: number | null;\n createdAt: string;\n updatedAt: string | null;\n fileName: string;\n fileType: string;\n fileSizeBytes: number;\n s3Key: string;\n uploadedBy: number | null;\n isLocked: boolean;\n};\n};\nexport type InvoiceDunningIssueResponse = import(\"../types\").ApiEnvelope<InvoiceDunningIssueResponseData>;\n\nexport type InvoiceDunningNoticePdfParams = {\n noticeId: number;\n};\nexport type InvoiceDunningNoticePdfQuery = undefined;\nexport type InvoiceDunningNoticePdfBody = undefined;\nexport type InvoiceDunningNoticePdfResponseData = Blob;\nexport type InvoiceDunningNoticePdfResponse = Blob;\n\nexport type InvoiceDunningNoticeDownloadParams = {\n noticeId: number;\n};\nexport type InvoiceDunningNoticeDownloadQuery = undefined;\nexport type InvoiceDunningNoticeDownloadBody = undefined;\nexport type InvoiceDunningNoticeDownloadResponseData = Blob;\nexport type InvoiceDunningNoticeDownloadResponse = Blob;\n\nexport type InvoiceDunningDeleteNoticeParams = {\n invoiceId: string;\n noticeId: string;\n};\nexport type InvoiceDunningDeleteNoticeQuery = undefined;\nexport type InvoiceDunningDeleteNoticeBody = undefined;\nexport type InvoiceDunningDeleteNoticeResponseData = null;\nexport type InvoiceDunningDeleteNoticeResponse = import(\"../types\").ApiEnvelope<InvoiceDunningDeleteNoticeResponseData>;\n\nexport type InvoiceDunningGetSettingsParams = undefined;\nexport type InvoiceDunningGetSettingsQuery = {\n\n};\nexport type InvoiceDunningGetSettingsBody = undefined;\nexport type InvoiceDunningGetSettingsResponseData = {\n id: number;\n managingCompanyId: number;\n isEnabled: boolean;\n reminderEnabled: boolean;\n reminderAfterDays: number;\n level1AfterDays: number;\n level2AfterDays: number;\n level3AfterDays: number;\n feeLevel1: string;\n feeLevel2: string;\n feeLevel3: string;\n interestEnabled: boolean;\n baseRate: string;\n statutoryMarginB2B: string;\n statutoryMarginConsumer: string;\n lumpSum40Enabled: boolean;\n emailEnabled: boolean;\n emailFromName: string | null;\n emailReplyToAddress: string | null;\n emailSubjectLevel0: string | null;\n emailBodyLevel0: string | null;\n emailSubjectLevel1: string | null;\n emailBodyLevel1: string | null;\n emailSubjectLevel2: string | null;\n emailBodyLevel2: string | null;\n emailSubjectLevel3: string | null;\n emailBodyLevel3: string | null;\n};\nexport type InvoiceDunningGetSettingsResponse = import(\"../types\").ApiEnvelope<InvoiceDunningGetSettingsResponseData>;\n\nexport type InvoiceDunningUpdateSettingsParams = undefined;\nexport type InvoiceDunningUpdateSettingsQuery = undefined;\nexport type InvoiceDunningUpdateSettingsBody = {\n isEnabled?: boolean;\n reminderEnabled?: boolean;\n reminderAfterDays?: number;\n level1AfterDays?: number;\n level2AfterDays?: number;\n level3AfterDays?: number;\n feeLevel1?: string;\n feeLevel2?: string;\n feeLevel3?: string;\n interestEnabled?: boolean;\n baseRate?: string;\n statutoryMarginB2B?: string;\n statutoryMarginConsumer?: string;\n lumpSum40Enabled?: boolean;\n emailEnabled?: boolean;\n emailFromName?: string | null;\n emailReplyToAddress?: string | null;\n emailSubjectLevel0?: string | null;\n emailBodyLevel0?: string | null;\n emailSubjectLevel1?: string | null;\n emailBodyLevel1?: string | null;\n emailSubjectLevel2?: string | null;\n emailBodyLevel2?: string | null;\n emailSubjectLevel3?: string | null;\n emailBodyLevel3?: string | null;\n};\nexport type InvoiceDunningUpdateSettingsResponseData = {\n id: number;\n managingCompanyId: number;\n isEnabled: boolean;\n reminderEnabled: boolean;\n reminderAfterDays: number;\n level1AfterDays: number;\n level2AfterDays: number;\n level3AfterDays: number;\n feeLevel1: string;\n feeLevel2: string;\n feeLevel3: string;\n interestEnabled: boolean;\n baseRate: string;\n statutoryMarginB2B: string;\n statutoryMarginConsumer: string;\n lumpSum40Enabled: boolean;\n emailEnabled: boolean;\n emailFromName: string | null;\n emailReplyToAddress: string | null;\n emailSubjectLevel0: string | null;\n emailBodyLevel0: string | null;\n emailSubjectLevel1: string | null;\n emailBodyLevel1: string | null;\n emailSubjectLevel2: string | null;\n emailBodyLevel2: string | null;\n emailSubjectLevel3: string | null;\n emailBodyLevel3: string | null;\n};\nexport type InvoiceDunningUpdateSettingsResponse = import(\"../types\").ApiEnvelope<InvoiceDunningUpdateSettingsResponseData>;\n\nexport type InvoicesViewPdfParams = {\n invoiceId: number;\n};\nexport type InvoicesViewPdfQuery = {\n token: string;\n};\nexport type InvoicesViewPdfBody = undefined;\nexport type InvoicesViewPdfResponseData = Blob;\nexport type InvoicesViewPdfResponse = Blob;\n\nexport type InvoicesDownloadPdfParams = {\n invoiceId: number;\n};\nexport type InvoicesDownloadPdfQuery = {\n token: string;\n};\nexport type InvoicesDownloadPdfBody = undefined;\nexport type InvoicesDownloadPdfResponseData = Blob;\nexport type InvoicesDownloadPdfResponse = Blob;\n\nexport type InvoicesCreateManualParams = undefined;\nexport type InvoicesCreateManualQuery = undefined;\nexport type InvoicesCreateManualBody = {\n companyId?: number | null;\n costCenterId?: number | null;\n paymentAccountId?: number | null;\n bankFallbackAccountId?: number | null;\n customerName?: string | null;\n customerStreet?: string | null;\n customerStreetNr?: string | null;\n customerZip?: string | null;\n customerCity?: string | null;\n customerCountry?: string | null;\n customerEmail?: string | null;\n customerPhone?: string | null;\n customerUstId?: string | null;\n invoiceDate: string;\n dueDate: string;\n performedAt?: string | null;\n currency: string;\n notes?: string | null;\n paymentTermsDays?: number | null;\n paymentTermsText?: string | null;\n earlyPaymentDiscountPercent?: number | null;\n earlyPaymentDiscountDays?: number | null;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n customVatRate?: number;\n vatOverrideReason?: string;\n lineItems: Array<{\n title: string;\n description?: string | null;\n quantity: number;\n unitPriceNet: string;\n itemType?: string | null;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n taxRate?: number;\n}>;\n language?: string;\n issueImmediately?: boolean;\n generatePdf?: boolean;\n quoteHash: string;\n quoteVersion: string;\n};\nexport type InvoicesCreateManualResponseData = { invoice: Invoice; documentId: number; pdfUrl: string };\nexport type InvoicesCreateManualResponse = import(\"../types\").ApiEnvelope<InvoicesCreateManualResponseData>;\n\nexport type InvoicesSearchParams = undefined;\nexport type InvoicesSearchQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n status?: string;\n companyId?: number;\n documentType?: string;\n invoiceDateFrom?: string;\n invoiceDateTo?: string;\n dueDateFrom?: string;\n dueDateTo?: string;\n minTotal?: string;\n maxTotal?: string;\n currency?: string;\n sortBy?: \"createdAt\" | \"invoiceDate\" | \"dueDate\" | \"totalAmount\";\n sortDir?: \"asc\" | \"desc\";\n};\nexport type InvoicesSearchBody = undefined;\nexport type InvoicesSearchResponseData = PaginatedResult<Invoice & { corrections: Array<Pick<Invoice, 'id'|'invoiceNumber'|'status'|'totalAmount'|'currency'|'invoiceDate'|'s3Key'|'publicShareToken'> & { documentType: 'credit_note'|'cancellation' }> }>;\nexport type InvoicesSearchResponse = import(\"../types\").ApiEnvelope<InvoicesSearchResponseData>;\n\nexport type InvoicesListPendingParams = undefined;\nexport type InvoicesListPendingQuery = {\n\n};\nexport type InvoicesListPendingBody = undefined;\nexport type InvoicesListPendingResponseData = { total: number; invoices: Array<{ invoice: Invoice; company: CustomerCompany | null }> };\nexport type InvoicesListPendingResponse = import(\"../types\").ApiEnvelope<InvoicesListPendingResponseData>;\n\nexport type InvoicesListOverdueParams = undefined;\nexport type InvoicesListOverdueQuery = {\n\n};\nexport type InvoicesListOverdueBody = undefined;\nexport type InvoicesListOverdueResponseData = { total: number; invoices: Array<{ invoice: Invoice; company: CustomerCompany | null; daysOverdue: number }> };\nexport type InvoicesListOverdueResponse = import(\"../types\").ApiEnvelope<InvoicesListOverdueResponseData>;\n\nexport type InvoicesAnalysisParams = {\n invoiceId: number;\n};\nexport type InvoicesAnalysisQuery = undefined;\nexport type InvoicesAnalysisBody = undefined;\nexport type InvoicesAnalysisResponseData = { invoice: Invoice; company: CustomerCompany | null; marginAnalysis: null };\nexport type InvoicesAnalysisResponse = import(\"../types\").ApiEnvelope<InvoicesAnalysisResponseData>;\n\nexport type InvoicesCreditNotePreviewParams = {\n invoiceId: number;\n};\nexport type InvoicesCreditNotePreviewQuery = undefined;\nexport type InvoicesCreditNotePreviewBody = {\n mode?: \"full\" | \"partial\";\n reason: string;\n issueDate?: string;\n documentType?: \"credit_note\" | \"cancellation\";\n lineItems?: Array<{\n title: string;\n description?: string | null;\n quantity: number;\n unitPriceNet: string;\n itemType?: string | null;\n sortOrder?: number;\n}>;\n};\nexport type InvoicesCreditNotePreviewResponseData = {\n documentType: \"credit_note\" | \"cancellation\";\n invoice: {\n managingCompanyId: number;\n costCenterId: number | null;\n companyId: number | null;\n invoiceDate: string;\n dueDate: string;\n performedAt: string | null;\n currency: string;\n netAmount: string;\n taxAmount: string;\n taxRate: string | null;\n totalAmount: string;\n vatTreatment: any;\n vatLegalRef: string | null;\n vatNote: string | null;\n vatCustom: any;\n notes: string | null;\n correctionReason: string;\n correctsInvoiceId: number;\n};\n lineItems: Array<{\n itemType: string;\n title: string;\n description: string | null;\n unitPriceNet: string;\n quantity: number;\n lineNetAmount: string;\n lineGrossAmount: string;\n taxRate: string;\n lineTaxAmount: string;\n sortOrder?: number | null;\n}>;\n originalInvoice: {\n id: number;\n invoiceNumber: string;\n invoiceDate: string;\n totalAmount: string;\n currency: string;\n status: string;\n};\n};\nexport type InvoicesCreditNotePreviewResponse = import(\"../types\").ApiEnvelope<InvoicesCreditNotePreviewResponseData>;\n\nexport type InvoicesCreditNoteIssueParams = {\n invoiceId: number;\n};\nexport type InvoicesCreditNoteIssueQuery = undefined;\nexport type InvoicesCreditNoteIssueBody = {\n mode?: \"full\" | \"partial\";\n reason: string;\n issueDate?: string;\n documentType?: \"credit_note\" | \"cancellation\";\n lineItems?: Array<{\n title: string;\n description?: string | null;\n quantity: number;\n unitPriceNet: string;\n itemType?: string | null;\n sortOrder?: number;\n}>;\n};\nexport type InvoicesCreditNoteIssueResponseData = { invoice: Invoice; documentId: number; pdfUrl: string; originalInvoiceId?: number | null };\nexport type InvoicesCreditNoteIssueResponse = import(\"../types\").ApiEnvelope<InvoicesCreditNoteIssueResponseData>;\n\nexport type InvoicesStatusPolicyParams = {\n invoiceId: number;\n};\nexport type InvoicesStatusPolicyQuery = undefined;\nexport type InvoicesStatusPolicyBody = undefined;\nexport type InvoicesStatusPolicyResponseData = {\n invoiceId: number;\n documentType: \"invoice\" | \"credit_note\" | \"cancellation\";\n currentStatus: \"draft\" | \"issued\" | \"paid\" | \"overdue\" | \"cancelled\";\n allowedNextStatuses: Array<\"draft\" | \"issued\" | \"paid\" | \"overdue\" | \"cancelled\">;\n locked: boolean;\n lockReason?: string | null;\n flags: {\n hasAnyCorrection: boolean;\n hasCancellation: boolean;\n};\n actions: {\n canSetDraft: boolean;\n canSetIssued: boolean;\n canSetPaid: boolean;\n canSetOverdue: boolean;\n canSetCancelled: boolean;\n};\n};\nexport type InvoicesStatusPolicyResponse = import(\"../types\").ApiEnvelope<InvoicesStatusPolicyResponseData>;\n\nexport type InvoicesPaymentReconciliationParams = {\n invoiceId: number;\n};\nexport type InvoicesPaymentReconciliationQuery = undefined;\nexport type InvoicesPaymentReconciliationBody = undefined;\nexport type InvoicesPaymentReconciliationResponseData = {\n invoiceId: number;\n invoiceTotal: number;\n settlementTotal: number;\n openAmount: number;\n status: \"draft\" | \"issued\" | \"paid\" | \"overdue\" | \"cancelled\";\n paidSource: string | null;\n state: \"fully_settled_and_paid\" | \"fully_settled_but_not_paid\" | \"open\" | \"paid_but_underallocated\" | \"paid_marked_without_full_settlement\";\n needsAttention: boolean;\n uiHintDe: string;\n};\nexport type InvoicesPaymentReconciliationResponse = import(\"../types\").ApiEnvelope<InvoicesPaymentReconciliationResponseData>;\n\nexport type InvoicesGetByIdParams = {\n invoiceId: number;\n};\nexport type InvoicesGetByIdQuery = undefined;\nexport type InvoicesGetByIdBody = undefined;\nexport type InvoicesGetByIdResponseData = Invoice;\nexport type InvoicesGetByIdResponse = import(\"../types\").ApiEnvelope<InvoicesGetByIdResponseData>;\n\nexport type InvoicesUpdateStatusParams = {\n invoiceId: number;\n};\nexport type InvoicesUpdateStatusQuery = undefined;\nexport type InvoicesUpdateStatusBody = {\n status: \"draft\" | \"issued\" | \"paid\" | \"overdue\" | \"cancelled\";\n receivedAt?: string;\n paymentMethod?: \"cash\" | \"other\";\n};\nexport type InvoicesUpdateStatusResponseData = Invoice;\nexport type InvoicesUpdateStatusResponse = import(\"../types\").ApiEnvelope<InvoicesUpdateStatusResponseData>;\n\nexport type InvoicesDeleteParams = {\n invoiceId: number;\n};\nexport type InvoicesDeleteQuery = undefined;\nexport type InvoicesDeleteBody = undefined;\nexport type InvoicesDeleteResponseData = null;\nexport type InvoicesDeleteResponse = import(\"../types\").ApiEnvelope<InvoicesDeleteResponseData>;\n\nexport type InvoicesRepairPdfParams = {\n invoiceId: number;\n};\nexport type InvoicesRepairPdfQuery = undefined;\nexport type InvoicesRepairPdfBody = undefined;\nexport type InvoicesRepairPdfResponseData = {\n alreadyHadPdf: boolean;\n documentId: number;\n pdfUrl: string;\n};\nexport type InvoicesRepairPdfResponse = import(\"../types\").ApiEnvelope<InvoicesRepairPdfResponseData>;\n\nexport const apiRoutes_invoices = {\n // Contract source: explicit\n \"invoice_dunning_suggestions\": {\n method: \"GET\",\n path: \"/invoices/dunning/suggestions\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\",\"dunning\"],\n summary: \"Mahn-Vorschläge ermitteln\",\n description: \"Liefert eine Liste von Mahn-Kandidaten (inkl. vorgeschlagenem Mahn-Level) für einen Stichtag. Es wird nichts versendet – nur Vorschläge für manuelles Mahnen. Bezahlt/draft/cancelled werden serverseitig ausgeschlossen.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoiceDunningSuggestionsParams;\n query: InvoiceDunningSuggestionsQuery;\n body: InvoiceDunningSuggestionsBody;\n response: InvoiceDunningSuggestionsResponse;\n responseData: InvoiceDunningSuggestionsResponseData;\n },\n },\n // Contract source: explicit\n \"invoice_dunning_list_notices\": {\n method: \"GET\",\n path: \"/invoices/dunning/:invoiceId/notices\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\",\"dunning\"],\n summary: \"Mahn-Verlauf einer Rechnung\",\n description: \"Gibt alle Mahnschreiben und Zahlungserinnerungen (inkl. level0) zu einer Rechnung zurück, chronologisch aufsteigend. Zahlungserinnerungen sind am Flag 'isPaymentReminder: true' erkennbar.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoiceDunningListNoticesParams;\n query: InvoiceDunningListNoticesQuery;\n body: InvoiceDunningListNoticesBody;\n response: InvoiceDunningListNoticesResponse;\n responseData: InvoiceDunningListNoticesResponseData;\n },\n },\n // Contract source: explicit\n \"invoice_dunning_preview\": {\n method: \"POST\",\n path: \"/invoices/dunning/:invoiceId/preview\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\",\"dunning\"],\n summary: \"Mahn-Vorschau berechnen\",\n description: \"Berechnet Gebühren/Zinsen/Lump-Sum usw. für eine konkrete Rechnung und einen Mahn-Level (oder lässt das System den Level vorschlagen). Es wird noch kein Mahnschreiben erstellt. Blockiert, wenn Rechnung bezahlt/nicht überfällig/offener Betrag=0 ist.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoiceDunningPreviewParams;\n query: InvoiceDunningPreviewQuery;\n body: InvoiceDunningPreviewBody;\n response: InvoiceDunningPreviewResponse;\n responseData: InvoiceDunningPreviewResponseData;\n },\n },\n // Contract source: explicit\n \"invoice_dunning_issue\": {\n method: \"POST\",\n path: \"/invoices/dunning/:invoiceId/issue\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\",\"dunning\"],\n summary: \"Mahnstufe ausstellen (manuell)\",\n description: \"Erstellt ein Mahnschreiben (Notice) für eine Rechnung auf Basis des gewählten Levels. Kein Auto-Sending; delivery=manual/email/letter wird nur als Metadatum erfasst. Blockiert, wenn Rechnung bezahlt/nicht überfällig/offener Betrag=0 ist.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoiceDunningIssueParams;\n query: InvoiceDunningIssueQuery;\n body: InvoiceDunningIssueBody;\n response: InvoiceDunningIssueResponse;\n responseData: InvoiceDunningIssueResponseData;\n },\n },\n // Contract source: explicit\n \"invoice_dunning_notice_pdf\": {\n method: \"GET\",\n path: \"/invoices/dunning/notices/:noticeId/pdf\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\",\"dunning\"],\n summary: \"Mahnschreiben-PDF anzeigen\",\n description: \"Streamt das PDF eines Mahnschreibens (Notice) inline (Binary, application/pdf).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoiceDunningNoticePdfParams;\n query: InvoiceDunningNoticePdfQuery;\n body: InvoiceDunningNoticePdfBody;\n response: InvoiceDunningNoticePdfResponse;\n responseData: InvoiceDunningNoticePdfResponseData;\n },\n },\n // Contract source: explicit\n \"invoice_dunning_notice_download\": {\n method: \"GET\",\n path: \"/invoices/dunning/notices/:noticeId/download\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\",\"dunning\"],\n summary: \"Mahnschreiben-PDF herunterladen\",\n description: \"Lädt das PDF eines Mahnschreibens (Notice) als Download herunter (Binary, application/pdf).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoiceDunningNoticeDownloadParams;\n query: InvoiceDunningNoticeDownloadQuery;\n body: InvoiceDunningNoticeDownloadBody;\n response: InvoiceDunningNoticeDownloadResponse;\n responseData: InvoiceDunningNoticeDownloadResponseData;\n },\n },\n // Contract source: explicit\n \"invoice_dunning_delete_notice\": {\n method: \"DELETE\",\n path: \"/invoices/dunning/:invoiceId/notices/:noticeId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\",\"dunning\"],\n summary: \"Mahnschreiben stornieren/löschen\",\n description: \"Löscht ein fehlerhaftes Mahnschreiben aus dem Verlauf und entfernt das zugehörige PDF aus dem Speicher.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoiceDunningDeleteNoticeParams;\n query: InvoiceDunningDeleteNoticeQuery;\n body: InvoiceDunningDeleteNoticeBody;\n response: InvoiceDunningDeleteNoticeResponse;\n responseData: InvoiceDunningDeleteNoticeResponseData;\n },\n },\n // Contract source: explicit\n \"invoice_dunning_get_settings\": {\n method: \"GET\",\n path: \"/invoices/dunning/settings\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\",\"dunning\"],\n summary: \"Mahnwesen-Einstellungen lesen\",\n description: \"Gibt die aktuellen Mahnwesen-Einstellungen für das Unternehmen zurück (z.B. Gebühren/Schwellwerte/Templates).\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoiceDunningGetSettingsParams;\n query: InvoiceDunningGetSettingsQuery;\n body: InvoiceDunningGetSettingsBody;\n response: InvoiceDunningGetSettingsResponse;\n responseData: InvoiceDunningGetSettingsResponseData;\n },\n },\n // Contract source: explicit\n \"invoice_dunning_update_settings\": {\n method: \"PUT\",\n path: \"/invoices/dunning/settings\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\",\"dunning\"],\n summary: \"Mahnwesen-Einstellungen aktualisieren\",\n description: \"Aktualisiert die Mahnwesen-Einstellungen. Validierung erfolgt per DTO; Rückgabe ist der aktualisierte Settings-Stand.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoiceDunningUpdateSettingsParams;\n query: InvoiceDunningUpdateSettingsQuery;\n body: InvoiceDunningUpdateSettingsBody;\n response: InvoiceDunningUpdateSettingsResponse;\n responseData: InvoiceDunningUpdateSettingsResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_view_pdf\": {\n method: \"GET\",\n path: \"/invoices/:invoiceId/pdf\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Rechnungs-PDF im Browser anzeigen\",\n description: \"Gibt das PDF der Rechnung als Binary-Stream zurück (Content-Type: application/pdf). Aktuell public – sollte langfristig durch Token/Signatur geschützt werden.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesViewPdfParams;\n query: InvoicesViewPdfQuery;\n body: InvoicesViewPdfBody;\n response: InvoicesViewPdfResponse;\n responseData: InvoicesViewPdfResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_download_pdf\": {\n method: \"GET\",\n path: \"/invoices/:invoiceId/download\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Rechnungs-PDF herunterladen\",\n description: \"Gibt das PDF der Rechnung als Download zurück (Binary). Aktuell public – sollte langfristig durch Token/Signatur geschützt werden.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesDownloadPdfParams;\n query: InvoicesDownloadPdfQuery;\n body: InvoicesDownloadPdfBody;\n response: InvoicesDownloadPdfResponse;\n responseData: InvoicesDownloadPdfResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_create_manual\": {\n method: \"POST\",\n path: \"/invoices/manual\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Manuelle Rechnung erstellen\",\n description: \"Erstellt eine neue Rechnung inkl. zugehörigem Dokument und liefert eine PDF-URL zurück. Validierung erfolgt via DTO; Auth: eingeloggter Benutzer.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoicesCreateManualParams;\n query: InvoicesCreateManualQuery;\n body: InvoicesCreateManualBody;\n response: InvoicesCreateManualResponse;\n responseData: InvoicesCreateManualResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_search\": {\n method: \"GET\",\n path: \"/invoices\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Rechnungen suchen/listen\",\n description: \"Paginierte Suche über Rechnungen. Standardmäßig werden nur Original-Rechnungen (documentType=invoice) paginiert; Korrekturdokumente (GS/ST) sind als corrections[] direkt auf der jeweiligen Rechnung eingebettet. Pagination-Limits gelten nur für Original-Rechnungen. Suche nach einer Korrekturnummer (z.B. 'GS-2026') liefert die zugehörige Original-Rechnung. Mit ?documentType=credit_note,cancellation kann ein flaches Listing nur der Korrekturdokumente abgerufen werden.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesSearchParams;\n query: InvoicesSearchQuery;\n body: InvoicesSearchBody;\n response: InvoicesSearchResponse;\n responseData: InvoicesSearchResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_list_pending\": {\n method: \"GET\",\n path: \"/invoices/pending\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Offene Rechnungen (pending) listen\",\n description: \"Liefert eine zusammengefasste Liste offener Rechnungen inkl. optionaler Company-Infos (für Buchhaltung/Backoffice). Keine Query-Parameter.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesListPendingParams;\n query: InvoicesListPendingQuery;\n body: InvoicesListPendingBody;\n response: InvoicesListPendingResponse;\n responseData: InvoicesListPendingResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_list_overdue\": {\n method: \"GET\",\n path: \"/invoices/overdue\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Überfällige Rechnungen listen\",\n description: \"Liefert überfällige Rechnungen inkl. daysOverdue (Tage überfällig) – für Mahnwesen/Monitoring. Keine Query-Parameter.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesListOverdueParams;\n query: InvoicesListOverdueQuery;\n body: InvoicesListOverdueBody;\n response: InvoicesListOverdueResponse;\n responseData: InvoicesListOverdueResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_analysis\": {\n method: \"GET\",\n path: \"/invoices/:invoiceId/analysis\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Rechnungs-Analyse abrufen\",\n description: \"Liefert Analyse-Informationen zur Rechnung (z.B. Company-Bezug; marginAnalysis aktuell null/placeholder). Für Buchhaltung/Backoffice.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesAnalysisParams;\n query: InvoicesAnalysisQuery;\n body: InvoicesAnalysisBody;\n response: InvoicesAnalysisResponse;\n responseData: InvoicesAnalysisResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_credit_note_preview\": {\n method: \"POST\",\n path: \"/invoices/:invoiceId/credit-note/preview\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Gutschrift-Vorschau (Credit Note) erstellen\",\n description: \"Erzeugt eine Vorschau für eine GoBD-konforme Gutschrift/Storno-Rechnung basierend auf einer bestehenden Rechnung. Es wird noch nichts persistiert. `issueDate` ist optional (wenn nicht angegeben, setzt der Server es auf 'jetzt' – Backdating nur innerhalb nicht gesperrter Perioden möglich).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoicesCreditNotePreviewParams;\n query: InvoicesCreditNotePreviewQuery;\n body: InvoicesCreditNotePreviewBody;\n response: InvoicesCreditNotePreviewResponse;\n responseData: InvoicesCreditNotePreviewResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_credit_note_issue\": {\n method: \"POST\",\n path: \"/invoices/:invoiceId/credit-note/issue\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Gutschrift ausstellen (Credit Note issue)\",\n description: \"Stellt eine GoBD-konforme Gutschrift/Storno-Rechnung aus, erzeugt Dokument + PDF und gibt die neue Rechnung zurück. `issueDate` ist optional (Default: Server-Zeitpunkt). Kann optional die OriginalInvoice referenzieren.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoicesCreditNoteIssueParams;\n query: InvoicesCreditNoteIssueQuery;\n body: InvoicesCreditNoteIssueBody;\n response: InvoicesCreditNoteIssueResponse;\n responseData: InvoicesCreditNoteIssueResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_status_policy\": {\n method: \"GET\",\n path: \"/invoices/:invoiceId/status-policy\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Erlaubte Status-Transitions (Policy) abrufen\",\n description: \"Gibt für eine Rechnung die erlaubten Statuswechsel/Actions zurück (State-Machine). Nutzt dieselben Regeln wie das Status-Update (inkl. Korrektur-/Storno-Logik und Buchhaltungs-Locks).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesStatusPolicyParams;\n query: InvoicesStatusPolicyQuery;\n body: InvoicesStatusPolicyBody;\n response: InvoicesStatusPolicyResponse;\n responseData: InvoicesStatusPolicyResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_payment_reconciliation\": {\n method: \"GET\",\n path: \"/invoices/:invoiceId/payment-reconciliation\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Abgleich Rechnung ↔ Zahlungszuordnungen\",\n description: \"Liefert Rechnungsbetrag, Summe der Zuordnungen (gleiche Logik wie Mahnung), offenen Betrag und einen klaren Status für die UI (ohne manuelle IDs). Hilft Inkonsistenzen zwischen Status „bezahlt“ und Bankzuordnung zu erkennen.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesPaymentReconciliationParams;\n query: InvoicesPaymentReconciliationQuery;\n body: InvoicesPaymentReconciliationBody;\n response: InvoicesPaymentReconciliationResponse;\n responseData: InvoicesPaymentReconciliationResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_get_by_id\": {\n method: \"GET\",\n path: \"/invoices/:invoiceId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Rechnung nach ID abrufen\",\n description: \"Liefert die Rechnung (DB-Daten) für eine Detailansicht. Für PDF bitte die PDF-Endpoints verwenden. Auth: eingeloggter Benutzer.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesGetByIdParams;\n query: InvoicesGetByIdQuery;\n body: InvoicesGetByIdBody;\n response: InvoicesGetByIdResponse;\n responseData: InvoicesGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_update_status\": {\n method: \"PUT\",\n path: \"/invoices/:invoiceId/status\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Rechnungsstatus ändern\",\n description: \"Ändert den Status einer Rechnung. Hinweis: 'cancelled' ist nur für Entwürfe (draft) gedacht. Für Korrekturen ausgestellter Rechnungen (GoBD-konform) bitte die Gutschrift/Storno-Endpoints verwenden; das wird serverseitig enforced. Auth: eingeloggter Benutzer. Eingabe wird per DTO validiert.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoicesUpdateStatusParams;\n query: InvoicesUpdateStatusQuery;\n body: InvoicesUpdateStatusBody;\n response: InvoicesUpdateStatusResponse;\n responseData: InvoicesUpdateStatusResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_delete\": {\n method: \"DELETE\",\n path: \"/invoices/:invoiceId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Rechnung löschen\",\n description: \"Löscht eine Rechnung (Server entscheidet über erlaubte Löschregeln). Auth: eingeloggter Benutzer.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesDeleteParams;\n query: InvoicesDeleteQuery;\n body: InvoicesDeleteBody;\n response: InvoicesDeleteResponse;\n responseData: InvoicesDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_repair_pdf\": {\n method: \"POST\",\n path: \"/invoices/:invoiceId/repair-pdf\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"invoices\"],\n summary: \"Fehlendes Rechnungs-PDF neu generieren\",\n description: \"Generiert das PDF für eine Rechnung neu, falls es fehlt. Erlaubte Zustände: issued, paid, overdue sowie alle Korrekturdokumente (credit_note, cancellation). Nicht erlaubt: draft (PDF wird erst beim Ausstellen erstellt) und cancelled. Idempotent – gibt zurück ob PDF bereits vorhanden war. Auth: eingeloggter Benutzer.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesRepairPdfParams;\n query: InvoicesRepairPdfQuery;\n body: InvoicesRepairPdfBody;\n response: InvoicesRepairPdfResponse;\n responseData: InvoicesRepairPdfResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { CustomerCompany, Invoice, PaginatedResult } from \"../../frontend-types\";\n\nexport type InvoicesPaymentEvidenceExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesPaymentEvidenceExternalQuery = undefined;\nexport type InvoicesPaymentEvidenceExternalBody = undefined;\nexport type InvoicesPaymentEvidenceExternalResponseData = {\n invoiceId: number;\n invoiceNumber: string;\n currency: string;\n invoiceStatus: string;\n paidSource: string | null;\n receivingAccountId: number | null;\n invoiceAmount: string;\n bankReceivedAmount: string;\n bankRefundedAmount: string;\n bankNetAmount: string;\n nonCashSettlementAmount: string;\n outstandingBankAmount: string;\n overpaidBankAmount: string;\n state: \"unpaid\" | \"partial\" | \"covered\" | \"overpaid\" | \"review_required\" | \"ineligible\";\n bankPaymentConfirmed: boolean;\n issues: Array<\"missing_receiving_account\" | \"invalid_invoice_amount\" | \"ineligible_invoice\" | \"missing_payment\" | \"wrong_account\" | \"currency_mismatch\" | \"invalid_amount\" | \"unsupported_source\" | \"invalid_direction\" | \"payment_overallocated\" | \"non_cash_settlement\" | \"status_without_bank_evidence\" | \"negative_bank_balance\">;\n bankAllocationIds: Array<number>;\n excludedAllocationIds: Array<number>;\n reversedAllocationCount: number;\n revision: string;\n observedAt: string;\n};\nexport type InvoicesPaymentEvidenceExternalResponse = import(\"../types\").ApiEnvelope<InvoicesPaymentEvidenceExternalResponseData>;\n\nexport type InvoicesPaymentInstructionsExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesPaymentInstructionsExternalQuery = undefined;\nexport type InvoicesPaymentInstructionsExternalBody = undefined;\nexport type InvoicesPaymentInstructionsExternalResponseData = {\n invoiceId: number;\n reference: string;\n accountOwner: string;\n iban: string;\n bic: string | null;\n bankName: string | null;\n currency: string;\n invoiceAmount: string;\n createdAt: string;\n};\nexport type InvoicesPaymentInstructionsExternalResponse = import(\"../types\").ApiEnvelope<InvoicesPaymentInstructionsExternalResponseData>;\n\nexport type InvoicesSearchExternalParams = undefined;\nexport type InvoicesSearchExternalQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n status?: string;\n companyId?: number;\n documentType?: string;\n invoiceDateFrom?: string;\n invoiceDateTo?: string;\n dueDateFrom?: string;\n dueDateTo?: string;\n minTotal?: string;\n maxTotal?: string;\n currency?: string;\n sortBy?: \"createdAt\" | \"invoiceDate\" | \"dueDate\" | \"totalAmount\";\n sortDir?: \"asc\" | \"desc\";\n};\nexport type InvoicesSearchExternalBody = undefined;\nexport type InvoicesSearchExternalResponseData = PaginatedResult<Invoice>;\nexport type InvoicesSearchExternalResponse = import(\"../types\").ApiEnvelope<InvoicesSearchExternalResponseData>;\n\nexport type InvoicesPendingExternalParams = undefined;\nexport type InvoicesPendingExternalQuery = {\n\n};\nexport type InvoicesPendingExternalBody = undefined;\nexport type InvoicesPendingExternalResponseData = { total: number; invoices: Array<{ invoice: Invoice; company: CustomerCompany | null }> };\nexport type InvoicesPendingExternalResponse = import(\"../types\").ApiEnvelope<InvoicesPendingExternalResponseData>;\n\nexport type InvoicesOverdueExternalParams = undefined;\nexport type InvoicesOverdueExternalQuery = {\n\n};\nexport type InvoicesOverdueExternalBody = undefined;\nexport type InvoicesOverdueExternalResponseData = { total: number; invoices: Array<{ invoice: Invoice; company: CustomerCompany | null; daysOverdue: number }> };\nexport type InvoicesOverdueExternalResponse = import(\"../types\").ApiEnvelope<InvoicesOverdueExternalResponseData>;\n\nexport type InvoicesGetByIdExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesGetByIdExternalQuery = undefined;\nexport type InvoicesGetByIdExternalBody = undefined;\nexport type InvoicesGetByIdExternalResponseData = Invoice;\nexport type InvoicesGetByIdExternalResponse = import(\"../types\").ApiEnvelope<InvoicesGetByIdExternalResponseData>;\n\nexport type InvoicesStatusPolicyExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesStatusPolicyExternalQuery = undefined;\nexport type InvoicesStatusPolicyExternalBody = undefined;\nexport type InvoicesStatusPolicyExternalResponseData = {\n invoiceId: number;\n documentType: \"invoice\" | \"credit_note\" | \"cancellation\";\n currentStatus: \"draft\" | \"issued\" | \"paid\" | \"overdue\" | \"cancelled\";\n allowedNextStatuses: Array<\"draft\" | \"issued\" | \"paid\" | \"overdue\" | \"cancelled\">;\n locked: boolean;\n lockReason?: string | null;\n flags: {\n hasAnyCorrection: boolean;\n hasCancellation: boolean;\n};\n actions: {\n canSetDraft: boolean;\n canSetIssued: boolean;\n canSetPaid: boolean;\n canSetOverdue: boolean;\n canSetCancelled: boolean;\n};\n};\nexport type InvoicesStatusPolicyExternalResponse = import(\"../types\").ApiEnvelope<InvoicesStatusPolicyExternalResponseData>;\n\nexport type InvoicesViewPdfExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesViewPdfExternalQuery = undefined;\nexport type InvoicesViewPdfExternalBody = undefined;\nexport type InvoicesViewPdfExternalResponseData = Blob;\nexport type InvoicesViewPdfExternalResponse = Blob;\n\nexport type InvoicesDownloadPdfExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesDownloadPdfExternalQuery = undefined;\nexport type InvoicesDownloadPdfExternalBody = undefined;\nexport type InvoicesDownloadPdfExternalResponseData = Blob;\nexport type InvoicesDownloadPdfExternalResponse = Blob;\n\nexport type InvoicesCreateExternalParams = undefined;\nexport type InvoicesCreateExternalQuery = undefined;\nexport type InvoicesCreateExternalBody = {\n companyId?: number | null;\n costCenterId?: number | null;\n paymentAccountId?: number | null;\n bankFallbackAccountId?: number | null;\n customerName?: string | null;\n customerStreet?: string | null;\n customerStreetNr?: string | null;\n customerZip?: string | null;\n customerCity?: string | null;\n customerCountry?: string | null;\n customerEmail?: string | null;\n customerPhone?: string | null;\n customerUstId?: string | null;\n invoiceDate: string;\n dueDate: string;\n performedAt?: string | null;\n currency: string;\n notes?: string | null;\n paymentTermsDays?: number | null;\n paymentTermsText?: string | null;\n earlyPaymentDiscountPercent?: number | null;\n earlyPaymentDiscountDays?: number | null;\n paymentMethod?: string | null;\n paymentProvider?: string | null;\n paidAt?: string | null;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n customVatRate?: number;\n vatOverrideReason?: string;\n lineItems: Array<{\n title: string;\n description?: string | null;\n quantity: number;\n unitPriceNet: string;\n itemType?: string | null;\n sortOrder?: number;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n taxRate?: number;\n}>;\n language?: string;\n issueImmediately?: boolean;\n generatePdf?: boolean;\n quoteHash?: string;\n quoteVersion?: string;\n};\nexport type InvoicesCreateExternalResponseData = { invoice: Invoice; documentId: number | null; pdfUrl: string | null };\nexport type InvoicesCreateExternalResponse = import(\"../types\").ApiEnvelope<InvoicesCreateExternalResponseData>;\n\nexport type InvoicesUpdateStatusExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesUpdateStatusExternalQuery = undefined;\nexport type InvoicesUpdateStatusExternalBody = {\n status: \"draft\" | \"issued\" | \"paid\" | \"overdue\" | \"cancelled\";\n source?: \"api\" | \"sync\" | \"webhook\";\n paymentReference?: string;\n};\nexport type InvoicesUpdateStatusExternalResponseData = Invoice;\nexport type InvoicesUpdateStatusExternalResponse = import(\"../types\").ApiEnvelope<InvoicesUpdateStatusExternalResponseData>;\n\nexport type InvoicesCreditNotePreviewExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesCreditNotePreviewExternalQuery = undefined;\nexport type InvoicesCreditNotePreviewExternalBody = {\n mode?: \"full\" | \"partial\";\n reason: string;\n issueDate?: string;\n documentType?: \"credit_note\" | \"cancellation\";\n lineItems?: Array<{\n title: string;\n description?: string | null;\n quantity: number;\n unitPriceNet: string;\n itemType?: string | null;\n sortOrder?: number;\n}>;\n};\nexport type InvoicesCreditNotePreviewExternalResponseData = {\n documentType: \"credit_note\" | \"cancellation\";\n invoice: {\n managingCompanyId: number;\n costCenterId: number | null;\n companyId: number | null;\n invoiceDate: string;\n dueDate: string;\n performedAt: string | null;\n currency: string;\n netAmount: string;\n taxAmount: string;\n taxRate: string | null;\n totalAmount: string;\n vatTreatment: any;\n vatLegalRef: string | null;\n vatNote: string | null;\n vatCustom: any;\n notes: string | null;\n correctionReason: string;\n correctsInvoiceId: number;\n};\n lineItems: Array<{\n itemType: string;\n title: string;\n description: string | null;\n unitPriceNet: string;\n quantity: number;\n lineNetAmount: string;\n lineGrossAmount: string;\n taxRate: string;\n lineTaxAmount: string;\n sortOrder?: number | null;\n}>;\n originalInvoice: {\n id: number;\n invoiceNumber: string;\n invoiceDate: string;\n totalAmount: string;\n currency: string;\n status: string;\n};\n};\nexport type InvoicesCreditNotePreviewExternalResponse = import(\"../types\").ApiEnvelope<InvoicesCreditNotePreviewExternalResponseData>;\n\nexport type InvoicesCreditNoteIssueExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesCreditNoteIssueExternalQuery = undefined;\nexport type InvoicesCreditNoteIssueExternalBody = {\n mode?: \"full\" | \"partial\";\n reason: string;\n issueDate?: string;\n documentType?: \"credit_note\" | \"cancellation\";\n lineItems?: Array<{\n title: string;\n description?: string | null;\n quantity: number;\n unitPriceNet: string;\n itemType?: string | null;\n sortOrder?: number;\n}>;\n};\nexport type InvoicesCreditNoteIssueExternalResponseData = { invoice: Invoice; documentId: number; pdfUrl: string; originalInvoiceId: number };\nexport type InvoicesCreditNoteIssueExternalResponse = import(\"../types\").ApiEnvelope<InvoicesCreditNoteIssueExternalResponseData>;\n\nexport type InvoicesSendEmailExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesSendEmailExternalQuery = undefined;\nexport type InvoicesSendEmailExternalBody = {\n to: string;\n subject?: string;\n body?: string;\n replyTo?: string;\n};\nexport type InvoicesSendEmailExternalResponseData = { messageId: string; invoiceNumber: string; recipient: string; sentAt: string };\nexport type InvoicesSendEmailExternalResponse = import(\"../types\").ApiEnvelope<InvoicesSendEmailExternalResponseData>;\n\nexport type InvoicesDeleteExternalParams = {\n invoiceId: number;\n};\nexport type InvoicesDeleteExternalQuery = undefined;\nexport type InvoicesDeleteExternalBody = undefined;\nexport type InvoicesDeleteExternalResponseData = null;\nexport type InvoicesDeleteExternalResponse = import(\"../types\").ApiEnvelope<InvoicesDeleteExternalResponseData>;\n\nexport const apiRoutes_invoices_external = {\n // Contract source: explicit\n \"invoices_payment_evidence_external\": {\n method: \"GET\",\n path: \"/invoices/external/:invoiceId/payment-evidence\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Read bank payment evidence for an invoice\",\n description: \"Consistent read-only snapshot of imported bank payments and refunds. Separates cash from discounts, writeoffs and manual paid marks. Decimal amounts are strings. bankPaymentConfirmed requires full matching-account/currency bank coverage without unresolved issues. revision is a content digest, not an ordered event version. No bank import or payment is initiated.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesPaymentEvidenceExternalParams;\n query: InvoicesPaymentEvidenceExternalQuery;\n body: InvoicesPaymentEvidenceExternalBody;\n response: InvoicesPaymentEvidenceExternalResponse;\n responseData: InvoicesPaymentEvidenceExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_payment_instructions_external\": {\n method: \"GET\",\n path: \"/invoices/external/:invoiceId/payment-instructions\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Read immutable bank payment instructions\",\n description: \"Reference and recipient frozen on first issue. Decimal amount is a string. Historical invoices without a snapshot return 409; no reference is created by reading. This is not evidence of payment or permission to provision.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesPaymentInstructionsExternalParams;\n query: InvoicesPaymentInstructionsExternalQuery;\n body: InvoicesPaymentInstructionsExternalBody;\n response: InvoicesPaymentInstructionsExternalResponse;\n responseData: InvoicesPaymentInstructionsExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_search_external\": {\n method: \"GET\",\n path: \"/invoices/external\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Search invoices (external API)\",\n description: \"Paginated search over invoices. Cost center filtering is applied per token permissions. managingCompanyId is derived from the auth token.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesSearchExternalParams;\n query: InvoicesSearchExternalQuery;\n body: InvoicesSearchExternalBody;\n response: InvoicesSearchExternalResponse;\n responseData: InvoicesSearchExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_pending_external\": {\n method: \"GET\",\n path: \"/invoices/external/pending\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"List pending invoices (external API)\",\n description: \"Returns a list of open/pending invoices with optional company information. Useful for monitoring outstanding receivables.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesPendingExternalParams;\n query: InvoicesPendingExternalQuery;\n body: InvoicesPendingExternalBody;\n response: InvoicesPendingExternalResponse;\n responseData: InvoicesPendingExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_overdue_external\": {\n method: \"GET\",\n path: \"/invoices/external/overdue\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"List overdue invoices (external API)\",\n description: \"Returns overdue invoices sorted by days overdue (most overdue first). Includes daysOverdue calculation and optional company information. Essential for dunning workflows.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesOverdueExternalParams;\n query: InvoicesOverdueExternalQuery;\n body: InvoicesOverdueExternalBody;\n response: InvoicesOverdueExternalResponse;\n responseData: InvoicesOverdueExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_get_by_id_external\": {\n method: \"GET\",\n path: \"/invoices/external/:invoiceId\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Get invoice by ID (external API)\",\n description: \"Returns a single invoice by ID. Cost center access is validated against the token permissions.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesGetByIdExternalParams;\n query: InvoicesGetByIdExternalQuery;\n body: InvoicesGetByIdExternalBody;\n response: InvoicesGetByIdExternalResponse;\n responseData: InvoicesGetByIdExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_status_policy_external\": {\n method: \"GET\",\n path: \"/invoices/external/:invoiceId/status-policy\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Get allowed status transitions (external API)\",\n description: \"Returns the state machine for allowed invoice status changes. Useful for external apps to know which transitions are valid before calling the status update endpoint.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesStatusPolicyExternalParams;\n query: InvoicesStatusPolicyExternalQuery;\n body: InvoicesStatusPolicyExternalBody;\n response: InvoicesStatusPolicyExternalResponse;\n responseData: InvoicesStatusPolicyExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_view_pdf_external\": {\n method: \"GET\",\n path: \"/invoices/external/:invoiceId/pdf\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"View invoice PDF (external API)\",\n description: \"Streams the invoice PDF inline (Content-Type: application/pdf). Auth-protected via API Key or OAuth2 – no public share token needed.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesViewPdfExternalParams;\n query: InvoicesViewPdfExternalQuery;\n body: InvoicesViewPdfExternalBody;\n response: InvoicesViewPdfExternalResponse;\n responseData: InvoicesViewPdfExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_download_pdf_external\": {\n method: \"GET\",\n path: \"/invoices/external/:invoiceId/download\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"invoices:read\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Download invoice PDF (external API)\",\n description: \"Downloads the invoice PDF as attachment (Content-Disposition: attachment). Auth-protected via API Key or OAuth2.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesDownloadPdfExternalParams;\n query: InvoicesDownloadPdfExternalQuery;\n body: InvoicesDownloadPdfExternalBody;\n response: InvoicesDownloadPdfExternalResponse;\n responseData: InvoicesDownloadPdfExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_create_external\": {\n method: \"POST\",\n path: \"/invoices/external\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"invoices:write\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Create invoice (external API)\",\n description: \"Creates a new invoice via API Key or OAuth2. managingCompanyId is derived from the auth token. Includes full line item support, VAT calculation, and optional PDF generation.\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoicesCreateExternalParams;\n query: InvoicesCreateExternalQuery;\n body: InvoicesCreateExternalBody;\n response: InvoicesCreateExternalResponse;\n responseData: InvoicesCreateExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_update_status_external\": {\n method: \"PUT\",\n path: \"/invoices/external/:invoiceId/status\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"invoices:write\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Update invoice status (external API)\",\n description: \"Changes invoice status (e.g., mark as paid). State machine rules are enforced server-side. GoBD-safe: issued invoices cannot be cancelled directly; use credit note/cancellation endpoints instead.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoicesUpdateStatusExternalParams;\n query: InvoicesUpdateStatusExternalQuery;\n body: InvoicesUpdateStatusExternalBody;\n response: InvoicesUpdateStatusExternalResponse;\n responseData: InvoicesUpdateStatusExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_credit_note_preview_external\": {\n method: \"POST\",\n path: \"/invoices/external/:invoiceId/credit-note/preview\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"invoices:write\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Preview credit note (external API)\",\n description: \"GoBD-compliant credit note preview. Returns computed amounts without persisting. Use this before issuing to validate the correction.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoicesCreditNotePreviewExternalParams;\n query: InvoicesCreditNotePreviewExternalQuery;\n body: InvoicesCreditNotePreviewExternalBody;\n response: InvoicesCreditNotePreviewExternalResponse;\n responseData: InvoicesCreditNotePreviewExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_credit_note_issue_external\": {\n method: \"POST\",\n path: \"/invoices/external/:invoiceId/credit-note/issue\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"invoices:publish\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Issue credit note (external API)\",\n description: \"Issues a GoBD-compliant credit note or cancellation invoice. Generates PDF and creates an immutable document. Returns the new correction invoice.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoicesCreditNoteIssueExternalParams;\n query: InvoicesCreditNoteIssueExternalQuery;\n body: InvoicesCreditNoteIssueExternalBody;\n response: InvoicesCreditNoteIssueExternalResponse;\n responseData: InvoicesCreditNoteIssueExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_send_email_external\": {\n method: \"POST\",\n path: \"/invoices/external/:invoiceId/send-email\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"editor\",\"scopes\":[\"invoices:write\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Send invoice via email (external API)\",\n description: \"Sends the invoice PDF as email attachment to the specified recipient. Invoice must be in 'issued' status and have a generated PDF. Reply-To defaults to the managing company's email address (multi-company safe). Subject/body support placeholders: {{invoiceNumber}}, {{dueDate}}, {{totalAmount}}, {{currency}}, {{customerName}}.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: InvoicesSendEmailExternalParams;\n query: InvoicesSendEmailExternalQuery;\n body: InvoicesSendEmailExternalBody;\n response: InvoicesSendEmailExternalResponse;\n responseData: InvoicesSendEmailExternalResponseData;\n },\n },\n // Contract source: explicit\n \"invoices_delete_external\": {\n method: \"DELETE\",\n path: \"/invoices/external/:invoiceId\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"admin\",\"scopes\":[\"invoices:delete\"]},\n meta: {\n tags: [\"invoices-external\"],\n summary: \"Delete invoice (external API)\",\n description: \"Deletes a draft invoice and its associated documents. Only invoices in 'draft' status can be deleted. Issued/paid invoices must be corrected via credit note/cancellation.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: InvoicesDeleteExternalParams;\n query: InvoicesDeleteExternalQuery;\n body: InvoicesDeleteExternalBody;\n response: InvoicesDeleteExternalResponse;\n responseData: InvoicesDeleteExternalResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { AppLog, PaginatedResult } from \"../../frontend-types\";\n\nexport type LogsSearchParams = undefined;\nexport type LogsSearchQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n level?: \"debug\" | \"info\" | \"warn\" | \"error\";\n dateFrom?: string;\n dateTo?: string;\n};\nexport type LogsSearchBody = undefined;\nexport type LogsSearchResponseData = { logs: PaginatedResult<AppLog>; canDelete: boolean };\nexport type LogsSearchResponse = import(\"../types\").ApiEnvelope<LogsSearchResponseData>;\n\nexport type LogsDeleteParams = {\n logId: number;\n};\nexport type LogsDeleteQuery = undefined;\nexport type LogsDeleteBody = undefined;\nexport type LogsDeleteResponseData = null;\nexport type LogsDeleteResponse = import(\"../types\").ApiEnvelope<LogsDeleteResponseData>;\n\nexport type LogsDeleteBulkParams = {\n logIds: string;\n};\nexport type LogsDeleteBulkQuery = undefined;\nexport type LogsDeleteBulkBody = undefined;\nexport type LogsDeleteBulkResponseData = null;\nexport type LogsDeleteBulkResponse = import(\"../types\").ApiEnvelope<LogsDeleteBulkResponseData>;\n\nexport const apiRoutes_logs = {\n // Contract source: explicit\n \"logs_search\": {\n method: \"GET\",\n path: \"/app-logs/search\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"log_view\"},\n meta: {\n tags: [\"logs\"],\n summary: \"Search logs\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: LogsSearchParams;\n query: LogsSearchQuery;\n body: LogsSearchBody;\n response: LogsSearchResponse;\n responseData: LogsSearchResponseData;\n },\n },\n // Contract source: explicit\n \"logs_delete\": {\n method: \"DELETE\",\n path: \"/app-logs/delete/:logId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"log_delete\"},\n meta: {\n tags: [\"logs\"],\n summary: \"Delete one log\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: LogsDeleteParams;\n query: LogsDeleteQuery;\n body: LogsDeleteBody;\n response: LogsDeleteResponse;\n responseData: LogsDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"logs_delete_bulk\": {\n method: \"DELETE\",\n path: \"/app-logs/delete/mass/:logIds\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"log_delete\"},\n meta: {\n tags: [\"logs\"],\n summary: \"Delete multiple logs\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: LogsDeleteBulkParams;\n query: LogsDeleteBulkQuery;\n body: LogsDeleteBulkBody;\n response: LogsDeleteBulkResponse;\n responseData: LogsDeleteBulkResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { CompanyCostCenter, CompanyUserAssignment, CompanyUserInvite, FullSelectedCompany, ManagingCompany, PaginatedResult, UnsensitiveCompanyApiKey, UserSelectedCompany, VatSettings } from \"../../frontend-types\";\n\nexport type ManagingCompaniesUserAssignmentsAssignParams = undefined;\nexport type ManagingCompaniesUserAssignmentsAssignQuery = undefined;\nexport type ManagingCompaniesUserAssignmentsAssignBody = {\n companyId: number;\n email: string;\n validFrom?: string;\n validTo?: string | null;\n role: \"admin\" | \"editor\" | \"viewer\";\n companyRole?: string | null;\n costCenters?: Array<number>;\n};\nexport type ManagingCompaniesUserAssignmentsAssignResponseData = { type: \"invite\"; inviteId: number };\nexport type ManagingCompaniesUserAssignmentsAssignResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesUserAssignmentsAssignResponseData>;\n\nexport type ManagingCompaniesUserAssignmentsRevokeParams = undefined;\nexport type ManagingCompaniesUserAssignmentsRevokeQuery = undefined;\nexport type ManagingCompaniesUserAssignmentsRevokeBody = {\n userId: number;\n companyId: number;\n};\nexport type ManagingCompaniesUserAssignmentsRevokeResponseData = CompanyUserAssignment | null;\nexport type ManagingCompaniesUserAssignmentsRevokeResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesUserAssignmentsRevokeResponseData>;\n\nexport type ManagingCompaniesUserAssignmentsUpdateParams = {\n assignmentId: number;\n};\nexport type ManagingCompaniesUserAssignmentsUpdateQuery = undefined;\nexport type ManagingCompaniesUserAssignmentsUpdateBody = {\n validTo?: string | null;\n companyRole?: string | null;\n role?: \"admin\" | \"editor\" | \"viewer\";\n};\nexport type ManagingCompaniesUserAssignmentsUpdateResponseData = CompanyUserAssignment | null;\nexport type ManagingCompaniesUserAssignmentsUpdateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesUserAssignmentsUpdateResponseData>;\n\nexport type ManagingCompaniesUserAssignmentsCostCentersAddParams = undefined;\nexport type ManagingCompaniesUserAssignmentsCostCentersAddQuery = undefined;\nexport type ManagingCompaniesUserAssignmentsCostCentersAddBody = {\n userId: number;\n companyId: number;\n costCenterIds: Array<number> | number;\n};\nexport type ManagingCompaniesUserAssignmentsCostCentersAddResponseData = Array<CompanyUserAssignment>;\nexport type ManagingCompaniesUserAssignmentsCostCentersAddResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesUserAssignmentsCostCentersAddResponseData>;\n\nexport type ManagingCompaniesUserAssignmentsCostCentersRemoveParams = undefined;\nexport type ManagingCompaniesUserAssignmentsCostCentersRemoveQuery = undefined;\nexport type ManagingCompaniesUserAssignmentsCostCentersRemoveBody = {\n userId: number;\n companyId: number;\n costCenterIds: Array<number> | number;\n};\nexport type ManagingCompaniesUserAssignmentsCostCentersRemoveResponseData = Array<CompanyUserAssignment>;\nexport type ManagingCompaniesUserAssignmentsCostCentersRemoveResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesUserAssignmentsCostCentersRemoveResponseData>;\n\nexport type ManagingCompaniesUserAssignmentsListParams = {\n companyId: number;\n};\nexport type ManagingCompaniesUserAssignmentsListQuery = {\n active?: boolean;\n search?: string;\n page?: number;\n pageSize?: number;\n};\nexport type ManagingCompaniesUserAssignmentsListBody = undefined;\nexport type ManagingCompaniesUserAssignmentsListResponseData = PaginatedResult<CompanyUserAssignment & { user?: { firstName: string | null; lastName: string | null; email: string | null } }>;\nexport type ManagingCompaniesUserAssignmentsListResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesUserAssignmentsListResponseData>;\n\nexport type ManagingCompaniesCostCentersCreateParams = undefined;\nexport type ManagingCompaniesCostCentersCreateQuery = undefined;\nexport type ManagingCompaniesCostCentersCreateBody = {\n managingCompanyId: number;\n name: string;\n description?: string | null;\n code: string;\n isArchived?: boolean;\n colour?: string | null;\n icon?: string | null;\n invoiceLayoutVariant?: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\" | null;\n sortOrder?: number | null;\n sortByOrder?: boolean;\n};\nexport type ManagingCompaniesCostCentersCreateResponseData = CompanyCostCenter;\nexport type ManagingCompaniesCostCentersCreateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersCreateResponseData>;\n\nexport type ManagingCompaniesCostCentersMyParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesCostCentersMyQuery = undefined;\nexport type ManagingCompaniesCostCentersMyBody = undefined;\nexport type ManagingCompaniesCostCentersMyResponseData = Array<CompanyCostCenter>;\nexport type ManagingCompaniesCostCentersMyResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersMyResponseData>;\n\nexport type ManagingCompaniesCostCentersByIdParams = {\n id: number;\n};\nexport type ManagingCompaniesCostCentersByIdQuery = undefined;\nexport type ManagingCompaniesCostCentersByIdBody = undefined;\nexport type ManagingCompaniesCostCentersByIdResponseData = CompanyCostCenter;\nexport type ManagingCompaniesCostCentersByIdResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersByIdResponseData>;\n\nexport type ManagingCompaniesCostCentersLogosSettingsParams = {\n id: number;\n};\nexport type ManagingCompaniesCostCentersLogosSettingsQuery = undefined;\nexport type ManagingCompaniesCostCentersLogosSettingsBody = undefined;\nexport type ManagingCompaniesCostCentersLogosSettingsResponseData = {\n whiteLogoKey: string | null;\n darkLogoKey: string | null;\n invoiceLogoMode: string;\n companyInvoiceLayoutVariant: string;\n costCenterInvoiceLayoutVariant: string | null;\n effectiveInvoiceLayoutVariant: string;\n};\nexport type ManagingCompaniesCostCentersLogosSettingsResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersLogosSettingsResponseData>;\n\nexport type ManagingCompaniesCostCentersLogosUploadParams = {\n id: number;\n mode: \"white\" | \"dark\";\n};\nexport type ManagingCompaniesCostCentersLogosUploadQuery = undefined;\nexport type ManagingCompaniesCostCentersLogosUploadBody = undefined;\nexport type ManagingCompaniesCostCentersLogosUploadResponseData = {\n whiteLogoKey: string | null;\n darkLogoKey: string | null;\n invoiceLogoMode: string;\n companyInvoiceLayoutVariant: string;\n costCenterInvoiceLayoutVariant: string | null;\n effectiveInvoiceLayoutVariant: string;\n};\nexport type ManagingCompaniesCostCentersLogosUploadResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersLogosUploadResponseData>;\n\nexport type ManagingCompaniesCostCentersLogosDeleteParams = {\n id: number;\n mode: \"white\" | \"dark\";\n};\nexport type ManagingCompaniesCostCentersLogosDeleteQuery = undefined;\nexport type ManagingCompaniesCostCentersLogosDeleteBody = undefined;\nexport type ManagingCompaniesCostCentersLogosDeleteResponseData = {\n whiteLogoKey: string | null;\n darkLogoKey: string | null;\n invoiceLogoMode: string;\n companyInvoiceLayoutVariant: string;\n costCenterInvoiceLayoutVariant: string | null;\n effectiveInvoiceLayoutVariant: string;\n};\nexport type ManagingCompaniesCostCentersLogosDeleteResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersLogosDeleteResponseData>;\n\nexport type ManagingCompaniesCostCentersLogosUrlsParams = {\n id: number;\n};\nexport type ManagingCompaniesCostCentersLogosUrlsQuery = undefined;\nexport type ManagingCompaniesCostCentersLogosUrlsBody = undefined;\nexport type ManagingCompaniesCostCentersLogosUrlsResponseData = {\n whiteLogoUrl: string | null;\n darkLogoUrl: string | null;\n invoiceLogoMode: string;\n companyInvoiceLayoutVariant: string;\n costCenterInvoiceLayoutVariant: string | null;\n effectiveInvoiceLayoutVariant: string;\n};\nexport type ManagingCompaniesCostCentersLogosUrlsResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersLogosUrlsResponseData>;\n\nexport type ManagingCompaniesCostCentersByIdsParams = undefined;\nexport type ManagingCompaniesCostCentersByIdsQuery = {\n costCenterIds: Array<number>;\n};\nexport type ManagingCompaniesCostCentersByIdsBody = undefined;\nexport type ManagingCompaniesCostCentersByIdsResponseData = Array<CompanyCostCenter>;\nexport type ManagingCompaniesCostCentersByIdsResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersByIdsResponseData>;\n\nexport type ManagingCompaniesCostCentersUpdateParams = {\n id: number;\n};\nexport type ManagingCompaniesCostCentersUpdateQuery = undefined;\nexport type ManagingCompaniesCostCentersUpdateBody = {\n name?: string;\n description?: string | null;\n code?: string;\n isArchived?: boolean;\n colour?: string | null;\n icon?: string | null;\n invoiceLayoutVariant?: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\" | null;\n sortOrder?: number | null;\n sortByOrder?: boolean;\n};\nexport type ManagingCompaniesCostCentersUpdateResponseData = CompanyCostCenter;\nexport type ManagingCompaniesCostCentersUpdateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersUpdateResponseData>;\n\nexport type ManagingCompaniesCostCentersDeleteParams = {\n id: number;\n};\nexport type ManagingCompaniesCostCentersDeleteQuery = undefined;\nexport type ManagingCompaniesCostCentersDeleteBody = undefined;\nexport type ManagingCompaniesCostCentersDeleteResponseData = null;\nexport type ManagingCompaniesCostCentersDeleteResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersDeleteResponseData>;\n\nexport type ManagingCompaniesCostCentersListParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesCostCentersListQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n isArchived?: boolean;\n};\nexport type ManagingCompaniesCostCentersListBody = undefined;\nexport type ManagingCompaniesCostCentersListResponseData = PaginatedResult<CompanyCostCenter>;\nexport type ManagingCompaniesCostCentersListResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCostCentersListResponseData>;\n\nexport type ManagingCompaniesSelectedSetParams = {\n companyId: number;\n};\nexport type ManagingCompaniesSelectedSetQuery = undefined;\nexport type ManagingCompaniesSelectedSetBody = undefined;\nexport type ManagingCompaniesSelectedSetResponseData = UserSelectedCompany;\nexport type ManagingCompaniesSelectedSetResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesSelectedSetResponseData>;\n\nexport type ManagingCompaniesSelectedCurrentParams = undefined;\nexport type ManagingCompaniesSelectedCurrentQuery = {\n\n};\nexport type ManagingCompaniesSelectedCurrentBody = undefined;\nexport type ManagingCompaniesSelectedCurrentResponseData = FullSelectedCompany | null;\nexport type ManagingCompaniesSelectedCurrentResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesSelectedCurrentResponseData>;\n\nexport type ManagingCompaniesVatSettingsGetParams = {\n companyId: number;\n};\nexport type ManagingCompaniesVatSettingsGetQuery = undefined;\nexport type ManagingCompaniesVatSettingsGetBody = undefined;\nexport type ManagingCompaniesVatSettingsGetResponseData = VatSettings | null;\nexport type ManagingCompaniesVatSettingsGetResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesVatSettingsGetResponseData>;\n\nexport type ManagingCompaniesVatSettingsUpsertParams = {\n companyId: number;\n};\nexport type ManagingCompaniesVatSettingsUpsertQuery = undefined;\nexport type ManagingCompaniesVatSettingsUpsertBody = {\n managingCompanyId?: number;\n /** Besteuerungsverfahren: SOLL = Soll-Versteuerung (Rechnungsdatum), IST = Ist-Versteuerung (Zahlungseingang). Aenderung nur wenn steuerlich abgestimmt – hat Auswirkung auf UStVA-Zeitraum. */\n accountingMethod?: \"SOLL\" | \"IST\";\n /** UStVA-Meldepraeferenz: auto = vom System ermittelt, monthly/quarterly/annual = manuell festgelegt, none = keine automatische Meldung. */\n ustvaFilingPreference?: \"auto\" | \"monthly\" | \"quarterly\" | \"annual\" | \"none\";\n /** Freie Map fuer Steuerentscheidungen – NICHT direkt beschreiben, stattdessen PUT /decisions/:decisionKey nutzen. Dieser Weg ist unauditiert und ueberschreibt alle vorherigen Entscheidungen auf einmal. */\n taxDecisions?: Record<string, any>;\n};\nexport type ManagingCompaniesVatSettingsUpsertResponseData = VatSettings;\nexport type ManagingCompaniesVatSettingsUpsertResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesVatSettingsUpsertResponseData>;\n\nexport type ManagingCompaniesVatSettingsDecisionUpsertParams = {\n companyId: number;\n /** Eindeutiger Entscheidungsschluessel. Erlaubte Keys (Allowlist): 'vat.regime' (Werte: 'kleinunternehmer' | 'regelbesteuert'), 'vat.regime.auto_switch_consent' (Wert: { enabled: boolean } – opt-in fuer automatische Regime-Umstellung bei Grenz */\n decisionKey: string;\n};\nexport type ManagingCompaniesVatSettingsDecisionUpsertQuery = undefined;\nexport type ManagingCompaniesVatSettingsDecisionUpsertBody = {\n /** Der Entscheidungswert. Haengt vom decisionKey ab: vat.regime → { regime: 'kleinunternehmer' | 'regelbesteuert' } | vat.regime.auto_switch_consent → { enabled: true | false } (true = System darf bei §19-Grenzwert-Ueberschreitung automatisch */\n value: any;\n /** Optionale Begruendung/Notiz zur Entscheidung (z.B. 'Steuerberater-Empfehlung vom 01.01.2025'). Wird im Audit-Log gespeichert. */\n note?: string;\n /** ISO-Zeitstempel ab wann die Entscheidung gelten soll. Wenn nicht angegeben: sofort (Server-Zeitpunkt). Nur relevant fuer vat.regime – bestimmt ab welchem Datum das neue Regime im Buchungssystem gilt. */\n effectiveFrom?: string;\n /** Optionale strukturierte Zusatzdaten (z.B. { source: 'user_alert_click', alertKey: 'vat.threshold_exceeded' }). Nuetzlich fuer Analytics / Traceability woher die Entscheidung kam. */\n metadata?: Record<string, any>;\n};\nexport type ManagingCompaniesVatSettingsDecisionUpsertResponseData = { settings: VatSettings; decision: any; appliedRegimePeriod?: any };\nexport type ManagingCompaniesVatSettingsDecisionUpsertResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesVatSettingsDecisionUpsertResponseData>;\n\nexport type ManagingCompaniesVatSettingsTaxAlertsParams = {\n companyId: number;\n};\nexport type ManagingCompaniesVatSettingsTaxAlertsQuery = undefined;\nexport type ManagingCompaniesVatSettingsTaxAlertsBody = undefined;\nexport type ManagingCompaniesVatSettingsTaxAlertsResponseData = { activeCount: number; alerts: Array<{ key: string; severity: 'info'|'warning'|'critical'; title: string; message: string; active: boolean; triggerAmount?: number; requiredDecision: { decisionKey: string; currentValue: string; suggestedValue: string; endpoint: string } | null; metadata: Record<string, unknown> }> };\nexport type ManagingCompaniesVatSettingsTaxAlertsResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesVatSettingsTaxAlertsResponseData>;\n\nexport type ManagingCompaniesInvitesPendingUserParams = undefined;\nexport type ManagingCompaniesInvitesPendingUserQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n};\nexport type ManagingCompaniesInvitesPendingUserBody = undefined;\nexport type ManagingCompaniesInvitesPendingUserResponseData = PaginatedResult<CompanyUserInvite & { company: { id: number; companyName: string }; invitedByUser: { firstName: string | null; lastName: string | null; email: string | null } }>;\nexport type ManagingCompaniesInvitesPendingUserResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvitesPendingUserResponseData>;\n\nexport type ManagingCompaniesInvitesPendingCompanyParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvitesPendingCompanyQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n};\nexport type ManagingCompaniesInvitesPendingCompanyBody = undefined;\nexport type ManagingCompaniesInvitesPendingCompanyResponseData = PaginatedResult<CompanyUserInvite>;\nexport type ManagingCompaniesInvitesPendingCompanyResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvitesPendingCompanyResponseData>;\n\nexport type ManagingCompaniesInvitesPendingCompanyPreviewParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvitesPendingCompanyPreviewQuery = {\n token: string;\n};\nexport type ManagingCompaniesInvitesPendingCompanyPreviewBody = undefined;\nexport type ManagingCompaniesInvitesPendingCompanyPreviewResponseData = {\n companyName: string;\n companyLegalForm?: any | null;\n companyStreet?: string | null;\n companyStreetNr?: string | null;\n companyZip?: string | null;\n companyCity?: string | null;\n companyCountry?: string | null;\n companyEmail?: string | null;\n companyPhone?: string | null;\n companyWebsite?: string | null;\n companyManagingDirector?: string | null;\n};\nexport type ManagingCompaniesInvitesPendingCompanyPreviewResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvitesPendingCompanyPreviewResponseData>;\n\nexport type ManagingCompaniesInvitesAcceptParams = {\n token: string;\n};\nexport type ManagingCompaniesInvitesAcceptQuery = undefined;\nexport type ManagingCompaniesInvitesAcceptBody = undefined;\nexport type ManagingCompaniesInvitesAcceptResponseData = {\n success: boolean;\n assignmentId?: number;\n};\nexport type ManagingCompaniesInvitesAcceptResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvitesAcceptResponseData>;\n\nexport type ManagingCompaniesInvitesRejectParams = {\n token: string;\n};\nexport type ManagingCompaniesInvitesRejectQuery = undefined;\nexport type ManagingCompaniesInvitesRejectBody = undefined;\nexport type ManagingCompaniesInvitesRejectResponseData = null;\nexport type ManagingCompaniesInvitesRejectResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvitesRejectResponseData>;\n\nexport type ManagingCompaniesInvitesCancelParams = {\n inviteId: number;\n};\nexport type ManagingCompaniesInvitesCancelQuery = undefined;\nexport type ManagingCompaniesInvitesCancelBody = {\n companyId: number;\n};\nexport type ManagingCompaniesInvitesCancelResponseData = null;\nexport type ManagingCompaniesInvitesCancelResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvitesCancelResponseData>;\n\nexport type ManagingCompaniesApiKeysCreateParams = undefined;\nexport type ManagingCompaniesApiKeysCreateQuery = undefined;\nexport type ManagingCompaniesApiKeysCreateBody = {\n name: string;\n role: \"viewer\" | \"editor\" | \"admin\";\n defaultCostCenter?: number;\n availableCostCenters?: Array<number>;\n validFrom?: string;\n validTo?: string | null;\n};\nexport type ManagingCompaniesApiKeysCreateResponseData = { apiKey: UnsensitiveCompanyApiKey; plainTextKey: string };\nexport type ManagingCompaniesApiKeysCreateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesApiKeysCreateResponseData>;\n\nexport type ManagingCompaniesApiKeysUpdateParams = {\n apiKeyId: number;\n};\nexport type ManagingCompaniesApiKeysUpdateQuery = undefined;\nexport type ManagingCompaniesApiKeysUpdateBody = {\n name?: string;\n role?: \"viewer\" | \"editor\" | \"admin\";\n defaultCostCenter?: number;\n availableCostCenters?: Array<number>;\n validFrom?: string;\n validTo?: string | null;\n};\nexport type ManagingCompaniesApiKeysUpdateResponseData = UnsensitiveCompanyApiKey;\nexport type ManagingCompaniesApiKeysUpdateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesApiKeysUpdateResponseData>;\n\nexport type ManagingCompaniesApiKeysDeleteParams = {\n apiKeyId: number;\n};\nexport type ManagingCompaniesApiKeysDeleteQuery = undefined;\nexport type ManagingCompaniesApiKeysDeleteBody = undefined;\nexport type ManagingCompaniesApiKeysDeleteResponseData = null;\nexport type ManagingCompaniesApiKeysDeleteResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesApiKeysDeleteResponseData>;\n\nexport type ManagingCompaniesApiKeysRevokeParams = {\n apiKeyId: number;\n};\nexport type ManagingCompaniesApiKeysRevokeQuery = undefined;\nexport type ManagingCompaniesApiKeysRevokeBody = undefined;\nexport type ManagingCompaniesApiKeysRevokeResponseData = null;\nexport type ManagingCompaniesApiKeysRevokeResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesApiKeysRevokeResponseData>;\n\nexport type ManagingCompaniesApiKeysByIdParams = {\n apiKeyId: number;\n};\nexport type ManagingCompaniesApiKeysByIdQuery = undefined;\nexport type ManagingCompaniesApiKeysByIdBody = undefined;\nexport type ManagingCompaniesApiKeysByIdResponseData = UnsensitiveCompanyApiKey;\nexport type ManagingCompaniesApiKeysByIdResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesApiKeysByIdResponseData>;\n\nexport type ManagingCompaniesApiKeysListParams = undefined;\nexport type ManagingCompaniesApiKeysListQuery = {\n page?: number;\n pageSize?: number;\n};\nexport type ManagingCompaniesApiKeysListBody = undefined;\nexport type ManagingCompaniesApiKeysListResponseData = PaginatedResult<UnsensitiveCompanyApiKey>;\nexport type ManagingCompaniesApiKeysListResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesApiKeysListResponseData>;\n\nexport type ManagingCompaniesInvoiceLayoutsCatalogParams = undefined;\nexport type ManagingCompaniesInvoiceLayoutsCatalogQuery = {\n costCenterId?: number;\n};\nexport type ManagingCompaniesInvoiceLayoutsCatalogBody = undefined;\nexport type ManagingCompaniesInvoiceLayoutsCatalogResponseData = {\n defaultVariant: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n effectiveVariant: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n source: \"cost_center\" | \"company\" | \"system_default\";\n costCenterId: number | null;\n variants: Array<{\n id: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n name: string;\n previewTitle: string;\n description: string;\n preview: {\n accentColor: string;\n fontFamily: string;\n density: \"compact\" | \"comfortable\";\n visualStyle: string;\n};\n technical: {\n paperStandard: \"DIN 5008\";\n pageFormat: \"A4\";\n windowEnvelopeCompatible: boolean;\n renderEngine: \"@react-pdf/renderer\";\n eInvoice: {\n format: \"ZUGFeRD\";\n profileSupport: string;\n embedding: string;\n};\n};\n}>;\n eInvoice: {\n enabled: boolean;\n format: \"zugferd\" | null;\n defaultProfile: string | null;\n};\n};\nexport type ManagingCompaniesInvoiceLayoutsCatalogResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceLayoutsCatalogResponseData>;\n\nexport type ManagingCompaniesInvoiceLayoutsEffectiveParams = undefined;\nexport type ManagingCompaniesInvoiceLayoutsEffectiveQuery = {\n costCenterId?: number;\n};\nexport type ManagingCompaniesInvoiceLayoutsEffectiveBody = undefined;\nexport type ManagingCompaniesInvoiceLayoutsEffectiveResponseData = {\n managingCompanyId: number;\n costCenterId: number | null;\n companyVariant: string | null;\n costCenterVariant: string | null;\n effectiveVariant: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n source: \"cost_center\" | \"company\" | \"system_default\";\n layout: {\n id: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n name: string;\n previewTitle: string;\n description: string;\n preview: {\n accentColor: string;\n fontFamily: string;\n density: \"compact\" | \"comfortable\";\n visualStyle: string;\n};\n technical: {\n paperStandard: \"DIN 5008\";\n pageFormat: \"A4\";\n windowEnvelopeCompatible: boolean;\n renderEngine: \"@react-pdf/renderer\";\n eInvoice: {\n format: \"ZUGFeRD\";\n profileSupport: string;\n embedding: string;\n};\n};\n};\n eInvoice: {\n enabled: boolean;\n format: \"zugferd\" | null;\n defaultProfile: string | null;\n};\n};\nexport type ManagingCompaniesInvoiceLayoutsEffectiveResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceLayoutsEffectiveResponseData>;\n\nexport type ManagingCompaniesInvoiceLayoutsPreviewParams = undefined;\nexport type ManagingCompaniesInvoiceLayoutsPreviewQuery = {\n layoutVariant?: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n costCenterId?: number;\n language?: \"de\" | \"en\";\n};\nexport type ManagingCompaniesInvoiceLayoutsPreviewBody = undefined;\nexport type ManagingCompaniesInvoiceLayoutsPreviewResponseData = {\n requestedVariant: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n effectiveVariant: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n source: \"cost_center\" | \"company\" | \"system_default\";\n language: \"de\" | \"en\";\n s3Key: string;\n url: string;\n cached: boolean;\n expiresInSeconds: number;\n generatedAt: string;\n};\nexport type ManagingCompaniesInvoiceLayoutsPreviewResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceLayoutsPreviewResponseData>;\n\nexport type ManagingCompaniesInvoiceLayoutsPreviewsParams = undefined;\nexport type ManagingCompaniesInvoiceLayoutsPreviewsQuery = {\n costCenterId?: number;\n language?: \"de\" | \"en\";\n};\nexport type ManagingCompaniesInvoiceLayoutsPreviewsBody = undefined;\nexport type ManagingCompaniesInvoiceLayoutsPreviewsResponseData = {\n items: Array<{\n requestedVariant: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n effectiveVariant: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n source: \"cost_center\" | \"company\" | \"system_default\";\n language: \"de\" | \"en\";\n s3Key: string;\n url: string;\n cached: boolean;\n expiresInSeconds: number;\n generatedAt: string;\n}>;\n};\nexport type ManagingCompaniesInvoiceLayoutsPreviewsResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceLayoutsPreviewsResponseData>;\n\nexport type ManagingCompaniesInvoiceTransparencyContextParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvoiceTransparencyContextQuery = undefined;\nexport type ManagingCompaniesInvoiceTransparencyContextBody = undefined;\nexport type ManagingCompaniesInvoiceTransparencyContextResponseData = {\n asOf: string;\n managingCompany: {\n id: number;\n companyName: string;\n companyCountry: string | null;\n baseCurrency: string | null;\n};\n taxation: {\n regime: string | null;\n regimeValidFrom: string | null;\n regimeValidTo: string | null;\n regimeReason: string | null;\n decisionRequired: boolean;\n explicitRegimeDecision: any | null;\n shouldShowVatOnInvoices: boolean;\n defaultVatTreatmentHint: string | null;\n legalVatHint: {\n key: string;\n defaultMessage: string;\n params?: Record<string, string | number | boolean | null>;\n};\n thresholds: {\n kleinunternehmerGraceAmount: number;\n kleinunternehmerMaxAmount: number;\n};\n revenue: {\n currentYear: {\n year: number;\n amount: number;\n};\n previousYear: {\n year: number;\n amount: number;\n};\n};\n alerts: {\n activeCount: number;\n warnings: Array<{\n code: string;\n severity: \"info\" | \"warning\" | \"critical\";\n title: {\n key: string;\n defaultMessage: string;\n params?: Record<string, string | number | boolean | null>;\n};\n message: {\n key: string;\n defaultMessage: string;\n params?: Record<string, string | number | boolean | null>;\n};\n recommendation?: {\n key: string;\n defaultMessage: string;\n params?: Record<string, string | number | boolean | null>;\n} | null;\n metadata?: Record<string, any>;\n}>;\n};\n};\n invoiceDefaults: {\n defaultPaymentAccountId: number | null;\n defaultPaymentTermsDays: number | null;\n defaultPaymentTermsText: string | null;\n defaultEarlyPaymentDiscountPercent: number | null;\n defaultEarlyPaymentDiscountDays: number | null;\n availableProductTypes: Array<\"standard\" | \"reduced\" | \"custom\">;\n availableItemTypes: Array<{\n value: string;\n label: {\n key: string;\n defaultMessage: string;\n params?: Record<string, string | number | boolean | null>;\n};\n defaultProductType: \"standard\" | \"reduced\" | \"custom\";\n isSystem: boolean;\n}>;\n quotePolicy: {\n requiredOnManualCreate: boolean;\n supportedQuoteVersion: string;\n staleProtectionMode: \"strict\";\n};\n};\n};\nexport type ManagingCompaniesInvoiceTransparencyContextResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceTransparencyContextResponseData>;\n\nexport type ManagingCompaniesInvoiceTransparencyQuoteParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvoiceTransparencyQuoteQuery = undefined;\nexport type ManagingCompaniesInvoiceTransparencyQuoteBody = {\n companyId?: number | null;\n costCenterId?: number | null;\n paymentAccountId?: number | null;\n bankFallbackAccountId?: number | null;\n customerName?: string | null;\n customerStreet?: string | null;\n customerStreetNr?: string | null;\n customerZip?: string | null;\n customerCity?: string | null;\n customerCountry?: string | null;\n customerEmail?: string | null;\n customerPhone?: string | null;\n customerUstId?: string | null;\n invoiceDate: string;\n dueDate: string;\n performedAt?: string | null;\n currency: string;\n notes?: string | null;\n paymentTermsDays?: number | null;\n paymentTermsText?: string | null;\n earlyPaymentDiscountPercent?: number | null;\n earlyPaymentDiscountDays?: number | null;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n customVatRate?: number;\n vatOverrideReason?: string;\n lineItems: Array<{\n title: string;\n description?: string | null;\n quantity: number;\n unitPriceNet: string;\n itemType?: string | null;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n taxRate?: number;\n}>;\n language?: string;\n issueImmediately?: boolean;\n generatePdf?: boolean;\n quoteHash?: string;\n quoteVersion?: string;\n};\nexport type ManagingCompaniesInvoiceTransparencyQuoteResponseData = {\n quoteVersion: string;\n quoteHash: string;\n computedAt: string;\n totals: {\n net: number;\n tax: number;\n gross: number;\n currency: string;\n};\n vat: {\n requestedProductType: \"standard\" | \"reduced\" | \"custom\";\n effectiveTreatment: string;\n effectiveRate: number;\n legalReference: string | null;\n note: string | null;\n isMixedRates: boolean;\n};\n lineItems: Array<{\n index: number;\n title: string;\n quantity: number;\n unitPriceNet: number;\n netAmount: number;\n effectiveTaxRate: number;\n taxAmount: number;\n grossAmount: number;\n taxSource: {\n mode: \"invoice_default\" | \"line_item_standard\" | \"line_item_reduced\" | \"line_item_custom\" | \"kleinunternehmer_override\";\n reason: {\n key: string;\n defaultMessage: string;\n params?: Record<string, string | number | boolean | null>;\n};\n};\n}>;\n paymentResolution: {\n paymentAccountId: number | null;\n paymentAccountSource: \"input\" | \"cost_center\" | \"company_default\" | \"account_default\" | \"sole_active\" | \"none\";\n paymentTermsDays: number | null;\n paymentTermsText: string | null;\n earlyPaymentDiscountPercent: number | null;\n earlyPaymentDiscountDays: number | null;\n};\n warnings: Array<{\n code: string;\n severity: \"info\" | \"warning\" | \"critical\";\n title: {\n key: string;\n defaultMessage: string;\n params?: Record<string, string | number | boolean | null>;\n};\n message: {\n key: string;\n defaultMessage: string;\n params?: Record<string, string | number | boolean | null>;\n};\n recommendation?: {\n key: string;\n defaultMessage: string;\n params?: Record<string, string | number | boolean | null>;\n} | null;\n metadata?: Record<string, any>;\n}>;\n};\nexport type ManagingCompaniesInvoiceTransparencyQuoteResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceTransparencyQuoteResponseData>;\n\nexport type ManagingCompaniesItemTypeConfigsCreateParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesItemTypeConfigsCreateQuery = undefined;\nexport type ManagingCompaniesItemTypeConfigsCreateBody = {\n value: string;\n label: string;\n defaultProductType?: \"standard\" | \"reduced\" | \"custom\";\n sortOrder?: number;\n};\nexport type ManagingCompaniesItemTypeConfigsCreateResponseData = {\n id: number;\n managingCompanyId: number;\n value: string;\n label: string;\n defaultProductType: string;\n sortOrder: number;\n isArchived: boolean;\n createdAt: string;\n createdBy: number | null;\n};\nexport type ManagingCompaniesItemTypeConfigsCreateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesItemTypeConfigsCreateResponseData>;\n\nexport type ManagingCompaniesItemTypeConfigsUpdateParams = {\n managingCompanyId: number;\n value: string;\n};\nexport type ManagingCompaniesItemTypeConfigsUpdateQuery = undefined;\nexport type ManagingCompaniesItemTypeConfigsUpdateBody = {\n label?: string;\n defaultProductType?: \"standard\" | \"reduced\" | \"custom\";\n sortOrder?: number;\n};\nexport type ManagingCompaniesItemTypeConfigsUpdateResponseData = {\n id: number;\n managingCompanyId: number;\n value: string;\n label: string;\n defaultProductType: string;\n sortOrder: number;\n isArchived: boolean;\n createdAt: string;\n createdBy: number | null;\n};\nexport type ManagingCompaniesItemTypeConfigsUpdateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesItemTypeConfigsUpdateResponseData>;\n\nexport type ManagingCompaniesItemTypeConfigsArchiveParams = {\n managingCompanyId: number;\n value: string;\n};\nexport type ManagingCompaniesItemTypeConfigsArchiveQuery = undefined;\nexport type ManagingCompaniesItemTypeConfigsArchiveBody = undefined;\nexport type ManagingCompaniesItemTypeConfigsArchiveResponseData = {\n id: number;\n managingCompanyId: number;\n value: string;\n label: string;\n defaultProductType: string;\n sortOrder: number;\n isArchived: boolean;\n createdAt: string;\n createdBy: number | null;\n};\nexport type ManagingCompaniesItemTypeConfigsArchiveResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesItemTypeConfigsArchiveResponseData>;\n\nexport type ManagingCompaniesInvoiceTemplatesListParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvoiceTemplatesListQuery = {\n includeArchived?: boolean;\n search?: string;\n companyId?: number;\n page?: number;\n pageSize?: number;\n};\nexport type ManagingCompaniesInvoiceTemplatesListBody = undefined;\nexport type ManagingCompaniesInvoiceTemplatesListResponseData = {\n items: Array<{\n id: number;\n managingCompanyId: number;\n name: string;\n description: string | null;\n companyId: number | null;\n costCenterId: number | null;\n paymentAccountId: number | null;\n currency: string;\n language: string;\n productType: string;\n customVatRate: string | null;\n paymentTermsDays: number | null;\n paymentTermsText: string | null;\n earlyPaymentDiscountPercent: string | null;\n earlyPaymentDiscountDays: number | null;\n notes: string | null;\n lineItems: Array<{\n title: string;\n description?: string | null;\n unitPriceNet: string;\n defaultQuantity: number;\n itemType: string;\n productType: string;\n taxRate?: number;\n sortOrder: number;\n}>;\n isArchived: boolean;\n sortOrder: number;\n lastUsedAt: string | null;\n usageCount: number;\n createdAt: string;\n createdBy: number | null;\n updatedAt: string | null;\n updatedBy: number | null;\n}>;\n page: number;\n pageSize: number;\n total: number;\n totalPages: number;\n hasNextPage: boolean;\n hasPrevPage: boolean;\n};\nexport type ManagingCompaniesInvoiceTemplatesListResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceTemplatesListResponseData>;\n\nexport type ManagingCompaniesInvoiceTemplatesGetParams = {\n templateId: number;\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvoiceTemplatesGetQuery = undefined;\nexport type ManagingCompaniesInvoiceTemplatesGetBody = undefined;\nexport type ManagingCompaniesInvoiceTemplatesGetResponseData = {\n id: number;\n managingCompanyId: number;\n name: string;\n description: string | null;\n companyId: number | null;\n costCenterId: number | null;\n paymentAccountId: number | null;\n currency: string;\n language: string;\n productType: string;\n customVatRate: string | null;\n paymentTermsDays: number | null;\n paymentTermsText: string | null;\n earlyPaymentDiscountPercent: string | null;\n earlyPaymentDiscountDays: number | null;\n notes: string | null;\n lineItems: Array<{\n title: string;\n description?: string | null;\n unitPriceNet: string;\n defaultQuantity: number;\n itemType: string;\n productType: string;\n taxRate?: number;\n sortOrder: number;\n}>;\n isArchived: boolean;\n sortOrder: number;\n lastUsedAt: string | null;\n usageCount: number;\n createdAt: string;\n createdBy: number | null;\n updatedAt: string | null;\n updatedBy: number | null;\n};\nexport type ManagingCompaniesInvoiceTemplatesGetResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceTemplatesGetResponseData>;\n\nexport type ManagingCompaniesInvoiceTemplatesCreateParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvoiceTemplatesCreateQuery = undefined;\nexport type ManagingCompaniesInvoiceTemplatesCreateBody = {\n name: string;\n description?: string | null;\n companyId?: number | null;\n costCenterId?: number | null;\n paymentAccountId?: number | null;\n currency?: string;\n language?: string;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n customVatRate?: number | null;\n paymentTermsDays?: number | null;\n paymentTermsText?: string | null;\n earlyPaymentDiscountPercent?: number | null;\n earlyPaymentDiscountDays?: number | null;\n notes?: string | null;\n lineItems: Array<{\n title: string;\n description?: string | null;\n unitPriceNet: string;\n defaultQuantity?: number;\n itemType?: string;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n taxRate?: number;\n sortOrder?: number;\n}>;\n sortOrder?: number;\n};\nexport type ManagingCompaniesInvoiceTemplatesCreateResponseData = {\n id: number;\n managingCompanyId: number;\n name: string;\n description: string | null;\n companyId: number | null;\n costCenterId: number | null;\n paymentAccountId: number | null;\n currency: string;\n language: string;\n productType: string;\n customVatRate: string | null;\n paymentTermsDays: number | null;\n paymentTermsText: string | null;\n earlyPaymentDiscountPercent: string | null;\n earlyPaymentDiscountDays: number | null;\n notes: string | null;\n lineItems: Array<{\n title: string;\n description?: string | null;\n unitPriceNet: string;\n defaultQuantity: number;\n itemType: string;\n productType: string;\n taxRate?: number;\n sortOrder: number;\n}>;\n isArchived: boolean;\n sortOrder: number;\n lastUsedAt: string | null;\n usageCount: number;\n createdAt: string;\n createdBy: number | null;\n updatedAt: string | null;\n updatedBy: number | null;\n};\nexport type ManagingCompaniesInvoiceTemplatesCreateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceTemplatesCreateResponseData>;\n\nexport type ManagingCompaniesInvoiceTemplatesFromInvoiceParams = {\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvoiceTemplatesFromInvoiceQuery = undefined;\nexport type ManagingCompaniesInvoiceTemplatesFromInvoiceBody = {\n invoiceId: number;\n name: string;\n description?: string | null;\n};\nexport type ManagingCompaniesInvoiceTemplatesFromInvoiceResponseData = {\n id: number;\n managingCompanyId: number;\n name: string;\n description: string | null;\n companyId: number | null;\n costCenterId: number | null;\n paymentAccountId: number | null;\n currency: string;\n language: string;\n productType: string;\n customVatRate: string | null;\n paymentTermsDays: number | null;\n paymentTermsText: string | null;\n earlyPaymentDiscountPercent: string | null;\n earlyPaymentDiscountDays: number | null;\n notes: string | null;\n lineItems: Array<{\n title: string;\n description?: string | null;\n unitPriceNet: string;\n defaultQuantity: number;\n itemType: string;\n productType: string;\n taxRate?: number;\n sortOrder: number;\n}>;\n isArchived: boolean;\n sortOrder: number;\n lastUsedAt: string | null;\n usageCount: number;\n createdAt: string;\n createdBy: number | null;\n updatedAt: string | null;\n updatedBy: number | null;\n};\nexport type ManagingCompaniesInvoiceTemplatesFromInvoiceResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceTemplatesFromInvoiceResponseData>;\n\nexport type ManagingCompaniesInvoiceTemplatesUpdateParams = {\n templateId: number;\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvoiceTemplatesUpdateQuery = undefined;\nexport type ManagingCompaniesInvoiceTemplatesUpdateBody = {\n name?: string;\n description?: string | null;\n companyId?: number | null;\n costCenterId?: number | null;\n paymentAccountId?: number | null;\n currency?: string;\n language?: string;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n customVatRate?: number | null;\n paymentTermsDays?: number | null;\n paymentTermsText?: string | null;\n earlyPaymentDiscountPercent?: number | null;\n earlyPaymentDiscountDays?: number | null;\n notes?: string | null;\n lineItems?: Array<{\n title: string;\n description?: string | null;\n unitPriceNet: string;\n defaultQuantity?: number;\n itemType?: string;\n productType?: \"standard\" | \"reduced\" | \"custom\";\n taxRate?: number;\n sortOrder?: number;\n}>;\n sortOrder?: number;\n isArchived?: boolean;\n};\nexport type ManagingCompaniesInvoiceTemplatesUpdateResponseData = {\n id: number;\n managingCompanyId: number;\n name: string;\n description: string | null;\n companyId: number | null;\n costCenterId: number | null;\n paymentAccountId: number | null;\n currency: string;\n language: string;\n productType: string;\n customVatRate: string | null;\n paymentTermsDays: number | null;\n paymentTermsText: string | null;\n earlyPaymentDiscountPercent: string | null;\n earlyPaymentDiscountDays: number | null;\n notes: string | null;\n lineItems: Array<{\n title: string;\n description?: string | null;\n unitPriceNet: string;\n defaultQuantity: number;\n itemType: string;\n productType: string;\n taxRate?: number;\n sortOrder: number;\n}>;\n isArchived: boolean;\n sortOrder: number;\n lastUsedAt: string | null;\n usageCount: number;\n createdAt: string;\n createdBy: number | null;\n updatedAt: string | null;\n updatedBy: number | null;\n};\nexport type ManagingCompaniesInvoiceTemplatesUpdateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceTemplatesUpdateResponseData>;\n\nexport type ManagingCompaniesInvoiceTemplatesArchiveParams = {\n templateId: number;\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvoiceTemplatesArchiveQuery = undefined;\nexport type ManagingCompaniesInvoiceTemplatesArchiveBody = undefined;\nexport type ManagingCompaniesInvoiceTemplatesArchiveResponseData = {\n id: number;\n managingCompanyId: number;\n name: string;\n description: string | null;\n companyId: number | null;\n costCenterId: number | null;\n paymentAccountId: number | null;\n currency: string;\n language: string;\n productType: string;\n customVatRate: string | null;\n paymentTermsDays: number | null;\n paymentTermsText: string | null;\n earlyPaymentDiscountPercent: string | null;\n earlyPaymentDiscountDays: number | null;\n notes: string | null;\n lineItems: Array<{\n title: string;\n description?: string | null;\n unitPriceNet: string;\n defaultQuantity: number;\n itemType: string;\n productType: string;\n taxRate?: number;\n sortOrder: number;\n}>;\n isArchived: boolean;\n sortOrder: number;\n lastUsedAt: string | null;\n usageCount: number;\n createdAt: string;\n createdBy: number | null;\n updatedAt: string | null;\n updatedBy: number | null;\n};\nexport type ManagingCompaniesInvoiceTemplatesArchiveResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceTemplatesArchiveResponseData>;\n\nexport type ManagingCompaniesInvoiceTemplatesDuplicateParams = {\n templateId: number;\n managingCompanyId: number;\n};\nexport type ManagingCompaniesInvoiceTemplatesDuplicateQuery = undefined;\nexport type ManagingCompaniesInvoiceTemplatesDuplicateBody = {\n name: string;\n};\nexport type ManagingCompaniesInvoiceTemplatesDuplicateResponseData = {\n id: number;\n managingCompanyId: number;\n name: string;\n description: string | null;\n companyId: number | null;\n costCenterId: number | null;\n paymentAccountId: number | null;\n currency: string;\n language: string;\n productType: string;\n customVatRate: string | null;\n paymentTermsDays: number | null;\n paymentTermsText: string | null;\n earlyPaymentDiscountPercent: string | null;\n earlyPaymentDiscountDays: number | null;\n notes: string | null;\n lineItems: Array<{\n title: string;\n description?: string | null;\n unitPriceNet: string;\n defaultQuantity: number;\n itemType: string;\n productType: string;\n taxRate?: number;\n sortOrder: number;\n}>;\n isArchived: boolean;\n sortOrder: number;\n lastUsedAt: string | null;\n usageCount: number;\n createdAt: string;\n createdBy: number | null;\n updatedAt: string | null;\n updatedBy: number | null;\n};\nexport type ManagingCompaniesInvoiceTemplatesDuplicateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesInvoiceTemplatesDuplicateResponseData>;\n\nexport type ManagingCompaniesCreateParams = undefined;\nexport type ManagingCompaniesCreateQuery = undefined;\nexport type ManagingCompaniesCreateBody = {\n companyName: string;\n companyLegalForm?: \"Einzelunternehmen\" | \"Freiberufler\" | \"GbR\" | \"UG\" | \"GmbH\" | \"AG\" | \"KG\" | \"OHG\" | \"PartG\" | \"eK\" | null;\n companyManagingDirector?: string | null;\n companyStreet?: string | null;\n companyStreetNr?: string | null;\n companyZip?: string | null;\n companyCity?: string | null;\n companyCountry?: string | null;\n companyEmail?: string | null;\n companyPhone?: string | null;\n companyWebsite?: string | null;\n companyCommercialRegister?: string | null;\n companyRegistrationCourt?: string | null;\n companyTaxId?: string | null;\n companyVatId?: string | null;\n zugferdEnable?: boolean;\n zugferdDefaultProfile?: \"MINIMUM\" | \"BASIC_WL\" | \"BASIC\" | \"EN16931\" | \"EXTENDED\" | \"XRECHNUNG\";\n baseCurrency?: \"EUR\" | \"USD\" | \"GBP\" | \"JPY\" | \"CHF\" | \"CAD\" | \"AUD\" | \"CNY\" | \"SEK\" | \"NOK\" | \"DKK\" | \"PLN\" | \"CZK\" | \"HUF\" | \"RON\" | \"BGN\" | \"KRW\" | \"SGD\" | \"HKD\" | \"NZD\" | \"INR\" | \"THB\" | \"MYR\" | \"IDR\" | \"PHP\" | \"BRL\" | \"MXN\" | \"ARS\" | \"CLP\" | \"COP\" | \"AED\" | \"SAR\" | \"ILS\" | \"ZAR\" | \"EGP\" | \"TRY\" | \"RUB\";\n invoiceLayoutVariant?: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n bookkeepingBasis?: \"eur\" | \"accrual\";\n};\nexport type ManagingCompaniesCreateResponseData = ManagingCompany;\nexport type ManagingCompaniesCreateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCreateResponseData>;\n\nexport type ManagingCompaniesListParams = undefined;\nexport type ManagingCompaniesListQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n};\nexport type ManagingCompaniesListBody = undefined;\nexport type ManagingCompaniesListResponseData = PaginatedResult<ManagingCompany>;\nexport type ManagingCompaniesListResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesListResponseData>;\n\nexport type ManagingCompaniesGetByIdParams = {\n id: number;\n};\nexport type ManagingCompaniesGetByIdQuery = undefined;\nexport type ManagingCompaniesGetByIdBody = undefined;\nexport type ManagingCompaniesGetByIdResponseData = ManagingCompany;\nexport type ManagingCompaniesGetByIdResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesGetByIdResponseData>;\n\nexport type ManagingCompaniesUpdateParams = {\n id: number;\n};\nexport type ManagingCompaniesUpdateQuery = undefined;\nexport type ManagingCompaniesUpdateBody = {\n companyName?: string;\n companyLegalForm?: \"Einzelunternehmen\" | \"Freiberufler\" | \"GbR\" | \"UG\" | \"GmbH\" | \"AG\" | \"KG\" | \"OHG\" | \"PartG\" | \"eK\" | null;\n companyManagingDirector?: string | null;\n companyStreet?: string | null;\n companyStreetNr?: string | null;\n companyZip?: string | null;\n companyCity?: string | null;\n companyCountry?: string | null;\n companyEmail?: string | null;\n companyPhone?: string | null;\n companyWebsite?: string | null;\n companyCommercialRegister?: string | null;\n companyRegistrationCourt?: string | null;\n companyTaxId?: string | null;\n companyVatId?: string | null;\n zugferdEnable?: boolean;\n zugferdDefaultProfile?: \"MINIMUM\" | \"BASIC_WL\" | \"BASIC\" | \"EN16931\" | \"EXTENDED\" | \"XRECHNUNG\";\n baseCurrency?: \"EUR\" | \"USD\" | \"GBP\" | \"JPY\" | \"CHF\" | \"CAD\" | \"AUD\" | \"CNY\" | \"SEK\" | \"NOK\" | \"DKK\" | \"PLN\" | \"CZK\" | \"HUF\" | \"RON\" | \"BGN\" | \"KRW\" | \"SGD\" | \"HKD\" | \"NZD\" | \"INR\" | \"THB\" | \"MYR\" | \"IDR\" | \"PHP\" | \"BRL\" | \"MXN\" | \"ARS\" | \"CLP\" | \"COP\" | \"AED\" | \"SAR\" | \"ILS\" | \"ZAR\" | \"EGP\" | \"TRY\" | \"RUB\";\n invoiceLayoutVariant?: \"din5008_modern\" | \"din5008_classic\" | \"din5008_minimal\" | \"din5008_compact\" | \"din5008_enterprise\";\n bookkeepingBasis?: \"eur\" | \"accrual\";\n};\nexport type ManagingCompaniesUpdateResponseData = ManagingCompany;\nexport type ManagingCompaniesUpdateResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesUpdateResponseData>;\n\nexport type ManagingCompaniesDeleteParams = {\n id: number;\n};\nexport type ManagingCompaniesDeleteQuery = undefined;\nexport type ManagingCompaniesDeleteBody = undefined;\nexport type ManagingCompaniesDeleteResponseData = null;\nexport type ManagingCompaniesDeleteResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesDeleteResponseData>;\n\nexport const apiRoutes_managing_companies = {\n // Contract source: explicit\n \"managing_companies_user_assignments_assign\": {\n method: \"POST\",\n path: \"/managing-companies/user-assignments/assign\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"user-assignments\"],\n summary: \"Benutzer zu Unternehmen einladen/zuweisen\",\n description: \"Weist einen Benutzer einem Unternehmen zu (oder erstellt eine Invite, falls nötig). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesUserAssignmentsAssignParams;\n query: ManagingCompaniesUserAssignmentsAssignQuery;\n body: ManagingCompaniesUserAssignmentsAssignBody;\n response: ManagingCompaniesUserAssignmentsAssignResponse;\n responseData: ManagingCompaniesUserAssignmentsAssignResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_user_assignments_revoke\": {\n method: \"POST\",\n path: \"/managing-companies/user-assignments/revoke\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"user-assignments\"],\n summary: \"Benutzer-Zuweisung widerrufen\",\n description: \"Entfernt einen Benutzer aus einem Unternehmen (Zuweisung widerrufen). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesUserAssignmentsRevokeParams;\n query: ManagingCompaniesUserAssignmentsRevokeQuery;\n body: ManagingCompaniesUserAssignmentsRevokeBody;\n response: ManagingCompaniesUserAssignmentsRevokeResponse;\n responseData: ManagingCompaniesUserAssignmentsRevokeResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_user_assignments_update\": {\n method: \"PUT\",\n path: \"/managing-companies/user-assignments/update/:assignmentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"user-assignments\"],\n summary: \"Benutzer-Zuweisung aktualisieren\",\n description: \"Ändert Rolle/Gültigkeit/CompanyRole einer bestehenden Zuweisung. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesUserAssignmentsUpdateParams;\n query: ManagingCompaniesUserAssignmentsUpdateQuery;\n body: ManagingCompaniesUserAssignmentsUpdateBody;\n response: ManagingCompaniesUserAssignmentsUpdateResponse;\n responseData: ManagingCompaniesUserAssignmentsUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_user_assignments_cost_centers_add\": {\n method: \"POST\",\n path: \"/managing-companies/user-assignments/cost-centers/add\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"user-assignments\"],\n summary: \"Cost Center zu Zuweisung hinzufügen\",\n description: \"Fügt einer Benutzer-Zuweisung zusätzliche Cost Center hinzu. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesUserAssignmentsCostCentersAddParams;\n query: ManagingCompaniesUserAssignmentsCostCentersAddQuery;\n body: ManagingCompaniesUserAssignmentsCostCentersAddBody;\n response: ManagingCompaniesUserAssignmentsCostCentersAddResponse;\n responseData: ManagingCompaniesUserAssignmentsCostCentersAddResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_user_assignments_cost_centers_remove\": {\n method: \"POST\",\n path: \"/managing-companies/user-assignments/cost-centers/remove\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"user-assignments\"],\n summary: \"Cost Center von Zuweisung entfernen\",\n description: \"Entfernt Cost Center von einer Benutzer-Zuweisung. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesUserAssignmentsCostCentersRemoveParams;\n query: ManagingCompaniesUserAssignmentsCostCentersRemoveQuery;\n body: ManagingCompaniesUserAssignmentsCostCentersRemoveBody;\n response: ManagingCompaniesUserAssignmentsCostCentersRemoveResponse;\n responseData: ManagingCompaniesUserAssignmentsCostCentersRemoveResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_user_assignments_list\": {\n method: \"GET\",\n path: \"/managing-companies/user-assignments/list/:companyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"user-assignments\"],\n summary: \"Benutzer-Zuweisungen listen\",\n description: \"Listet Benutzer-Zuweisungen eines Unternehmens paginiert (inkl. optionaler User-Infos). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesUserAssignmentsListParams;\n query: ManagingCompaniesUserAssignmentsListQuery;\n body: ManagingCompaniesUserAssignmentsListBody;\n response: ManagingCompaniesUserAssignmentsListResponse;\n responseData: ManagingCompaniesUserAssignmentsListResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_create\": {\n method: \"POST\",\n path: \"/managing-companies/cost-centers/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost Center erstellen\",\n description: \"Erstellt einen Cost Center für ein Managing Company. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersCreateParams;\n query: ManagingCompaniesCostCentersCreateQuery;\n body: ManagingCompaniesCostCentersCreateBody;\n response: ManagingCompaniesCostCentersCreateResponse;\n responseData: ManagingCompaniesCostCentersCreateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_my\": {\n method: \"GET\",\n path: \"/managing-companies/cost-centers/my/:managingCompanyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Meine Cost Center\",\n description: \"Lädt alle Cost Center für das angegebene Managing Company (nicht paginiert). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersMyParams;\n query: ManagingCompaniesCostCentersMyQuery;\n body: ManagingCompaniesCostCentersMyBody;\n response: ManagingCompaniesCostCentersMyResponse;\n responseData: ManagingCompaniesCostCentersMyResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_by_id\": {\n method: \"GET\",\n path: \"/managing-companies/cost-centers/byId/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost Center nach ID\",\n description: \"Lädt einen Cost Center per ID. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersByIdParams;\n query: ManagingCompaniesCostCentersByIdQuery;\n body: ManagingCompaniesCostCentersByIdBody;\n response: ManagingCompaniesCostCentersByIdResponse;\n responseData: ManagingCompaniesCostCentersByIdResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_logos_settings\": {\n method: \"GET\",\n path: \"/managing-companies/cost-centers/logos/settings/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost-Center Logo-Settings\",\n description: \"Lädt die aktuell hinterlegten white/dark Logo-Keys eines Cost Centers inklusive aktivem Invoice-Logo-Modus der Company.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersLogosSettingsParams;\n query: ManagingCompaniesCostCentersLogosSettingsQuery;\n body: ManagingCompaniesCostCentersLogosSettingsBody;\n response: ManagingCompaniesCostCentersLogosSettingsResponse;\n responseData: ManagingCompaniesCostCentersLogosSettingsResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_logos_upload\": {\n method: \"POST\",\n path: \"/managing-companies/cost-centers/logos/upload/:id/:mode\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost-Center Logo hochladen\",\n description: \"Lädt ein White- oder Dark-Logo für ein Cost Center hoch (PNG/JPEG/SVG, max 5MB) und ersetzt das bestehende Logo in diesem Modus.\",\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersLogosUploadParams;\n query: ManagingCompaniesCostCentersLogosUploadQuery;\n body: ManagingCompaniesCostCentersLogosUploadBody;\n response: ManagingCompaniesCostCentersLogosUploadResponse;\n responseData: ManagingCompaniesCostCentersLogosUploadResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_logos_delete\": {\n method: \"DELETE\",\n path: \"/managing-companies/cost-centers/logos/delete/:id/:mode\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost-Center Logo löschen\",\n description: \"Löscht das White- oder Dark-Logo eines Cost Centers und entfernt den zugehörigen Key.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersLogosDeleteParams;\n query: ManagingCompaniesCostCentersLogosDeleteQuery;\n body: ManagingCompaniesCostCentersLogosDeleteBody;\n response: ManagingCompaniesCostCentersLogosDeleteResponse;\n responseData: ManagingCompaniesCostCentersLogosDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_logos_urls\": {\n method: \"GET\",\n path: \"/managing-companies/cost-centers/logos/urls/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost-Center Logo-URLs\",\n description: \"Lädt presigned Download-URLs (1h) für White-/Dark-Logo eines Cost Centers.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersLogosUrlsParams;\n query: ManagingCompaniesCostCentersLogosUrlsQuery;\n body: ManagingCompaniesCostCentersLogosUrlsBody;\n response: ManagingCompaniesCostCentersLogosUrlsResponse;\n responseData: ManagingCompaniesCostCentersLogosUrlsResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_by_ids\": {\n method: \"GET\",\n path: \"/managing-companies/cost-centers/by-ids\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost Center per IDs\",\n description: \"Lädt mehrere Cost Center anhand einer Liste von IDs. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersByIdsParams;\n query: ManagingCompaniesCostCentersByIdsQuery;\n body: ManagingCompaniesCostCentersByIdsBody;\n response: ManagingCompaniesCostCentersByIdsResponse;\n responseData: ManagingCompaniesCostCentersByIdsResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_update\": {\n method: \"PUT\",\n path: \"/managing-companies/cost-centers/update/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost Center aktualisieren\",\n description: \"Aktualisiert Felder eines Cost Centers (Name, Code, Archiviert, Sortierung, …). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersUpdateParams;\n query: ManagingCompaniesCostCentersUpdateQuery;\n body: ManagingCompaniesCostCentersUpdateBody;\n response: ManagingCompaniesCostCentersUpdateResponse;\n responseData: ManagingCompaniesCostCentersUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_delete\": {\n method: \"DELETE\",\n path: \"/managing-companies/cost-centers/delete/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost Center löschen\",\n description: \"Löscht einen Cost Center. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersDeleteParams;\n query: ManagingCompaniesCostCentersDeleteQuery;\n body: ManagingCompaniesCostCentersDeleteBody;\n response: ManagingCompaniesCostCentersDeleteResponse;\n responseData: ManagingCompaniesCostCentersDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_cost_centers_list\": {\n method: \"GET\",\n path: \"/managing-companies/cost-centers/list/:managingCompanyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"cost-centers\"],\n summary: \"Cost Center listen (pagininiert)\",\n description: \"Listet Cost Center eines Managing Company paginiert (Filter via Query). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCostCentersListParams;\n query: ManagingCompaniesCostCentersListQuery;\n body: ManagingCompaniesCostCentersListBody;\n response: ManagingCompaniesCostCentersListResponse;\n responseData: ManagingCompaniesCostCentersListResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_selected_set\": {\n method: \"POST\",\n path: \"/managing-companies/selected/set/:companyId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"selected-company\"],\n summary: \"Ausgewähltes Unternehmen setzen\",\n description: \"Setzt das aktuell ausgewählte Managing Company (Mandant) für den Benutzer. Auth: Bearer.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesSelectedSetParams;\n query: ManagingCompaniesSelectedSetQuery;\n body: ManagingCompaniesSelectedSetBody;\n response: ManagingCompaniesSelectedSetResponse;\n responseData: ManagingCompaniesSelectedSetResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_selected_current\": {\n method: \"GET\",\n path: \"/managing-companies/selected/current\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"selected-company\"],\n summary: \"Ausgewähltes Unternehmen abrufen\",\n description: \"Gibt das aktuell ausgewählte Managing Company (inkl. FullSelectedCompany) zurück oder `null`, falls keines gesetzt ist. Auth: Bearer.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesSelectedCurrentParams;\n query: ManagingCompaniesSelectedCurrentQuery;\n body: ManagingCompaniesSelectedCurrentBody;\n response: ManagingCompaniesSelectedCurrentResponse;\n responseData: ManagingCompaniesSelectedCurrentResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_vat_settings_get\": {\n method: \"GET\",\n path: \"/managing-companies/vat-settings/:companyId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"vat-settings\"],\n summary: \"USt-Einstellungen lesen\",\n description: \"Lädt die aktuellen USt-Einstellungen inklusive erweiterbarer Steuerentscheidungen (taxDecisions) für ein Managing Company. Gibt null zurück falls noch keine Einstellungen vorhanden. Auth: Bearer.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesVatSettingsGetParams;\n query: ManagingCompaniesVatSettingsGetQuery;\n body: ManagingCompaniesVatSettingsGetBody;\n response: ManagingCompaniesVatSettingsGetResponse;\n responseData: ManagingCompaniesVatSettingsGetResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_vat_settings_upsert\": {\n method: \"POST\",\n path: \"/managing-companies/vat-settings/:companyId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"vat-settings\"],\n summary: \"USt-Einstellungen speichern\",\n description: \"Ändert Besteuerungsverfahren (SOLL/IST), UStVA-Anmeldepräferenz und optional taxDecisions (erweiterbare Steuerentscheidungsmap) für ein Managing Company (Upsert). Für eine vollständig auditierte Änderung mit Historieneinträgen nutze stattdessen PUT /admin/vat/company/:id/settings. Auth: Bearer.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesVatSettingsUpsertParams;\n query: ManagingCompaniesVatSettingsUpsertQuery;\n body: ManagingCompaniesVatSettingsUpsertBody;\n response: ManagingCompaniesVatSettingsUpsertResponse;\n responseData: ManagingCompaniesVatSettingsUpsertResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_vat_settings_decision_upsert\": {\n method: \"PUT\",\n path: \"/managing-companies/vat-settings/:companyId/decisions/:decisionKey\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"vat-settings\"],\n summary: \"Steuerentscheidung aktiv setzen\",\n description: \"Speichert eine explizite Steuerentscheidung des Users unter einem frei erweiterbaren Entscheidungsschluessel. Das System trifft KEINE automatischen Steuerentscheidungen – dieser Endpoint ist immer eine bewusste User-Aktion. Bekannte Keys: 'vat.regime' → value: { regime: 'kleinunternehmer' | 'regelbesteuert' } – setzt das USt-Regime. Typischer Flow: User sieht Alert (GET /tax-alerts activeCount > 0), klickt 'Jetzt umstellen', Frontend sendet diesen Call. 'vat.regime.auto_switch_consent' → value: { enabled: true|false } – opt-in: System darf bei §19-Grenzwert-Ueberschreitung automatisch umstellen. effectiveFrom: ISO-Datetime ab wann die Entscheidung gilt (default: jetzt). note: Begruendung / Notiz fuer Audit-Log. Response appliedRegimePeriod ist gesetzt wenn ein Regime-Zeitraum angelegt wurde.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesVatSettingsDecisionUpsertParams;\n query: ManagingCompaniesVatSettingsDecisionUpsertQuery;\n body: ManagingCompaniesVatSettingsDecisionUpsertBody;\n response: ManagingCompaniesVatSettingsDecisionUpsertResponse;\n responseData: ManagingCompaniesVatSettingsDecisionUpsertResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_vat_settings_tax_alerts\": {\n method: \"GET\",\n path: \"/managing-companies/vat-settings/:companyId/tax-alerts\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"vat-settings\"],\n summary: \"Steuerliche Handlungshinweise abrufen\",\n description: \"Gibt alle aktiven (und aufgeloesten) Steuerhinweise zurueck, die eine explizite User-Entscheidung erfordern. Das System trifft KEINE automatischen Steuerentscheidungen – Alerts signalisieren nur, dass der User handeln muss. Frontend-Flow: (1) activeCount > 0 → Badge/Banner anzeigen. (2) Jeden Alert mit active=true anzeigen: title + message direkt verwendbar als Benachrichtigungstext. (3) Hat ein Alert requiredDecision != null → 'Jetzt entscheiden'-Button anzeigen: requiredDecision.endpoint = exakter API-Pfad fuer PUT /decisions/:decisionKey, requiredDecision.suggestedValue = empfohlener value-Wert (direkt uebergeben), requiredDecision.currentValue = aktuell gesetzter Wert. (4) Nach User-Klick: PUT /managing-companies/vat-settings/:companyId/decisions/:decisionKey aufrufen, dann diesen Endpoint erneut aufrufen um Badge zu aktualisieren. Aktuell implementierte Alerts: • vat.regime.current_year_exceeded – §19 UStG laufendes Jahr >= 100k → sofortige Umstellung auf regelbesteuert erforderlich. • vat.regime.previous_year_exceeded – §19 UStG Vorjahr > 25k → Umstellung auf regelbesteuert empfohlen. metadata.autoSwitchEnabled zeigt ob User auto_switch_consent bereits aktiviert hat. activeCount = Anzahl noch ungeloester aktiver Alerts (sinnvoll fuer Badge/Dot im Frontend).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesVatSettingsTaxAlertsParams;\n query: ManagingCompaniesVatSettingsTaxAlertsQuery;\n body: ManagingCompaniesVatSettingsTaxAlertsBody;\n response: ManagingCompaniesVatSettingsTaxAlertsResponse;\n responseData: ManagingCompaniesVatSettingsTaxAlertsResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invites_pending_user\": {\n method: \"GET\",\n path: \"/managing-companies/invites/pending/user\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"invites\"],\n summary: \"Eigene offene Einladungen\",\n description: \"Listet offene Einladungen für den aktuell eingeloggten Benutzer (pagininiert). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvitesPendingUserParams;\n query: ManagingCompaniesInvitesPendingUserQuery;\n body: ManagingCompaniesInvitesPendingUserBody;\n response: ManagingCompaniesInvitesPendingUserResponse;\n responseData: ManagingCompaniesInvitesPendingUserResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invites_pending_company\": {\n method: \"GET\",\n path: \"/managing-companies/invites/pending/company/:managingCompanyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"invites\"],\n summary: \"Offene Einladungen eines Unternehmens\",\n description: \"Listet offene Einladungen für ein Managing Company (pagininiert). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvitesPendingCompanyParams;\n query: ManagingCompaniesInvitesPendingCompanyQuery;\n body: ManagingCompaniesInvitesPendingCompanyBody;\n response: ManagingCompaniesInvitesPendingCompanyResponse;\n responseData: ManagingCompaniesInvitesPendingCompanyResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invites_pending_company_preview\": {\n method: \"GET\",\n path: \"/managing-companies/invites/pending/company/:managingCompanyId/preview\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invites\"],\n summary: \"Invite-Preview (Unternehmensdaten)\",\n description: \"Preview von Unternehmensdaten zu einem Invite-Token (z.B. zur Anzeige vor Annahme). Auth: Bearer.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvitesPendingCompanyPreviewParams;\n query: ManagingCompaniesInvitesPendingCompanyPreviewQuery;\n body: ManagingCompaniesInvitesPendingCompanyPreviewBody;\n response: ManagingCompaniesInvitesPendingCompanyPreviewResponse;\n responseData: ManagingCompaniesInvitesPendingCompanyPreviewResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invites_accept\": {\n method: \"POST\",\n path: \"/managing-companies/invites/accept/:token\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invites\"],\n summary: \"Einladung annehmen\",\n description: \"Nimmt eine Einladung per Token an und legt/aktiviert die Zuweisung. Auth: Bearer.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvitesAcceptParams;\n query: ManagingCompaniesInvitesAcceptQuery;\n body: ManagingCompaniesInvitesAcceptBody;\n response: ManagingCompaniesInvitesAcceptResponse;\n responseData: ManagingCompaniesInvitesAcceptResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invites_reject\": {\n method: \"POST\",\n path: \"/managing-companies/invites/reject/:token\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invites\"],\n summary: \"Einladung ablehnen\",\n description: \"Lehnt eine Einladung per Token ab. Auth: Bearer.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvitesRejectParams;\n query: ManagingCompaniesInvitesRejectQuery;\n body: ManagingCompaniesInvitesRejectBody;\n response: ManagingCompaniesInvitesRejectResponse;\n responseData: ManagingCompaniesInvitesRejectResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invites_cancel\": {\n method: \"DELETE\",\n path: \"/managing-companies/invites/cancel/:inviteId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invites\"],\n summary: \"Einladung stornieren\",\n description: \"Storniert eine ausstehende Einladung (i.d.R. durch Admin/Editor). Auth: Bearer.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvitesCancelParams;\n query: ManagingCompaniesInvitesCancelQuery;\n body: ManagingCompaniesInvitesCancelBody;\n response: ManagingCompaniesInvitesCancelResponse;\n responseData: ManagingCompaniesInvitesCancelResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_api_keys_create\": {\n method: \"POST\",\n path: \"/managing-companies/api-keys/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"api-keys\"],\n summary: \"API-Key erstellen\",\n description: \"Erstellt einen neuen API-Key für das ausgewählte Unternehmen (inkl. Klartext-Key in der Response). Cost-Center-Regeln: Für `role=admin` ist der Key immer unbeschränkt (`availableCostCenters = null`). Für `viewer`/`editor` ist `availableCostCenters` eine Whitelist (wenn nicht gesetzt => leere Liste). `defaultCostCenter` muss zur Company gehören und bei Nicht-Admin in der Whitelist enthalten sein.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesApiKeysCreateParams;\n query: ManagingCompaniesApiKeysCreateQuery;\n body: ManagingCompaniesApiKeysCreateBody;\n response: ManagingCompaniesApiKeysCreateResponse;\n responseData: ManagingCompaniesApiKeysCreateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_api_keys_update\": {\n method: \"PUT\",\n path: \"/managing-companies/api-keys/update/:apiKeyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"api-keys\"],\n summary: \"API-Key aktualisieren\",\n description: \"Ändert Name/Rolle/Gültigkeit/Cost-Center-Zuordnung eines API-Keys. Cost-Center-Regeln: Nicht-Admin-Keys sind whitelist-basiert (`availableCostCenters`), Admin-Keys werden auf unbeschränkt gesetzt (`availableCostCenters = null`).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesApiKeysUpdateParams;\n query: ManagingCompaniesApiKeysUpdateQuery;\n body: ManagingCompaniesApiKeysUpdateBody;\n response: ManagingCompaniesApiKeysUpdateResponse;\n responseData: ManagingCompaniesApiKeysUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_api_keys_delete\": {\n method: \"DELETE\",\n path: \"/managing-companies/api-keys/delete/:apiKeyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"api-keys\"],\n summary: \"API-Key löschen\",\n description: \"Löscht einen API-Key. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesApiKeysDeleteParams;\n query: ManagingCompaniesApiKeysDeleteQuery;\n body: ManagingCompaniesApiKeysDeleteBody;\n response: ManagingCompaniesApiKeysDeleteResponse;\n responseData: ManagingCompaniesApiKeysDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_api_keys_revoke\": {\n method: \"POST\",\n path: \"/managing-companies/api-keys/revoke/:apiKeyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"api-keys\"],\n summary: \"API-Key sperren (revoke)\",\n description: \"Setzt einen API-Key außer Kraft, ohne ihn zwingend zu löschen. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesApiKeysRevokeParams;\n query: ManagingCompaniesApiKeysRevokeQuery;\n body: ManagingCompaniesApiKeysRevokeBody;\n response: ManagingCompaniesApiKeysRevokeResponse;\n responseData: ManagingCompaniesApiKeysRevokeResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_api_keys_by_id\": {\n method: \"GET\",\n path: \"/managing-companies/api-keys/byId/:apiKeyId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"api-keys\"],\n summary: \"API-Key nach ID\",\n description: \"Lädt einen API-Key (ohne Klartext). `availableCostCenters` wird normalisiert zurückgegeben (Array für whitelist-basierte Keys, `null` für unbeschränkte Admin-Keys).\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesApiKeysByIdParams;\n query: ManagingCompaniesApiKeysByIdQuery;\n body: ManagingCompaniesApiKeysByIdBody;\n response: ManagingCompaniesApiKeysByIdResponse;\n responseData: ManagingCompaniesApiKeysByIdResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_api_keys_list\": {\n method: \"GET\",\n path: \"/managing-companies/api-keys/list\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\",\"api-keys\"],\n summary: \"API-Keys listen\",\n description: \"Listet API-Keys paginiert. `availableCostCenters` ist immer normalisiert (Array für whitelist-basierte Keys, `null` für unbeschränkte Admin-Keys).\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesApiKeysListParams;\n query: ManagingCompaniesApiKeysListQuery;\n body: ManagingCompaniesApiKeysListBody;\n response: ManagingCompaniesApiKeysListResponse;\n responseData: ManagingCompaniesApiKeysListResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_layouts_catalog\": {\n method: \"GET\",\n path: \"/managing-companies/invoice-layouts/catalog\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-layouts\"],\n summary: \"Rechnungslayout-Katalog\",\n description: \"Liefert 5 verfügbare Rechnungslayouts inkl. technischer Details, Preview-Metadaten und E-Rechnungs-Infos.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceLayoutsCatalogParams;\n query: ManagingCompaniesInvoiceLayoutsCatalogQuery;\n body: ManagingCompaniesInvoiceLayoutsCatalogBody;\n response: ManagingCompaniesInvoiceLayoutsCatalogResponse;\n responseData: ManagingCompaniesInvoiceLayoutsCatalogResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_layouts_effective\": {\n method: \"GET\",\n path: \"/managing-companies/invoice-layouts/effective\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-layouts\"],\n summary: \"Effektives Rechnungslayout\",\n description: \"Liefert das effektiv verwendete Layout (Company-Default mit optionalem Cost-Center-Override) inkl. technischem Profil.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceLayoutsEffectiveParams;\n query: ManagingCompaniesInvoiceLayoutsEffectiveQuery;\n body: ManagingCompaniesInvoiceLayoutsEffectiveBody;\n response: ManagingCompaniesInvoiceLayoutsEffectiveResponse;\n responseData: ManagingCompaniesInvoiceLayoutsEffectiveResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_layouts_preview\": {\n method: \"GET\",\n path: \"/managing-companies/invoice-layouts/preview\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-layouts\"],\n summary: \"Layout-PDF-Preview\",\n description: \"Liefert eine echte PDF-Preview-URL für ein Layout. Die Preview wird per Cache-Key nur bei Änderungen neu erzeugt.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceLayoutsPreviewParams;\n query: ManagingCompaniesInvoiceLayoutsPreviewQuery;\n body: ManagingCompaniesInvoiceLayoutsPreviewBody;\n response: ManagingCompaniesInvoiceLayoutsPreviewResponse;\n responseData: ManagingCompaniesInvoiceLayoutsPreviewResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_layouts_previews\": {\n method: \"GET\",\n path: \"/managing-companies/invoice-layouts/previews\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-layouts\"],\n summary: \"Alle Layout-PDF-Previews\",\n description: \"Liefert für alle 5 Layouts echte PDF-Preview-URLs (gecacht, nur bei Änderungen neu gerendert).\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceLayoutsPreviewsParams;\n query: ManagingCompaniesInvoiceLayoutsPreviewsQuery;\n body: ManagingCompaniesInvoiceLayoutsPreviewsBody;\n response: ManagingCompaniesInvoiceLayoutsPreviewsResponse;\n responseData: ManagingCompaniesInvoiceLayoutsPreviewsResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_transparency_context\": {\n method: \"GET\",\n path: \"/managing-companies/invoice-transparency/:managingCompanyId/context\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-transparency\"],\n summary: \"Invoice-Transparenz-Kontext laden\",\n description: \"Liefert den aktuellen steuerlichen Kontext einer Managing Company inkl. Grenzwerten, Regime, aktiven Warnungen und relevanten Invoice-Defaults.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceTransparencyContextParams;\n query: ManagingCompaniesInvoiceTransparencyContextQuery;\n body: ManagingCompaniesInvoiceTransparencyContextBody;\n response: ManagingCompaniesInvoiceTransparencyContextResponse;\n responseData: ManagingCompaniesInvoiceTransparencyContextResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_transparency_quote\": {\n method: \"POST\",\n path: \"/managing-companies/invoice-transparency/:managingCompanyId/quote\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-transparency\"],\n summary: \"Rechnungsberechnung transparent vorschauen\",\n description: \"Berechnet eine Rechnung ohne Persistenz und liefert exakte Zahlen inkl. Steuerauflösung pro Position, i18n-faehigen Warnungsobjekten und quoteHash fuer stale-sichere Erstellung.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceTransparencyQuoteParams;\n query: ManagingCompaniesInvoiceTransparencyQuoteQuery;\n body: ManagingCompaniesInvoiceTransparencyQuoteBody;\n response: ManagingCompaniesInvoiceTransparencyQuoteResponse;\n responseData: ManagingCompaniesInvoiceTransparencyQuoteResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_item_type_configs_create\": {\n method: \"POST\",\n path: \"/managing-companies/invoice-transparency/:managingCompanyId/item-type-configs\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-transparency\"],\n summary: \"Eigene Positionskategorie erstellen\",\n description: \"Erstellt eine firmenspezifische Positionskategorie (z.B. 'Montage', 'Anfahrt'). Diese erscheint zusätzlich zu den Standardkategorien im Rechnungsformular. Der 'value'-Schlüssel muss pro Firma eindeutig sein (Kleinbuchstaben, Zahlen, Unterstriche).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesItemTypeConfigsCreateParams;\n query: ManagingCompaniesItemTypeConfigsCreateQuery;\n body: ManagingCompaniesItemTypeConfigsCreateBody;\n response: ManagingCompaniesItemTypeConfigsCreateResponse;\n responseData: ManagingCompaniesItemTypeConfigsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_item_type_configs_update\": {\n method: \"PUT\",\n path: \"/managing-companies/invoice-transparency/:managingCompanyId/item-type-configs/:value\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-transparency\"],\n summary: \"Positionskategorie aktualisieren\",\n description: \"Aktualisiert den Anzeigenamen oder den Standard-Steuermodus einer firmenspezifischen Positionskategorie.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesItemTypeConfigsUpdateParams;\n query: ManagingCompaniesItemTypeConfigsUpdateQuery;\n body: ManagingCompaniesItemTypeConfigsUpdateBody;\n response: ManagingCompaniesItemTypeConfigsUpdateResponse;\n responseData: ManagingCompaniesItemTypeConfigsUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_item_type_configs_archive\": {\n method: \"POST\",\n path: \"/managing-companies/invoice-transparency/:managingCompanyId/item-type-configs/:value/archive\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-transparency\"],\n summary: \"Positionskategorie archivieren\",\n description: \"Archiviert eine firmenspezifische Positionskategorie (Soft-Delete). Bereits verwendete Positionen behalten ihren Typ — die Kategorie wird nur aus der Auswahl entfernt.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesItemTypeConfigsArchiveParams;\n query: ManagingCompaniesItemTypeConfigsArchiveQuery;\n body: ManagingCompaniesItemTypeConfigsArchiveBody;\n response: ManagingCompaniesItemTypeConfigsArchiveResponse;\n responseData: ManagingCompaniesItemTypeConfigsArchiveResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_templates_list\": {\n method: \"GET\",\n path: \"/managing-companies/invoice-templates/:managingCompanyId/list\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-templates\"],\n summary: \"Rechnungsvorlagen auflisten\",\n description: \"Gibt eine paginierte Liste aller Rechnungsvorlagen zurück. Sortiert nach zuletzt verwendet und Nutzungshäufigkeit. Optional filterbar nach Suchbegriff, Kunde und Archivierungsstatus.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceTemplatesListParams;\n query: ManagingCompaniesInvoiceTemplatesListQuery;\n body: ManagingCompaniesInvoiceTemplatesListBody;\n response: ManagingCompaniesInvoiceTemplatesListResponse;\n responseData: ManagingCompaniesInvoiceTemplatesListResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_templates_get\": {\n method: \"GET\",\n path: \"/managing-companies/invoice-templates/:managingCompanyId/:templateId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-templates\"],\n summary: \"Rechnungsvorlage laden\",\n description: \"Lädt eine einzelne Rechnungsvorlage mit allen Details und Positionen.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceTemplatesGetParams;\n query: ManagingCompaniesInvoiceTemplatesGetQuery;\n body: ManagingCompaniesInvoiceTemplatesGetBody;\n response: ManagingCompaniesInvoiceTemplatesGetResponse;\n responseData: ManagingCompaniesInvoiceTemplatesGetResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_templates_create\": {\n method: \"POST\",\n path: \"/managing-companies/invoice-templates/:managingCompanyId/create\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-templates\"],\n summary: \"Rechnungsvorlage erstellen\",\n description: \"Erstellt eine neue Rechnungsvorlage mit Positionen, Zahlungsbedingungen und optionaler Kundenbindung.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceTemplatesCreateParams;\n query: ManagingCompaniesInvoiceTemplatesCreateQuery;\n body: ManagingCompaniesInvoiceTemplatesCreateBody;\n response: ManagingCompaniesInvoiceTemplatesCreateResponse;\n responseData: ManagingCompaniesInvoiceTemplatesCreateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_templates_from_invoice\": {\n method: \"POST\",\n path: \"/managing-companies/invoice-templates/:managingCompanyId/from-invoice\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-templates\"],\n summary: \"Vorlage aus bestehender Rechnung erstellen\",\n description: \"Erstellt eine Rechnungsvorlage basierend auf einer bestehenden Rechnung. Übernimmt Positionen, Kunde, Zahlungsbedingungen und Einstellungen. Rechnungsspezifische Daten (Nummer, Datum, Status) werden entfernt.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceTemplatesFromInvoiceParams;\n query: ManagingCompaniesInvoiceTemplatesFromInvoiceQuery;\n body: ManagingCompaniesInvoiceTemplatesFromInvoiceBody;\n response: ManagingCompaniesInvoiceTemplatesFromInvoiceResponse;\n responseData: ManagingCompaniesInvoiceTemplatesFromInvoiceResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_templates_update\": {\n method: \"PUT\",\n path: \"/managing-companies/invoice-templates/:managingCompanyId/:templateId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-templates\"],\n summary: \"Rechnungsvorlage aktualisieren\",\n description: \"Aktualisiert eine bestehende Rechnungsvorlage (Name, Positionen, Einstellungen).\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceTemplatesUpdateParams;\n query: ManagingCompaniesInvoiceTemplatesUpdateQuery;\n body: ManagingCompaniesInvoiceTemplatesUpdateBody;\n response: ManagingCompaniesInvoiceTemplatesUpdateResponse;\n responseData: ManagingCompaniesInvoiceTemplatesUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_templates_archive\": {\n method: \"POST\",\n path: \"/managing-companies/invoice-templates/:managingCompanyId/:templateId/archive\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-templates\"],\n summary: \"Rechnungsvorlage archivieren\",\n description: \"Archiviert eine Rechnungsvorlage (Soft-Delete). Die Vorlage bleibt für Audit-Zwecke erhalten, wird aber nicht mehr in der Standard-Liste angezeigt.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceTemplatesArchiveParams;\n query: ManagingCompaniesInvoiceTemplatesArchiveQuery;\n body: ManagingCompaniesInvoiceTemplatesArchiveBody;\n response: ManagingCompaniesInvoiceTemplatesArchiveResponse;\n responseData: ManagingCompaniesInvoiceTemplatesArchiveResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_invoice_templates_duplicate\": {\n method: \"POST\",\n path: \"/managing-companies/invoice-templates/:managingCompanyId/:templateId/duplicate\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-companies\",\"invoice-templates\"],\n summary: \"Rechnungsvorlage duplizieren\",\n description: \"Erstellt eine Kopie einer bestehenden Rechnungsvorlage unter neuem Namen. Nutzungsstatistiken werden zurückgesetzt.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesInvoiceTemplatesDuplicateParams;\n query: ManagingCompaniesInvoiceTemplatesDuplicateQuery;\n body: ManagingCompaniesInvoiceTemplatesDuplicateBody;\n response: ManagingCompaniesInvoiceTemplatesDuplicateResponse;\n responseData: ManagingCompaniesInvoiceTemplatesDuplicateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_create\": {\n method: \"POST\",\n path: \"/managing-companies\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\"],\n summary: \"Verwaltendes Unternehmen anlegen\",\n description: \"Erstellt ein neues Managing Company (Mandant) inkl. Grunddaten. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesCreateParams;\n query: ManagingCompaniesCreateQuery;\n body: ManagingCompaniesCreateBody;\n response: ManagingCompaniesCreateResponse;\n responseData: ManagingCompaniesCreateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_list\": {\n method: \"GET\",\n path: \"/managing-companies\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\"],\n summary: \"Verwaltende Unternehmen listen\",\n description: \"Gibt die Managing Companies zurück, auf die der Benutzer Zugriff hat (paginierte Liste). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesListParams;\n query: ManagingCompaniesListQuery;\n body: ManagingCompaniesListBody;\n response: ManagingCompaniesListResponse;\n responseData: ManagingCompaniesListResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_get_by_id\": {\n method: \"GET\",\n path: \"/managing-companies/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\"],\n summary: \"Verwaltendes Unternehmen nach ID\",\n description: \"Lädt eine Managing Company per ID. Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesGetByIdParams;\n query: ManagingCompaniesGetByIdQuery;\n body: ManagingCompaniesGetByIdBody;\n response: ManagingCompaniesGetByIdResponse;\n responseData: ManagingCompaniesGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_update\": {\n method: \"PUT\",\n path: \"/managing-companies/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\"],\n summary: \"Verwaltendes Unternehmen aktualisieren\",\n description: \"Aktualisiert Stammdaten/Settings einer Managing Company (z.B. ZUGFeRD Settings). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesUpdateParams;\n query: ManagingCompaniesUpdateQuery;\n body: ManagingCompaniesUpdateBody;\n response: ManagingCompaniesUpdateResponse;\n responseData: ManagingCompaniesUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_delete\": {\n method: \"DELETE\",\n path: \"/managing-companies/:id\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"bookkeeping_access\"},\n meta: {\n tags: [\"managing-companies\"],\n summary: \"Verwaltendes Unternehmen löschen\",\n description: \"Löscht eine Managing Company (nur wenn serverseitige Regeln es erlauben). Erfordert `bookkeeping_access`.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesDeleteParams;\n query: ManagingCompaniesDeleteQuery;\n body: ManagingCompaniesDeleteBody;\n response: ManagingCompaniesDeleteResponse;\n responseData: ManagingCompaniesDeleteResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type ManagingCompaniesCurrentExternalParams = undefined;\nexport type ManagingCompaniesCurrentExternalQuery = {\n\n};\nexport type ManagingCompaniesCurrentExternalBody = undefined;\nexport type ManagingCompaniesCurrentExternalResponseData = {\n managingCompany: {\n id: number;\n companyName: string;\n companyCountry?: string | null;\n baseCurrency?: string | null;\n companyVatId?: string | null;\n companyTaxId?: string | null;\n};\n taxation: {\n asOf: string;\n regime: string | null;\n regimeReason: string | null;\n regimeValidFrom: string | null;\n regimeValidTo: string | null;\n accountingMethod: string;\n ustvaFilingPreference: string | null;\n shouldShowVatOnInvoices: boolean;\n defaultVatTreatmentHint: \"DE_STANDARD_19\" | \"KLEINUNTERNEHMER_0\";\n legalVatHint: string;\n thresholds: {\n kleinunternehmerGraceAmount: number;\n kleinunternehmerMaxAmount: number;\n};\n};\n auth: {\n authType: \"oauth2\" | \"apikey\";\n role: \"viewer\" | \"editor\" | \"admin\" | null;\n oauth2ClientId: string | null;\n apiKeyId: number | null;\n costCenters: Array<number> | null;\n defaultCostCenter: number | null;\n};\n};\nexport type ManagingCompaniesCurrentExternalResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesCurrentExternalResponseData>;\n\nexport const apiRoutes_managing_companies_external = {\n // Contract source: explicit\n \"managing_companies_current_external\": {\n method: \"GET\",\n path: \"/managing-companies/external/current\",\n auth: {\"type\":\"unified_bearer\",\"allowUserSession\":false,\"allowOAuth2\":true,\"allowApiKey\":true,\"requireRole\":\"viewer\",\"scopes\":[\"companies:read\"]},\n meta: {\n tags: [\"managing-companies-external\"],\n summary: \"Get current managing company context (external API)\",\n description: \"Returns the managing company of the current API credential plus VAT context (regime, accounting method, display hints) for external pricing/tax logic.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesCurrentExternalParams;\n query: ManagingCompaniesCurrentExternalQuery;\n body: ManagingCompaniesCurrentExternalBody;\n response: ManagingCompaniesCurrentExternalResponse;\n responseData: ManagingCompaniesCurrentExternalResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type ManagingCompaniesLogosSettingsParams = undefined;\nexport type ManagingCompaniesLogosSettingsQuery = {\n\n};\nexport type ManagingCompaniesLogosSettingsBody = undefined;\nexport type ManagingCompaniesLogosSettingsResponseData = {\n whiteLogoKey: string | null;\n darkLogoKey: string | null;\n invoiceLogoMode: string;\n};\nexport type ManagingCompaniesLogosSettingsResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesLogosSettingsResponseData>;\n\nexport type ManagingCompaniesLogosUrlsParams = undefined;\nexport type ManagingCompaniesLogosUrlsQuery = {\n\n};\nexport type ManagingCompaniesLogosUrlsBody = undefined;\nexport type ManagingCompaniesLogosUrlsResponseData = {\n whiteLogoUrl: string | null;\n darkLogoUrl: string | null;\n invoiceLogoMode: string;\n};\nexport type ManagingCompaniesLogosUrlsResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesLogosUrlsResponseData>;\n\nexport type ManagingCompaniesLogosSetModeParams = undefined;\nexport type ManagingCompaniesLogosSetModeQuery = undefined;\nexport type ManagingCompaniesLogosSetModeBody = {\n mode: \"white\" | \"dark\";\n};\nexport type ManagingCompaniesLogosSetModeResponseData = {\n invoiceLogoMode: string;\n};\nexport type ManagingCompaniesLogosSetModeResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesLogosSetModeResponseData>;\n\nexport type ManagingCompaniesLogosUploadParams = {\n mode: \"white\" | \"dark\";\n};\nexport type ManagingCompaniesLogosUploadQuery = undefined;\nexport type ManagingCompaniesLogosUploadBody = undefined;\nexport type ManagingCompaniesLogosUploadResponseData = {\n invoiceLogoMode: string;\n};\nexport type ManagingCompaniesLogosUploadResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesLogosUploadResponseData>;\n\nexport type ManagingCompaniesLogosDeleteParams = {\n mode: \"white\" | \"dark\";\n};\nexport type ManagingCompaniesLogosDeleteQuery = undefined;\nexport type ManagingCompaniesLogosDeleteBody = undefined;\nexport type ManagingCompaniesLogosDeleteResponseData = null;\nexport type ManagingCompaniesLogosDeleteResponse = import(\"../types\").ApiEnvelope<ManagingCompaniesLogosDeleteResponseData>;\n\nexport const apiRoutes_managing_company_logos = {\n // Contract source: explicit\n \"managing_companies_logos_settings\": {\n method: \"GET\",\n path: \"/managing-companies/logos/settings\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-company-logos\"],\n summary: \"Logo-Settings abrufen\",\n description: \"Gibt die aktuellen Logo-Einstellungen (S3-Keys + Modus) der ausgewaehlten Managing Company zurueck.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesLogosSettingsParams;\n query: ManagingCompaniesLogosSettingsQuery;\n body: ManagingCompaniesLogosSettingsBody;\n response: ManagingCompaniesLogosSettingsResponse;\n responseData: ManagingCompaniesLogosSettingsResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_logos_urls\": {\n method: \"GET\",\n path: \"/managing-companies/logos/urls\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-company-logos\"],\n summary: \"Logo-Download-URLs abrufen\",\n description: \"Gibt presigned Download-URLs (1h gueltig) fuer beide Logos zurueck. Null wenn kein Logo hochgeladen.\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesLogosUrlsParams;\n query: ManagingCompaniesLogosUrlsQuery;\n body: ManagingCompaniesLogosUrlsBody;\n response: ManagingCompaniesLogosUrlsResponse;\n responseData: ManagingCompaniesLogosUrlsResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_logos_set_mode\": {\n method: \"PUT\",\n path: \"/managing-companies/logos/mode\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-company-logos\"],\n summary: \"Logo-Modus setzen\",\n description: \"Setzt den Standard-Logo-Modus fuer Rechnungen (white oder dark). Bestimmt welches Logo auf PDFs verwendet wird.\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: ManagingCompaniesLogosSetModeParams;\n query: ManagingCompaniesLogosSetModeQuery;\n body: ManagingCompaniesLogosSetModeBody;\n response: ManagingCompaniesLogosSetModeResponse;\n responseData: ManagingCompaniesLogosSetModeResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_logos_upload\": {\n method: \"POST\",\n path: \"/managing-companies/logos/upload/:mode\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-company-logos\"],\n summary: \"Logo hochladen\",\n description: \"Laedt ein Logo (white oder dark) fuer die Managing Company hoch. Erlaubte Formate: PNG, JPEG, SVG. Max 5MB. Ersetzt ein eventuell vorhandenes Logo.\",\n bodyContentType: \"multipart/form-data\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesLogosUploadParams;\n query: ManagingCompaniesLogosUploadQuery;\n body: ManagingCompaniesLogosUploadBody;\n response: ManagingCompaniesLogosUploadResponse;\n responseData: ManagingCompaniesLogosUploadResponseData;\n },\n },\n // Contract source: explicit\n \"managing_companies_logos_delete\": {\n method: \"DELETE\",\n path: \"/managing-companies/logos/delete/:mode\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"managing-company-logos\"],\n summary: \"Logo loeschen\",\n description: \"Loescht das Logo (white oder dark) der Managing Company aus S3 und setzt den DB-Eintrag zurueck.\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: ManagingCompaniesLogosDeleteParams;\n query: ManagingCompaniesLogosDeleteQuery;\n body: ManagingCompaniesLogosDeleteBody;\n response: ManagingCompaniesLogosDeleteResponse;\n responseData: ManagingCompaniesLogosDeleteResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { OAuth2AuditLog, PaginatedResult, UnsensitiveOAuth2Client } from \"../../frontend-types\";\n\nexport type Oauth2TokenParams = undefined;\nexport type Oauth2TokenQuery = undefined;\nexport type Oauth2TokenBody = {\n grant_type: \"client_credentials\" | \"refresh_token\";\n client_id: string;\n client_secret: string;\n scope?: string;\n refresh_token?: string;\n};\nexport type Oauth2TokenResponseData = {\n access_token: string;\n refresh_token?: string;\n token_type: string;\n expires_in: number;\n scope?: string;\n};\nexport type Oauth2TokenResponse = Oauth2TokenResponseData;\n\nexport type Oauth2RevokeParams = undefined;\nexport type Oauth2RevokeQuery = undefined;\nexport type Oauth2RevokeBody = {\n token: string;\n client_id: string;\n client_secret: string;\n token_type_hint?: \"refresh_token\" | \"access_token\";\n};\nexport type Oauth2RevokeResponseData = {\n status: \"ok\";\n};\nexport type Oauth2RevokeResponse = Oauth2RevokeResponseData;\n\nexport type Oauth2ClientsCreateParams = undefined;\nexport type Oauth2ClientsCreateQuery = undefined;\nexport type Oauth2ClientsCreateBody = {\n name: string;\n description?: string;\n role: \"viewer\" | \"editor\" | \"admin\";\n scopes?: Array<string>;\n defaultCostCenter?: number;\n availableCostCenters?: Array<number>;\n accessTokenTtl?: number;\n refreshTokenTtl?: number;\n allowedIps?: Array<string>;\n rateLimitPerMinute?: number;\n rateLimitPerHour?: number;\n validTo?: string;\n};\nexport type Oauth2ClientsCreateResponseData = { client: UnsensitiveOAuth2Client; credentials: { client_id: string; client_secret: string; warning: string } };\nexport type Oauth2ClientsCreateResponse = import(\"../types\").ApiEnvelope<Oauth2ClientsCreateResponseData>;\n\nexport type Oauth2ClientsListParams = undefined;\nexport type Oauth2ClientsListQuery = {\n page?: number;\n pageSize?: number;\n};\nexport type Oauth2ClientsListBody = undefined;\nexport type Oauth2ClientsListResponseData = PaginatedResult<UnsensitiveOAuth2Client>;\nexport type Oauth2ClientsListResponse = import(\"../types\").ApiEnvelope<Oauth2ClientsListResponseData>;\n\nexport type Oauth2ClientsRevokeParams = {\n id: number;\n};\nexport type Oauth2ClientsRevokeQuery = undefined;\nexport type Oauth2ClientsRevokeBody = undefined;\nexport type Oauth2ClientsRevokeResponseData = null;\nexport type Oauth2ClientsRevokeResponse = import(\"../types\").ApiEnvelope<Oauth2ClientsRevokeResponseData>;\n\nexport type Oauth2ClientsAuditParams = {\n id: number;\n};\nexport type Oauth2ClientsAuditQuery = {\n page?: number;\n pageSize?: number;\n};\nexport type Oauth2ClientsAuditBody = undefined;\nexport type Oauth2ClientsAuditResponseData = PaginatedResult<OAuth2AuditLog>;\nexport type Oauth2ClientsAuditResponse = import(\"../types\").ApiEnvelope<Oauth2ClientsAuditResponseData>;\n\nexport type Oauth2ClientsUpdateParams = {\n id: number;\n};\nexport type Oauth2ClientsUpdateQuery = undefined;\nexport type Oauth2ClientsUpdateBody = {\n name?: string;\n description?: string;\n role?: \"viewer\" | \"editor\" | \"admin\";\n scopes?: Array<string>;\n defaultCostCenter?: number;\n availableCostCenters?: Array<number>;\n accessTokenTtl?: number;\n refreshTokenTtl?: number;\n allowedIps?: Array<string>;\n rateLimitPerMinute?: number;\n rateLimitPerHour?: number;\n validTo?: string;\n};\nexport type Oauth2ClientsUpdateResponseData = UnsensitiveOAuth2Client;\nexport type Oauth2ClientsUpdateResponse = import(\"../types\").ApiEnvelope<Oauth2ClientsUpdateResponseData>;\n\nexport type Oauth2ScopesListParams = undefined;\nexport type Oauth2ScopesListQuery = {\n\n};\nexport type Oauth2ScopesListBody = undefined;\nexport type Oauth2ScopesListResponseData = Record<string, Array<string>>;\nexport type Oauth2ScopesListResponse = import(\"../types\").ApiEnvelope<Oauth2ScopesListResponseData>;\n\nexport const apiRoutes_oauth2 = {\n // Contract source: explicit\n \"oauth2_token\": {\n method: \"POST\",\n path: \"/oauth/token\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"oauth2\"],\n bodyContentType: \"application/x-www-form-urlencoded\",\n },\n types: null as unknown as {\n params: Oauth2TokenParams;\n query: Oauth2TokenQuery;\n body: Oauth2TokenBody;\n response: Oauth2TokenResponse;\n responseData: Oauth2TokenResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_revoke\": {\n method: \"POST\",\n path: \"/oauth/revoke\",\n auth: {\"type\":\"public\"},\n meta: {\n tags: [\"oauth2\"],\n bodyContentType: \"application/x-www-form-urlencoded\",\n },\n types: null as unknown as {\n params: Oauth2RevokeParams;\n query: Oauth2RevokeQuery;\n body: Oauth2RevokeBody;\n response: Oauth2RevokeResponse;\n responseData: Oauth2RevokeResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_clients_create\": {\n method: \"POST\",\n path: \"/oauth/clients/create\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"oauth2\"],\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: Oauth2ClientsCreateParams;\n query: Oauth2ClientsCreateQuery;\n body: Oauth2ClientsCreateBody;\n response: Oauth2ClientsCreateResponse;\n responseData: Oauth2ClientsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_clients_list\": {\n method: \"GET\",\n path: \"/oauth/clients/list\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"oauth2\"],\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ClientsListParams;\n query: Oauth2ClientsListQuery;\n body: Oauth2ClientsListBody;\n response: Oauth2ClientsListResponse;\n responseData: Oauth2ClientsListResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_clients_revoke\": {\n method: \"DELETE\",\n path: \"/oauth/clients/revoke/:id\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"oauth2\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ClientsRevokeParams;\n query: Oauth2ClientsRevokeQuery;\n body: Oauth2ClientsRevokeBody;\n response: Oauth2ClientsRevokeResponse;\n responseData: Oauth2ClientsRevokeResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_clients_audit\": {\n method: \"GET\",\n path: \"/oauth/clients/audit/:id\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"oauth2\"],\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ClientsAuditParams;\n query: Oauth2ClientsAuditQuery;\n body: Oauth2ClientsAuditBody;\n response: Oauth2ClientsAuditResponse;\n responseData: Oauth2ClientsAuditResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_clients_update\": {\n method: \"PUT\",\n path: \"/oauth/clients/update/:id\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"oauth2\"],\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: Oauth2ClientsUpdateParams;\n query: Oauth2ClientsUpdateQuery;\n body: Oauth2ClientsUpdateBody;\n response: Oauth2ClientsUpdateResponse;\n responseData: Oauth2ClientsUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_scopes_list\": {\n method: \"GET\",\n path: \"/oauth/scopes\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"oauth2\"],\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ScopesListParams;\n query: Oauth2ScopesListQuery;\n body: Oauth2ScopesListBody;\n response: Oauth2ScopesListResponse;\n responseData: Oauth2ScopesListResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { PaginatedResult, UnsensitiveOAuth2Client } from \"../../frontend-types\";\n\nexport type Oauth2ExternalClientsListParams = undefined;\nexport type Oauth2ExternalClientsListQuery = {\n page?: number;\n pageSize?: number;\n search?: string;\n isActive?: boolean;\n role?: \"viewer\" | \"editor\" | \"admin\";\n managingCompanyId?: number;\n};\nexport type Oauth2ExternalClientsListBody = undefined;\nexport type Oauth2ExternalClientsListResponseData = PaginatedResult<UnsensitiveOAuth2Client>;\nexport type Oauth2ExternalClientsListResponse = import(\"../types\").ApiEnvelope<Oauth2ExternalClientsListResponseData>;\n\nexport type Oauth2ExternalClientsGetParams = {\n idOrClientId: string;\n};\nexport type Oauth2ExternalClientsGetQuery = undefined;\nexport type Oauth2ExternalClientsGetBody = undefined;\nexport type Oauth2ExternalClientsGetResponseData = {\n id: number;\n clientId: string;\n name: string;\n description?: string | null;\n managingCompanyId: number;\n defaultCostCenter?: number | null;\n availableCostCenters?: string | null;\n role: string;\n scopes?: string | null;\n accessTokenTtl: number;\n refreshTokenTtl: number;\n maxTokensPerClient: number;\n allowedIps?: string | null;\n allowedOrigins?: string | null;\n rateLimitPerMinute: number;\n rateLimitPerHour: number;\n isActive: boolean;\n revokedAt?: string | null;\n validFrom: string;\n validTo?: string | null;\n createdBy: number;\n createdAt: string;\n updatedAt?: string | null;\n lastUsedAt?: string | null;\n lastRotatedAt?: string | null;\n supersededAt?: string | null;\n hasPreviousSecret?: boolean;\n};\nexport type Oauth2ExternalClientsGetResponse = import(\"../types\").ApiEnvelope<Oauth2ExternalClientsGetResponseData>;\n\nexport type Oauth2ExternalClientsCreateParams = undefined;\nexport type Oauth2ExternalClientsCreateQuery = undefined;\nexport type Oauth2ExternalClientsCreateBody = {\n name: string;\n description?: string;\n role?: \"viewer\" | \"editor\" | \"admin\";\n scopes?: Array<string>;\n managingCompanyId?: number;\n defaultCostCenter?: number;\n availableCostCenters?: Array<number>;\n accessTokenTtl?: number;\n refreshTokenTtl?: number;\n allowedIps?: Array<string>;\n rateLimitPerMinute?: number;\n rateLimitPerHour?: number;\n validTo?: string;\n};\nexport type Oauth2ExternalClientsCreateResponseData = {\n client: {\n id: number;\n clientId: string;\n name: string;\n description?: string | null;\n managingCompanyId: number;\n defaultCostCenter?: number | null;\n availableCostCenters?: string | null;\n role: string;\n scopes?: string | null;\n accessTokenTtl: number;\n refreshTokenTtl: number;\n maxTokensPerClient: number;\n allowedIps?: string | null;\n allowedOrigins?: string | null;\n rateLimitPerMinute: number;\n rateLimitPerHour: number;\n isActive: boolean;\n revokedAt?: string | null;\n validFrom: string;\n validTo?: string | null;\n createdBy: number;\n createdAt: string;\n updatedAt?: string | null;\n lastUsedAt?: string | null;\n lastRotatedAt?: string | null;\n supersededAt?: string | null;\n hasPreviousSecret?: boolean;\n};\n credentials: {\n client_id: string;\n client_secret: string;\n warning: string;\n};\n};\nexport type Oauth2ExternalClientsCreateResponse = import(\"../types\").ApiEnvelope<Oauth2ExternalClientsCreateResponseData>;\n\nexport type Oauth2ExternalClientsUpdateParams = {\n idOrClientId: string;\n};\nexport type Oauth2ExternalClientsUpdateQuery = undefined;\nexport type Oauth2ExternalClientsUpdateBody = {\n name?: string;\n description?: string;\n role?: \"viewer\" | \"editor\" | \"admin\";\n scopes?: Array<string>;\n managingCompanyId?: number;\n defaultCostCenter?: number;\n availableCostCenters?: Array<number>;\n accessTokenTtl?: number;\n refreshTokenTtl?: number;\n allowedIps?: Array<string>;\n rateLimitPerMinute?: number;\n rateLimitPerHour?: number;\n validTo?: string;\n isActive?: boolean;\n};\nexport type Oauth2ExternalClientsUpdateResponseData = {\n id: number;\n clientId: string;\n name: string;\n description?: string | null;\n managingCompanyId: number;\n defaultCostCenter?: number | null;\n availableCostCenters?: string | null;\n role: string;\n scopes?: string | null;\n accessTokenTtl: number;\n refreshTokenTtl: number;\n maxTokensPerClient: number;\n allowedIps?: string | null;\n allowedOrigins?: string | null;\n rateLimitPerMinute: number;\n rateLimitPerHour: number;\n isActive: boolean;\n revokedAt?: string | null;\n validFrom: string;\n validTo?: string | null;\n createdBy: number;\n createdAt: string;\n updatedAt?: string | null;\n lastUsedAt?: string | null;\n lastRotatedAt?: string | null;\n supersededAt?: string | null;\n hasPreviousSecret?: boolean;\n};\nexport type Oauth2ExternalClientsUpdateResponse = import(\"../types\").ApiEnvelope<Oauth2ExternalClientsUpdateResponseData>;\n\nexport type Oauth2ExternalClientsRotateParams = {\n idOrClientId: string;\n};\nexport type Oauth2ExternalClientsRotateQuery = undefined;\nexport type Oauth2ExternalClientsRotateBody = undefined;\nexport type Oauth2ExternalClientsRotateResponseData = {\n client: {\n id: number;\n clientId: string;\n name: string;\n description?: string | null;\n managingCompanyId: number;\n defaultCostCenter?: number | null;\n availableCostCenters?: string | null;\n role: string;\n scopes?: string | null;\n accessTokenTtl: number;\n refreshTokenTtl: number;\n maxTokensPerClient: number;\n allowedIps?: string | null;\n allowedOrigins?: string | null;\n rateLimitPerMinute: number;\n rateLimitPerHour: number;\n isActive: boolean;\n revokedAt?: string | null;\n validFrom: string;\n validTo?: string | null;\n createdBy: number;\n createdAt: string;\n updatedAt?: string | null;\n lastUsedAt?: string | null;\n lastRotatedAt?: string | null;\n supersededAt?: string | null;\n hasPreviousSecret?: boolean;\n};\n credentials: {\n client_id: string;\n client_secret: string;\n warning: string;\n};\n lastRotatedAt: string;\n};\nexport type Oauth2ExternalClientsRotateResponse = import(\"../types\").ApiEnvelope<Oauth2ExternalClientsRotateResponseData>;\n\nexport type Oauth2ExternalClientsRetireParams = {\n idOrClientId: string;\n};\nexport type Oauth2ExternalClientsRetireQuery = undefined;\nexport type Oauth2ExternalClientsRetireBody = undefined;\nexport type Oauth2ExternalClientsRetireResponseData = {\n client: {\n id: number;\n clientId: string;\n name: string;\n description?: string | null;\n managingCompanyId: number;\n defaultCostCenter?: number | null;\n availableCostCenters?: string | null;\n role: string;\n scopes?: string | null;\n accessTokenTtl: number;\n refreshTokenTtl: number;\n maxTokensPerClient: number;\n allowedIps?: string | null;\n allowedOrigins?: string | null;\n rateLimitPerMinute: number;\n rateLimitPerHour: number;\n isActive: boolean;\n revokedAt?: string | null;\n validFrom: string;\n validTo?: string | null;\n createdBy: number;\n createdAt: string;\n updatedAt?: string | null;\n lastUsedAt?: string | null;\n lastRotatedAt?: string | null;\n supersededAt?: string | null;\n hasPreviousSecret?: boolean;\n};\n retired: boolean;\n};\nexport type Oauth2ExternalClientsRetireResponse = import(\"../types\").ApiEnvelope<Oauth2ExternalClientsRetireResponseData>;\n\nexport type Oauth2ExternalClientsRollbackParams = {\n idOrClientId: string;\n};\nexport type Oauth2ExternalClientsRollbackQuery = undefined;\nexport type Oauth2ExternalClientsRollbackBody = undefined;\nexport type Oauth2ExternalClientsRollbackResponseData = {\n client: {\n id: number;\n clientId: string;\n name: string;\n description?: string | null;\n managingCompanyId: number;\n defaultCostCenter?: number | null;\n availableCostCenters?: string | null;\n role: string;\n scopes?: string | null;\n accessTokenTtl: number;\n refreshTokenTtl: number;\n maxTokensPerClient: number;\n allowedIps?: string | null;\n allowedOrigins?: string | null;\n rateLimitPerMinute: number;\n rateLimitPerHour: number;\n isActive: boolean;\n revokedAt?: string | null;\n validFrom: string;\n validTo?: string | null;\n createdBy: number;\n createdAt: string;\n updatedAt?: string | null;\n lastUsedAt?: string | null;\n lastRotatedAt?: string | null;\n supersededAt?: string | null;\n hasPreviousSecret?: boolean;\n};\n retired: boolean;\n};\nexport type Oauth2ExternalClientsRollbackResponse = import(\"../types\").ApiEnvelope<Oauth2ExternalClientsRollbackResponseData>;\n\nexport type Oauth2ExternalClientsRevokeParams = {\n idOrClientId: string;\n};\nexport type Oauth2ExternalClientsRevokeQuery = undefined;\nexport type Oauth2ExternalClientsRevokeBody = undefined;\nexport type Oauth2ExternalClientsRevokeResponseData = null;\nexport type Oauth2ExternalClientsRevokeResponse = import(\"../types\").ApiEnvelope<Oauth2ExternalClientsRevokeResponseData>;\n\nexport type Oauth2ExternalClientsDeleteParams = {\n idOrClientId: string;\n};\nexport type Oauth2ExternalClientsDeleteQuery = undefined;\nexport type Oauth2ExternalClientsDeleteBody = undefined;\nexport type Oauth2ExternalClientsDeleteResponseData = null;\nexport type Oauth2ExternalClientsDeleteResponse = import(\"../types\").ApiEnvelope<Oauth2ExternalClientsDeleteResponseData>;\n\nexport const apiRoutes_oauth2_external = {\n // Contract source: explicit\n \"oauth2_external_clients_list\": {\n method: \"GET\",\n path: \"/oauth/clients/external/list\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"oauth2-external\"],\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ExternalClientsListParams;\n query: Oauth2ExternalClientsListQuery;\n body: Oauth2ExternalClientsListBody;\n response: Oauth2ExternalClientsListResponse;\n responseData: Oauth2ExternalClientsListResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_external_clients_get\": {\n method: \"GET\",\n path: \"/oauth/clients/external/:idOrClientId\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"oauth2-external\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ExternalClientsGetParams;\n query: Oauth2ExternalClientsGetQuery;\n body: Oauth2ExternalClientsGetBody;\n response: Oauth2ExternalClientsGetResponse;\n responseData: Oauth2ExternalClientsGetResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_external_clients_create\": {\n method: \"POST\",\n path: \"/oauth/clients/external\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"oauth2-external\"],\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: Oauth2ExternalClientsCreateParams;\n query: Oauth2ExternalClientsCreateQuery;\n body: Oauth2ExternalClientsCreateBody;\n response: Oauth2ExternalClientsCreateResponse;\n responseData: Oauth2ExternalClientsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_external_clients_update\": {\n method: \"PUT\",\n path: \"/oauth/clients/external/:idOrClientId\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"oauth2-external\"],\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: Oauth2ExternalClientsUpdateParams;\n query: Oauth2ExternalClientsUpdateQuery;\n body: Oauth2ExternalClientsUpdateBody;\n response: Oauth2ExternalClientsUpdateResponse;\n responseData: Oauth2ExternalClientsUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_external_clients_rotate\": {\n method: \"POST\",\n path: \"/oauth/clients/external/:idOrClientId/rotate\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"oauth2-external\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ExternalClientsRotateParams;\n query: Oauth2ExternalClientsRotateQuery;\n body: Oauth2ExternalClientsRotateBody;\n response: Oauth2ExternalClientsRotateResponse;\n responseData: Oauth2ExternalClientsRotateResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_external_clients_retire\": {\n method: \"POST\",\n path: \"/oauth/clients/external/:idOrClientId/retire\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"oauth2-external\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ExternalClientsRetireParams;\n query: Oauth2ExternalClientsRetireQuery;\n body: Oauth2ExternalClientsRetireBody;\n response: Oauth2ExternalClientsRetireResponse;\n responseData: Oauth2ExternalClientsRetireResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_external_clients_rollback\": {\n method: \"POST\",\n path: \"/oauth/clients/external/:idOrClientId/rollback\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"oauth2-external\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ExternalClientsRollbackParams;\n query: Oauth2ExternalClientsRollbackQuery;\n body: Oauth2ExternalClientsRollbackBody;\n response: Oauth2ExternalClientsRollbackResponse;\n responseData: Oauth2ExternalClientsRollbackResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_external_clients_revoke\": {\n method: \"POST\",\n path: \"/oauth/clients/external/:idOrClientId/revoke\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"oauth2-external\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ExternalClientsRevokeParams;\n query: Oauth2ExternalClientsRevokeQuery;\n body: Oauth2ExternalClientsRevokeBody;\n response: Oauth2ExternalClientsRevokeResponse;\n responseData: Oauth2ExternalClientsRevokeResponseData;\n },\n },\n // Contract source: explicit\n \"oauth2_external_clients_delete\": {\n method: \"DELETE\",\n path: \"/oauth/clients/external/:idOrClientId\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"oauth2-external\"],\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: Oauth2ExternalClientsDeleteParams;\n query: Oauth2ExternalClientsDeleteQuery;\n body: Oauth2ExternalClientsDeleteBody;\n response: Oauth2ExternalClientsDeleteResponse;\n responseData: Oauth2ExternalClientsDeleteResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { Permission, RolePermission } from \"../../frontend-types\";\n\nexport type PermissionsCreateParams = undefined;\nexport type PermissionsCreateQuery = undefined;\nexport type PermissionsCreateBody = {\n name: string;\n description: string;\n};\nexport type PermissionsCreateResponseData = Permission;\nexport type PermissionsCreateResponse = import(\"../types\").ApiEnvelope<PermissionsCreateResponseData>;\n\nexport type PermissionsSyncParams = undefined;\nexport type PermissionsSyncQuery = {\n\n};\nexport type PermissionsSyncBody = undefined;\nexport type PermissionsSyncResponseData = { created: Permission[]; existing: Permission[]; total: number };\nexport type PermissionsSyncResponse = import(\"../types\").ApiEnvelope<PermissionsSyncResponseData>;\n\nexport type PermissionsListParams = undefined;\nexport type PermissionsListQuery = {\n\n};\nexport type PermissionsListBody = undefined;\nexport type PermissionsListResponseData = Permission[];\nexport type PermissionsListResponse = import(\"../types\").ApiEnvelope<PermissionsListResponseData>;\n\nexport type PermissionsAssignToRoleParams = {\n roleId: number;\n permissionId: number;\n};\nexport type PermissionsAssignToRoleQuery = undefined;\nexport type PermissionsAssignToRoleBody = undefined;\nexport type PermissionsAssignToRoleResponseData = null;\nexport type PermissionsAssignToRoleResponse = import(\"../types\").ApiEnvelope<PermissionsAssignToRoleResponseData>;\n\nexport type PermissionsUnassignFromRoleParams = {\n roleId: number;\n permissionId: number;\n};\nexport type PermissionsUnassignFromRoleQuery = undefined;\nexport type PermissionsUnassignFromRoleBody = undefined;\nexport type PermissionsUnassignFromRoleResponseData = null;\nexport type PermissionsUnassignFromRoleResponse = import(\"../types\").ApiEnvelope<PermissionsUnassignFromRoleResponseData>;\n\nexport type PermissionsAssignmentsListParams = undefined;\nexport type PermissionsAssignmentsListQuery = {\n\n};\nexport type PermissionsAssignmentsListBody = undefined;\nexport type PermissionsAssignmentsListResponseData = RolePermission[];\nexport type PermissionsAssignmentsListResponse = import(\"../types\").ApiEnvelope<PermissionsAssignmentsListResponseData>;\n\nexport const apiRoutes_permissions = {\n // Contract source: explicit\n \"permissions_create\": {\n method: \"POST\",\n path: \"/permissions/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"permissions_manage\"},\n meta: {\n tags: [\"permissions\"],\n summary: \"Create permission\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: PermissionsCreateParams;\n query: PermissionsCreateQuery;\n body: PermissionsCreateBody;\n response: PermissionsCreateResponse;\n responseData: PermissionsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"permissions_sync\": {\n method: \"POST\",\n path: \"/permissions/sync\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"permissions_manage\"},\n meta: {\n tags: [\"permissions\"],\n summary: \"Sync default permissions\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PermissionsSyncParams;\n query: PermissionsSyncQuery;\n body: PermissionsSyncBody;\n response: PermissionsSyncResponse;\n responseData: PermissionsSyncResponseData;\n },\n },\n // Contract source: explicit\n \"permissions_list\": {\n method: \"GET\",\n path: \"/permissions/getAll\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"permissions_manage\"},\n meta: {\n tags: [\"permissions\"],\n summary: \"List permissions\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PermissionsListParams;\n query: PermissionsListQuery;\n body: PermissionsListBody;\n response: PermissionsListResponse;\n responseData: PermissionsListResponseData;\n },\n },\n // Contract source: explicit\n \"permissions_assign_to_role\": {\n method: \"POST\",\n path: \"/permissions/assign/:roleId/:permissionId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"permissions_manage\"},\n meta: {\n tags: [\"permissions\"],\n summary: \"Assign permission to role\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PermissionsAssignToRoleParams;\n query: PermissionsAssignToRoleQuery;\n body: PermissionsAssignToRoleBody;\n response: PermissionsAssignToRoleResponse;\n responseData: PermissionsAssignToRoleResponseData;\n },\n },\n // Contract source: explicit\n \"permissions_unassign_from_role\": {\n method: \"DELETE\",\n path: \"/permissions/unassign/:roleId/:permissionId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"permissions_manage\"},\n meta: {\n tags: [\"permissions\"],\n summary: \"Unassign permission from role\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: PermissionsUnassignFromRoleParams;\n query: PermissionsUnassignFromRoleQuery;\n body: PermissionsUnassignFromRoleBody;\n response: PermissionsUnassignFromRoleResponse;\n responseData: PermissionsUnassignFromRoleResponseData;\n },\n },\n // Contract source: explicit\n \"permissions_assignments_list\": {\n method: \"GET\",\n path: \"/permissions/getAssignments\",\n auth: {\"type\":\"composite_and\",\"items\":[{\"type\":\"frontend_permission_http\",\"permission\":\"permissions_manage\"},{\"type\":\"frontend_permission_http\",\"permission\":\"permissions_history_view\"}]},\n meta: {\n tags: [\"permissions\"],\n summary: \"List role-permission assignments\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: PermissionsAssignmentsListParams;\n query: PermissionsAssignmentsListQuery;\n body: PermissionsAssignmentsListBody;\n response: PermissionsAssignmentsListResponse;\n responseData: PermissionsAssignmentsListResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { Permission, Role, RoleAssignment, RolePermission } from \"../../frontend-types\";\n\nexport type RolesCreateParams = undefined;\nexport type RolesCreateQuery = undefined;\nexport type RolesCreateBody = {\n name: string;\n description: string;\n isSellable?: boolean;\n};\nexport type RolesCreateResponseData = null;\nexport type RolesCreateResponse = import(\"../types\").ApiEnvelope<RolesCreateResponseData>;\n\nexport type RolesDeleteParams = {\n roleId: number;\n};\nexport type RolesDeleteQuery = undefined;\nexport type RolesDeleteBody = undefined;\nexport type RolesDeleteResponseData = Role;\nexport type RolesDeleteResponse = import(\"../types\").ApiEnvelope<RolesDeleteResponseData>;\n\nexport type RolesUpdateParams = {\n roleId: number;\n};\nexport type RolesUpdateQuery = undefined;\nexport type RolesUpdateBody = {\n name: string;\n description: string;\n};\nexport type RolesUpdateResponseData = Role;\nexport type RolesUpdateResponse = import(\"../types\").ApiEnvelope<RolesUpdateResponseData>;\n\nexport type RolesGetByIdParams = {\n roleId: number;\n};\nexport type RolesGetByIdQuery = undefined;\nexport type RolesGetByIdBody = undefined;\nexport type RolesGetByIdResponseData = Role;\nexport type RolesGetByIdResponse = import(\"../types\").ApiEnvelope<RolesGetByIdResponseData>;\n\nexport type RolesListParams = undefined;\nexport type RolesListQuery = {\n\n};\nexport type RolesListBody = undefined;\nexport type RolesListResponseData = { roles: Role[]; roleAssignments: RoleAssignment[]; permissions: Permission[]; rolePermissions: RolePermission[]; canSeeHistory: boolean };\nexport type RolesListResponse = import(\"../types\").ApiEnvelope<RolesListResponseData>;\n\nexport type RoleAssignmentsCreateParams = {\n userId: number;\n roleId: number;\n};\nexport type RoleAssignmentsCreateQuery = undefined;\nexport type RoleAssignmentsCreateBody = {\n validFrom?: string;\n};\nexport type RoleAssignmentsCreateResponseData = RoleAssignment;\nexport type RoleAssignmentsCreateResponse = import(\"../types\").ApiEnvelope<RoleAssignmentsCreateResponseData>;\n\nexport type RoleAssignmentsRevokeParams = {\n userId: number;\n roleId: number;\n};\nexport type RoleAssignmentsRevokeQuery = undefined;\nexport type RoleAssignmentsRevokeBody = undefined;\nexport type RoleAssignmentsRevokeResponseData = null;\nexport type RoleAssignmentsRevokeResponse = import(\"../types\").ApiEnvelope<RoleAssignmentsRevokeResponseData>;\n\nexport type RoleAssignmentsListParams = undefined;\nexport type RoleAssignmentsListQuery = {\n\n};\nexport type RoleAssignmentsListBody = undefined;\nexport type RoleAssignmentsListResponseData = RoleAssignment[];\nexport type RoleAssignmentsListResponse = import(\"../types\").ApiEnvelope<RoleAssignmentsListResponseData>;\n\nexport type RoleAssignmentsGetUserAssignmentsParams = {\n userId: number;\n};\nexport type RoleAssignmentsGetUserAssignmentsQuery = undefined;\nexport type RoleAssignmentsGetUserAssignmentsBody = undefined;\nexport type RoleAssignmentsGetUserAssignmentsResponseData = RoleAssignment[];\nexport type RoleAssignmentsGetUserAssignmentsResponse = import(\"../types\").ApiEnvelope<RoleAssignmentsGetUserAssignmentsResponseData>;\n\nexport const apiRoutes_roles = {\n // Contract source: explicit\n \"roles_create\": {\n method: \"POST\",\n path: \"/roles/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"roles_manage\"},\n meta: {\n tags: [\"roles\"],\n summary: \"Create role\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: RolesCreateParams;\n query: RolesCreateQuery;\n body: RolesCreateBody;\n response: RolesCreateResponse;\n responseData: RolesCreateResponseData;\n },\n },\n // Contract source: explicit\n \"roles_delete\": {\n method: \"DELETE\",\n path: \"/roles/delete/:roleId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"roles_manage\"},\n meta: {\n tags: [\"roles\"],\n summary: \"Delete role\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: RolesDeleteParams;\n query: RolesDeleteQuery;\n body: RolesDeleteBody;\n response: RolesDeleteResponse;\n responseData: RolesDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"roles_update\": {\n method: \"PUT\",\n path: \"/roles/update/:roleId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"roles_manage\"},\n meta: {\n tags: [\"roles\"],\n summary: \"Update role\",\n bodyContentType: \"application/json\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: RolesUpdateParams;\n query: RolesUpdateQuery;\n body: RolesUpdateBody;\n response: RolesUpdateResponse;\n responseData: RolesUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"roles_get_by_id\": {\n method: \"GET\",\n path: \"/roles/getById/:roleId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"roles_manage\"},\n meta: {\n tags: [\"roles\"],\n summary: \"Get role by id\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: RolesGetByIdParams;\n query: RolesGetByIdQuery;\n body: RolesGetByIdBody;\n response: RolesGetByIdResponse;\n responseData: RolesGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"roles_list\": {\n method: \"GET\",\n path: \"/roles/getAll\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"roles_manage\"},\n meta: {\n tags: [\"roles\"],\n summary: \"Get role base data\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: RolesListParams;\n query: RolesListQuery;\n body: RolesListBody;\n response: RolesListResponse;\n responseData: RolesListResponseData;\n },\n },\n // Contract source: explicit\n \"role_assignments_create\": {\n method: \"POST\",\n path: \"/role-assignments/create/:userId/:roleId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"roles_manage\"},\n meta: {\n tags: [\"roles\",\"role-assignments\"],\n summary: \"Assign role to user\",\n bodyContentType: \"application/json\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: RoleAssignmentsCreateParams;\n query: RoleAssignmentsCreateQuery;\n body: RoleAssignmentsCreateBody;\n response: RoleAssignmentsCreateResponse;\n responseData: RoleAssignmentsCreateResponseData;\n },\n },\n // Contract source: explicit\n \"role_assignments_revoke\": {\n method: \"DELETE\",\n path: \"/role-assignments/delete/:userId/:roleId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"roles_manage\"},\n meta: {\n tags: [\"roles\",\"role-assignments\"],\n summary: \"Revoke role from user\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: RoleAssignmentsRevokeParams;\n query: RoleAssignmentsRevokeQuery;\n body: RoleAssignmentsRevokeBody;\n response: RoleAssignmentsRevokeResponse;\n responseData: RoleAssignmentsRevokeResponseData;\n },\n },\n // Contract source: explicit\n \"role_assignments_list\": {\n method: \"GET\",\n path: \"/role-assignments/getAll\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"roles_history_view\"},\n meta: {\n tags: [\"roles\",\"role-assignments\"],\n summary: \"List all role assignments\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: RoleAssignmentsListParams;\n query: RoleAssignmentsListQuery;\n body: RoleAssignmentsListBody;\n response: RoleAssignmentsListResponse;\n responseData: RoleAssignmentsListResponseData;\n },\n },\n // Contract source: explicit\n \"role_assignments_get_user_assignments\": {\n method: \"GET\",\n path: \"/role-assignments/getUserAssignments/:userId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"roles_manage\"},\n meta: {\n tags: [\"roles\",\"role-assignments\"],\n summary: \"List active role assignments for one user\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: RoleAssignmentsGetUserAssignmentsParams;\n query: RoleAssignmentsGetUserAssignmentsQuery;\n body: RoleAssignmentsGetUserAssignmentsBody;\n response: RoleAssignmentsGetUserAssignmentsResponse;\n responseData: RoleAssignmentsGetUserAssignmentsResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport type GETSecurityPublicParams = undefined;\nexport type GETSecurityPublicQuery = undefined;\nexport type GETSecurityPublicBody = undefined;\nexport type GETSecurityPublicResponseData = { schemaVersion: 2; appId: string; revision: number; publishedAt: string | null; researchers: Array<{ id: string; name: string; headline?: string; company?: string; country?: string; avatar?: string; links: { linkedin?: string; github?: string; x?: string; website?: string } }>; credits: Array<{ id: string; researcherId: string; title: { de?: string; en?: string }; summary: { de?: string; en?: string }; category: string; severity: string; acknowledgedAt: string; reportedAt?: string; fixedAt?: string }> };\nexport type GETSecurityPublicResponse = import(\"../types\").ApiEnvelope<GETSecurityPublicResponseData>;\n\nexport const apiRoutes_security = {\n // Contract source: explicit\n \"GET__security_public\": {\n method: \"GET\",\n path: \"/security/public\",\n auth: {\"type\":\"x_api_key_https\"},\n meta: {\n tags: [\"security\"],\n summary: \"Published security credits for the authenticated frontend edge\",\n description: \"The x-api-key must identify a frontend in FRONTEND_KEYS; a supplied app ID cannot select another frontend.\",\n validated: {\"params\":false,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: GETSecurityPublicParams;\n query: GETSecurityPublicQuery;\n body: GETSecurityPublicBody;\n response: GETSecurityPublicResponse;\n responseData: GETSecurityPublicResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { AppSettings } from \"../../frontend-types\";\n\nexport type SettingsListParams = undefined;\nexport type SettingsListQuery = {\n\n};\nexport type SettingsListBody = undefined;\nexport type SettingsListResponseData = { settings: AppSettings[]; canEdit: boolean };\nexport type SettingsListResponse = import(\"../types\").ApiEnvelope<SettingsListResponseData>;\n\nexport type SettingsUpdateParams = {\n settingId: number;\n key: \"application_name\" | \"billing_plan_limit_managing_companies_base\" | \"billing_plan_limit_managing_companies_premium\" | \"billing_plan_limit_managing_companies_enterprise\" | \"billing_plan_limit_managing_companies_legacy\" | \"billing_plan_limit_document_storage_gb_base\" | \"billing_plan_limit_document_storage_gb_premium\" | \"billing_plan_limit_document_storage_gb_enterprise\" | \"billing_plan_limit_document_storage_gb_legacy\" | \"billing_storage_provider_cost_eur_per_gb\" | \"billing_storage_customer_price_eur_per_gb\" | \"billing_storage_hard_limit_gb_per_company\" | \"billing_overage_currency\" | \"billing_overage_price_eur_per_managing_company\" | \"billing_overage_price_eur_per_document_storage_gb\" | \"billing_overage_negative_corrections_enabled\" | \"billing_overage_pull_default_lookback_days\" | \"billing_overage_pull_max_events\" | \"dunning_global_base_rate_bgb_247\" | \"dunning_payment_reminder_enabled\" | \"dunning_payment_reminder_after_days\";\n};\nexport type SettingsUpdateQuery = undefined;\nexport type SettingsUpdateBody = {\n value: string | number | boolean | Array<any> | Record<string, any> | null;\n};\nexport type SettingsUpdateResponseData = AppSettings;\nexport type SettingsUpdateResponse = import(\"../types\").ApiEnvelope<SettingsUpdateResponseData>;\n\nexport const apiRoutes_settings = {\n // Contract source: explicit\n \"settings_list\": {\n method: \"GET\",\n path: \"/settings/getAll\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"settings\"],\n summary: \"List app settings\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: SettingsListParams;\n query: SettingsListQuery;\n body: SettingsListBody;\n response: SettingsListResponse;\n responseData: SettingsListResponseData;\n },\n },\n // Contract source: explicit\n \"settings_update\": {\n method: \"PUT\",\n path: \"/settings/update/:settingId/:key\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"settings_edit\"},\n meta: {\n tags: [\"settings\"],\n summary: \"Update one app setting\",\n bodyContentType: \"application/json\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: SettingsUpdateParams;\n query: SettingsUpdateQuery;\n body: SettingsUpdateBody;\n response: SettingsUpdateResponse;\n responseData: SettingsUpdateResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { NodeBillUser, UserWithStats } from \"../../frontend-types\";\n\nexport type UserActivityUsersStatsListParams = undefined;\nexport type UserActivityUsersStatsListQuery = {\n\n};\nexport type UserActivityUsersStatsListBody = undefined;\nexport type UserActivityUsersStatsListResponseData = UserWithStats[];\nexport type UserActivityUsersStatsListResponse = import(\"../types\").ApiEnvelope<UserActivityUsersStatsListResponseData>;\n\nexport type UserActivityOverviewGetParams = {\n userId: number;\n};\nexport type UserActivityOverviewGetQuery = undefined;\nexport type UserActivityOverviewGetBody = {\n search?: string;\n page?: number;\n resultsPerPage?: number;\n statusCodes?: Array<number>;\n date?: string;\n startDate?: string;\n endDate?: string;\n days?: number;\n};\nexport type UserActivityOverviewGetResponseData = { data: Array<{ user: NodeBillUser; activityOverview: any }>; pagination: { page: number; resultsPerPage: number; totalPages: number; totalResults: number; availableStatusCodes: number[] } };\nexport type UserActivityOverviewGetResponse = import(\"../types\").ApiEnvelope<UserActivityOverviewGetResponseData>;\n\nexport const apiRoutes_user_activity = {\n // Contract source: explicit\n \"user_activity_users_stats_list\": {\n method: \"GET\",\n path: \"/user-activity/users\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"users_view\"},\n meta: {\n tags: [\"user-activity\"],\n summary: \"List users with activity stats\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: UserActivityUsersStatsListParams;\n query: UserActivityUsersStatsListQuery;\n body: UserActivityUsersStatsListBody;\n response: UserActivityUsersStatsListResponse;\n responseData: UserActivityUsersStatsListResponseData;\n },\n },\n // Contract source: explicit\n \"user_activity_overview_get\": {\n method: \"POST\",\n path: \"/user-activity/user/:userId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"users_view\"},\n meta: {\n tags: [\"user-activity\"],\n summary: \"Get detailed activity overview for a user\",\n bodyContentType: \"application/json\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: UserActivityOverviewGetParams;\n query: UserActivityOverviewGetQuery;\n body: UserActivityOverviewGetBody;\n response: UserActivityOverviewGetResponse;\n responseData: UserActivityOverviewGetResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { NodeBillUser, PaginatedResult } from \"../../frontend-types\";\n\nexport type UsersCreateParams = undefined;\nexport type UsersCreateQuery = undefined;\nexport type UsersCreateBody = {\n externalUserId: string;\n email?: string;\n firstName?: string;\n lastName?: string;\n};\nexport type UsersCreateResponseData = NodeBillUser;\nexport type UsersCreateResponse = import(\"../types\").ApiEnvelope<UsersCreateResponseData>;\n\nexport type UsersDeleteExternalParams = {\n frontendUserId: number;\n};\nexport type UsersDeleteExternalQuery = undefined;\nexport type UsersDeleteExternalBody = undefined;\nexport type UsersDeleteExternalResponseData = NodeBillUser;\nexport type UsersDeleteExternalResponse = import(\"../types\").ApiEnvelope<UsersDeleteExternalResponseData>;\n\nexport type UsersUpdateExternalParams = {\n frontendUserId: number;\n};\nexport type UsersUpdateExternalQuery = undefined;\nexport type UsersUpdateExternalBody = {\n firstName?: string;\n lastName?: string;\n avatarStyle?: {\n seed?: string;\n hue?: number;\n shape?: \"round\" | \"organic\" | \"boxy\" | \"nub\" | \"cloud\" | \"sun\" | \"capsule\" | \"triangle\" | \"hexagon\" | \"droplet\";\n expression?: \"idle\" | \"happy\" | \"sad\" | \"mad\" | \"surprised\" | \"wink\" | \"sleepy\" | \"smug\" | \"unsure\" | \"scared\" | \"love\" | \"shy\" | \"sick\" | \"thinking\";\n background?: \"none\" | \"squircle\" | \"circle\";\n} | null;\n};\nexport type UsersUpdateExternalResponseData = NodeBillUser;\nexport type UsersUpdateExternalResponse = import(\"../types\").ApiEnvelope<UsersUpdateExternalResponseData>;\n\nexport type UsersDeleteParams = {\n userId: number;\n};\nexport type UsersDeleteQuery = undefined;\nexport type UsersDeleteBody = undefined;\nexport type UsersDeleteResponseData = NodeBillUser;\nexport type UsersDeleteResponse = import(\"../types\").ApiEnvelope<UsersDeleteResponseData>;\n\nexport type UsersListParams = undefined;\nexport type UsersListQuery = {\n\n};\nexport type UsersListBody = undefined;\nexport type UsersListResponseData = NodeBillUser[];\nexport type UsersListResponse = import(\"../types\").ApiEnvelope<UsersListResponseData>;\n\nexport type UsersGetByEmailParams = {\n email: string;\n};\nexport type UsersGetByEmailQuery = undefined;\nexport type UsersGetByEmailBody = undefined;\nexport type UsersGetByEmailResponseData = NodeBillUser;\nexport type UsersGetByEmailResponse = import(\"../types\").ApiEnvelope<UsersGetByEmailResponseData>;\n\nexport type UsersGetByExternalUserIdParams = {\n externalUserId: number;\n};\nexport type UsersGetByExternalUserIdQuery = undefined;\nexport type UsersGetByExternalUserIdBody = undefined;\nexport type UsersGetByExternalUserIdResponseData = NodeBillUser;\nexport type UsersGetByExternalUserIdResponse = import(\"../types\").ApiEnvelope<UsersGetByExternalUserIdResponseData>;\n\nexport type UsersGetByIdParams = {\n userId: number;\n};\nexport type UsersGetByIdQuery = {\n\n};\nexport type UsersGetByIdBody = undefined;\nexport type UsersGetByIdResponseData = NodeBillUser;\nexport type UsersGetByIdResponse = import(\"../types\").ApiEnvelope<UsersGetByIdResponseData>;\n\nexport type UsersSearchParams = undefined;\nexport type UsersSearchQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n};\nexport type UsersSearchBody = undefined;\nexport type UsersSearchResponseData = PaginatedResult<NodeBillUser>;\nexport type UsersSearchResponse = import(\"../types\").ApiEnvelope<UsersSearchResponseData>;\n\nexport const apiRoutes_users = {\n // Contract source: explicit\n \"users_create\": {\n method: \"POST\",\n path: \"/users/create\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"users\"],\n summary: \"Create user\",\n bodyContentType: \"application/json\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: UsersCreateParams;\n query: UsersCreateQuery;\n body: UsersCreateBody;\n response: UsersCreateResponse;\n responseData: UsersCreateResponseData;\n },\n },\n // Contract source: explicit\n \"users_delete_external\": {\n method: \"DELETE\",\n path: \"/users/delete/external/:frontendUserId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"users\"],\n summary: \"Delete own user via external user id\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: UsersDeleteExternalParams;\n query: UsersDeleteExternalQuery;\n body: UsersDeleteExternalBody;\n response: UsersDeleteExternalResponse;\n responseData: UsersDeleteExternalResponseData;\n },\n },\n // Contract source: explicit\n \"users_update_external\": {\n method: \"PUT\",\n path: \"/users/update/external/:frontendUserId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"users\"],\n summary: \"Update own user profile via external user id\",\n bodyContentType: \"application/json\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: UsersUpdateExternalParams;\n query: UsersUpdateExternalQuery;\n body: UsersUpdateExternalBody;\n response: UsersUpdateExternalResponse;\n responseData: UsersUpdateExternalResponseData;\n },\n },\n // Contract source: explicit\n \"users_delete\": {\n method: \"DELETE\",\n path: \"/users/delete/:userId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"users_manage\"},\n meta: {\n tags: [\"users\"],\n summary: \"Delete user by internal id\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: UsersDeleteParams;\n query: UsersDeleteQuery;\n body: UsersDeleteBody;\n response: UsersDeleteResponse;\n responseData: UsersDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"users_list\": {\n method: \"GET\",\n path: \"/users/getAll\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"users_view\"},\n meta: {\n tags: [\"users\"],\n summary: \"List all users\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: UsersListParams;\n query: UsersListQuery;\n body: UsersListBody;\n response: UsersListResponse;\n responseData: UsersListResponseData;\n },\n },\n // Contract source: explicit\n \"users_get_by_email\": {\n method: \"GET\",\n path: \"/users/getByEmail/:email\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"users_view\"},\n meta: {\n tags: [\"users\"],\n summary: \"Get user by email\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: UsersGetByEmailParams;\n query: UsersGetByEmailQuery;\n body: UsersGetByEmailBody;\n response: UsersGetByEmailResponse;\n responseData: UsersGetByEmailResponseData;\n },\n },\n // Contract source: explicit\n \"users_get_by_external_user_id\": {\n method: \"GET\",\n path: \"/users/getByExternalUserId/:externalUserId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"users\"],\n summary: \"Get user by external user id\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: UsersGetByExternalUserIdParams;\n query: UsersGetByExternalUserIdQuery;\n body: UsersGetByExternalUserIdBody;\n response: UsersGetByExternalUserIdResponse;\n responseData: UsersGetByExternalUserIdResponseData;\n },\n },\n // Contract source: explicit\n \"users_get_by_id\": {\n method: \"GET\",\n path: \"/users/getById/:userId\",\n auth: {\"type\":\"frontend_bearer_http\"},\n meta: {\n tags: [\"users\"],\n summary: \"Get user by internal id\",\n description: \"Controller enforces self-access or `users_view` permission.\",\n validated: {\"params\":true,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: UsersGetByIdParams;\n query: UsersGetByIdQuery;\n body: UsersGetByIdBody;\n response: UsersGetByIdResponse;\n responseData: UsersGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"users_search\": {\n method: \"GET\",\n path: \"/users/search\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"users_view\"},\n meta: {\n tags: [\"users\"],\n summary: \"Search users\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: UsersSearchParams;\n query: UsersSearchQuery;\n body: UsersSearchBody;\n response: UsersSearchResponse;\n responseData: UsersSearchResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { PaginatedResult, Webhook } from \"../../frontend-types\";\n\nexport type WebhooksSearchParams = undefined;\nexport type WebhooksSearchQuery = {\n page?: number;\n pageSize?: number;\n search?: string;\n provider?: string;\n eventType?: string;\n status?: \"pending\" | \"processed\" | \"failed\" | \"skipped\";\n processed?: boolean;\n externalId?: string;\n dateFrom?: string;\n dateTo?: string;\n sortBy?: \"createdAt\" | \"processedAt\" | \"status\";\n sortOrder?: \"asc\" | \"desc\";\n};\nexport type WebhooksSearchBody = undefined;\nexport type WebhooksSearchResponseData = { webhooks: PaginatedResult<Webhook>; canDelete: boolean };\nexport type WebhooksSearchResponse = import(\"../types\").ApiEnvelope<WebhooksSearchResponseData>;\n\nexport type WebhooksDeleteParams = {\n webhookId: number;\n};\nexport type WebhooksDeleteQuery = undefined;\nexport type WebhooksDeleteBody = undefined;\nexport type WebhooksDeleteResponseData = null;\nexport type WebhooksDeleteResponse = import(\"../types\").ApiEnvelope<WebhooksDeleteResponseData>;\n\nexport type WebhooksDeleteBulkParams = {\n webhookIds: string;\n};\nexport type WebhooksDeleteBulkQuery = undefined;\nexport type WebhooksDeleteBulkBody = undefined;\nexport type WebhooksDeleteBulkResponseData = null;\nexport type WebhooksDeleteBulkResponse = import(\"../types\").ApiEnvelope<WebhooksDeleteBulkResponseData>;\n\nexport const apiRoutes_webhooks = {\n // Contract source: explicit\n \"webhooks_search\": {\n method: \"GET\",\n path: \"/webhooks/search\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"webhook_view\"},\n meta: {\n tags: [\"webhooks\"],\n summary: \"Search webhooks (paginated)\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: WebhooksSearchParams;\n query: WebhooksSearchQuery;\n body: WebhooksSearchBody;\n response: WebhooksSearchResponse;\n responseData: WebhooksSearchResponseData;\n },\n },\n // Contract source: explicit\n \"webhooks_delete\": {\n method: \"DELETE\",\n path: \"/webhooks/delete/:webhookId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"webhook_delete\"},\n meta: {\n tags: [\"webhooks\"],\n summary: \"Delete one webhook\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: WebhooksDeleteParams;\n query: WebhooksDeleteQuery;\n body: WebhooksDeleteBody;\n response: WebhooksDeleteResponse;\n responseData: WebhooksDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"webhooks_delete_bulk\": {\n method: \"DELETE\",\n path: \"/webhooks/delete/mass/:webhookIds\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"webhook_delete\"},\n meta: {\n tags: [\"webhooks\"],\n summary: \"Delete multiple webhooks\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: WebhooksDeleteBulkParams;\n query: WebhooksDeleteBulkQuery;\n body: WebhooksDeleteBulkBody;\n response: WebhooksDeleteBulkResponse;\n responseData: WebhooksDeleteBulkResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nimport type { PaginatedResult, WorkEntry, WorkEntryAssignment } from \"../../frontend-types\";\n\nexport type WorkTrackingAssignmentCreateParams = undefined;\nexport type WorkTrackingAssignmentCreateQuery = undefined;\nexport type WorkTrackingAssignmentCreateBody = {\n workEntryId: number;\n companyId?: number | null;\n};\nexport type WorkTrackingAssignmentCreateResponseData = WorkEntryAssignment;\nexport type WorkTrackingAssignmentCreateResponse = import(\"../types\").ApiEnvelope<WorkTrackingAssignmentCreateResponseData>;\n\nexport type WorkTrackingAssignmentUpdateParams = {\n workEntryAssignmentId: number;\n};\nexport type WorkTrackingAssignmentUpdateQuery = undefined;\nexport type WorkTrackingAssignmentUpdateBody = {\n workEntryId?: number;\n companyId?: number | null;\n};\nexport type WorkTrackingAssignmentUpdateResponseData = WorkEntryAssignment;\nexport type WorkTrackingAssignmentUpdateResponse = import(\"../types\").ApiEnvelope<WorkTrackingAssignmentUpdateResponseData>;\n\nexport type WorkTrackingAssignmentDeleteParams = {\n workEntryAssignmentId: number;\n};\nexport type WorkTrackingAssignmentDeleteQuery = undefined;\nexport type WorkTrackingAssignmentDeleteBody = undefined;\nexport type WorkTrackingAssignmentDeleteResponseData = null;\nexport type WorkTrackingAssignmentDeleteResponse = import(\"../types\").ApiEnvelope<WorkTrackingAssignmentDeleteResponseData>;\n\nexport type WorkTrackingGetMyRoleParams = undefined;\nexport type WorkTrackingGetMyRoleQuery = {\n\n};\nexport type WorkTrackingGetMyRoleBody = undefined;\nexport type WorkTrackingGetMyRoleResponseData = string;\nexport type WorkTrackingGetMyRoleResponse = import(\"../types\").ApiEnvelope<WorkTrackingGetMyRoleResponseData>;\n\nexport type WorkTrackingListParams = undefined;\nexport type WorkTrackingListQuery = {\n search?: string;\n page?: number;\n pageSize?: number;\n userId?: number;\n companyId?: number;\n status?: \"pending\" | \"approved\" | \"rejected\";\n};\nexport type WorkTrackingListBody = undefined;\nexport type WorkTrackingListResponseData = PaginatedResult<WorkEntry>;\nexport type WorkTrackingListResponse = import(\"../types\").ApiEnvelope<WorkTrackingListResponseData>;\n\nexport type WorkTrackingGetByIdParams = {\n workEntryId: number;\n};\nexport type WorkTrackingGetByIdQuery = undefined;\nexport type WorkTrackingGetByIdBody = undefined;\nexport type WorkTrackingGetByIdResponseData = WorkEntry;\nexport type WorkTrackingGetByIdResponse = import(\"../types\").ApiEnvelope<WorkTrackingGetByIdResponseData>;\n\nexport type WorkTrackingCreateParams = undefined;\nexport type WorkTrackingCreateQuery = undefined;\nexport type WorkTrackingCreateBody = {\n start: string | string;\n end?: string | string | null;\n timeInMinutes?: number | null;\n entryType: \"work\" | \"assistance\" | \"service\" | \"consultation\" | \"planning\" | \"administration\" | \"meeting\" | \"travel\" | \"maintenance\" | \"training\" | \"support\" | \"other\";\n description?: string | null;\n isBillable?: boolean;\n companyId?: number | null;\n};\nexport type WorkTrackingCreateResponseData = WorkEntry;\nexport type WorkTrackingCreateResponse = import(\"../types\").ApiEnvelope<WorkTrackingCreateResponseData>;\n\nexport type WorkTrackingUpdateParams = {\n workEntryId: number;\n};\nexport type WorkTrackingUpdateQuery = undefined;\nexport type WorkTrackingUpdateBody = {\n start?: string | string;\n end?: string | string | null;\n timeInMinutes?: number | null;\n entryType?: \"work\" | \"assistance\" | \"service\" | \"consultation\" | \"planning\" | \"administration\" | \"meeting\" | \"travel\" | \"maintenance\" | \"training\" | \"support\" | \"other\";\n description?: string | null;\n isBillable?: boolean;\n companyId?: number | null;\n};\nexport type WorkTrackingUpdateResponseData = WorkEntry;\nexport type WorkTrackingUpdateResponse = import(\"../types\").ApiEnvelope<WorkTrackingUpdateResponseData>;\n\nexport type WorkTrackingDeleteParams = {\n workEntryId: number;\n};\nexport type WorkTrackingDeleteQuery = undefined;\nexport type WorkTrackingDeleteBody = undefined;\nexport type WorkTrackingDeleteResponseData = null;\nexport type WorkTrackingDeleteResponse = import(\"../types\").ApiEnvelope<WorkTrackingDeleteResponseData>;\n\nexport type WorkTrackingApproveParams = {\n workEntryId: number;\n};\nexport type WorkTrackingApproveQuery = undefined;\nexport type WorkTrackingApproveBody = {\n isBilled?: boolean;\n};\nexport type WorkTrackingApproveResponseData = WorkEntry;\nexport type WorkTrackingApproveResponse = import(\"../types\").ApiEnvelope<WorkTrackingApproveResponseData>;\n\nexport type WorkTrackingRejectParams = {\n workEntryId: number;\n};\nexport type WorkTrackingRejectQuery = undefined;\nexport type WorkTrackingRejectBody = {\n rejectionReason: string;\n};\nexport type WorkTrackingRejectResponseData = WorkEntry;\nexport type WorkTrackingRejectResponse = import(\"../types\").ApiEnvelope<WorkTrackingRejectResponseData>;\n\nexport type WorkTrackingBillPreviewParams = undefined;\nexport type WorkTrackingBillPreviewQuery = undefined;\nexport type WorkTrackingBillPreviewBody = {\n workEntryIds: Array<number>;\n companyId: number;\n hourlyRate: number;\n invoiceDate?: string | string;\n dueDate?: string | string;\n notes?: string;\n paymentAccountId?: number | null;\n bankFallbackAccountId?: number | null;\n};\nexport type WorkTrackingBillPreviewResponseData = {\n quoteVersion: string;\n quoteHash: string;\n computedAt: string;\n totals: {\n net: number;\n tax: number;\n gross: number;\n currency: string;\n};\n vat: {\n requestedProductType: string | null;\n effectiveTreatment: string;\n effectiveRate: number;\n legalReference: string | null;\n note: string | null;\n isMixedRates: boolean;\n};\n paymentResolution: {\n paymentAccountId: number | null;\n paymentAccountSource: string;\n bankFallbackAccountId: number | null;\n bankFallbackAccountSource: string;\n};\n};\nexport type WorkTrackingBillPreviewResponse = import(\"../types\").ApiEnvelope<WorkTrackingBillPreviewResponseData>;\n\nexport type WorkTrackingBillParams = undefined;\nexport type WorkTrackingBillQuery = undefined;\nexport type WorkTrackingBillBody = {\n workEntryIds: Array<number>;\n companyId: number;\n hourlyRate: number;\n invoiceDate?: string | string;\n dueDate?: string | string;\n notes?: string;\n paymentAccountId?: number | null;\n bankFallbackAccountId?: number | null;\n};\nexport type WorkTrackingBillResponseData = {\n invoiceId: number;\n invoiceNumber: string;\n};\nexport type WorkTrackingBillResponse = import(\"../types\").ApiEnvelope<WorkTrackingBillResponseData>;\n\nexport const apiRoutes_work_tracking = {\n // Contract source: explicit\n \"work_tracking_assignment_create\": {\n method: \"POST\",\n path: \"/apps/admin/work-tracking/assignments/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_create\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Create a work entry assignment\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: WorkTrackingAssignmentCreateParams;\n query: WorkTrackingAssignmentCreateQuery;\n body: WorkTrackingAssignmentCreateBody;\n response: WorkTrackingAssignmentCreateResponse;\n responseData: WorkTrackingAssignmentCreateResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_assignment_update\": {\n method: \"PUT\",\n path: \"/apps/admin/work-tracking/assignments/update/:workEntryAssignmentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_create\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Update a work entry assignment\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: WorkTrackingAssignmentUpdateParams;\n query: WorkTrackingAssignmentUpdateQuery;\n body: WorkTrackingAssignmentUpdateBody;\n response: WorkTrackingAssignmentUpdateResponse;\n responseData: WorkTrackingAssignmentUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_assignment_delete\": {\n method: \"DELETE\",\n path: \"/apps/admin/work-tracking/assignments/delete/:workEntryAssignmentId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_create\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Delete a work entry assignment\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: WorkTrackingAssignmentDeleteParams;\n query: WorkTrackingAssignmentDeleteQuery;\n body: WorkTrackingAssignmentDeleteBody;\n response: WorkTrackingAssignmentDeleteResponse;\n responseData: WorkTrackingAssignmentDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_get_my_role\": {\n method: \"GET\",\n path: \"/apps/admin/work-tracking/my-role\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_create\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Get current user's work tracking role\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: WorkTrackingGetMyRoleParams;\n query: WorkTrackingGetMyRoleQuery;\n body: WorkTrackingGetMyRoleBody;\n response: WorkTrackingGetMyRoleResponse;\n responseData: WorkTrackingGetMyRoleResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_list\": {\n method: \"GET\",\n path: \"/apps/admin/work-tracking/list\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_create\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Search and list work entries\",\n validated: {\"params\":false,\"query\":true,\"body\":false},\n },\n types: null as unknown as {\n params: WorkTrackingListParams;\n query: WorkTrackingListQuery;\n body: WorkTrackingListBody;\n response: WorkTrackingListResponse;\n responseData: WorkTrackingListResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_get_by_id\": {\n method: \"GET\",\n path: \"/apps/admin/work-tracking/byId/:workEntryId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_create\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Get work entry by ID\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: WorkTrackingGetByIdParams;\n query: WorkTrackingGetByIdQuery;\n body: WorkTrackingGetByIdBody;\n response: WorkTrackingGetByIdResponse;\n responseData: WorkTrackingGetByIdResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_create\": {\n method: \"POST\",\n path: \"/apps/admin/work-tracking/create\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_create\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Create a new work entry\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: WorkTrackingCreateParams;\n query: WorkTrackingCreateQuery;\n body: WorkTrackingCreateBody;\n response: WorkTrackingCreateResponse;\n responseData: WorkTrackingCreateResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_update\": {\n method: \"PUT\",\n path: \"/apps/admin/work-tracking/update/:workEntryId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_create\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Update an existing work entry\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: WorkTrackingUpdateParams;\n query: WorkTrackingUpdateQuery;\n body: WorkTrackingUpdateBody;\n response: WorkTrackingUpdateResponse;\n responseData: WorkTrackingUpdateResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_delete\": {\n method: \"DELETE\",\n path: \"/apps/admin/work-tracking/delete/:workEntryId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_create\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Delete a work entry\",\n validated: {\"params\":true,\"query\":false,\"body\":false},\n },\n types: null as unknown as {\n params: WorkTrackingDeleteParams;\n query: WorkTrackingDeleteQuery;\n body: WorkTrackingDeleteBody;\n response: WorkTrackingDeleteResponse;\n responseData: WorkTrackingDeleteResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_approve\": {\n method: \"POST\",\n path: \"/apps/admin/work-tracking/approve/:workEntryId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_validate\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Approve a work entry\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: WorkTrackingApproveParams;\n query: WorkTrackingApproveQuery;\n body: WorkTrackingApproveBody;\n response: WorkTrackingApproveResponse;\n responseData: WorkTrackingApproveResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_reject\": {\n method: \"POST\",\n path: \"/apps/admin/work-tracking/reject/:workEntryId\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_validate\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Reject a work entry\",\n validated: {\"params\":true,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: WorkTrackingRejectParams;\n query: WorkTrackingRejectQuery;\n body: WorkTrackingRejectBody;\n response: WorkTrackingRejectResponse;\n responseData: WorkTrackingRejectResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_bill_preview\": {\n method: \"POST\",\n path: \"/apps/admin/work-tracking/bill/preview\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_validate\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Preview invoice from work entries (totals, VAT, payment)\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: WorkTrackingBillPreviewParams;\n query: WorkTrackingBillPreviewQuery;\n body: WorkTrackingBillPreviewBody;\n response: WorkTrackingBillPreviewResponse;\n responseData: WorkTrackingBillPreviewResponseData;\n },\n },\n // Contract source: explicit\n \"work_tracking_bill\": {\n method: \"POST\",\n path: \"/apps/admin/work-tracking/bill\",\n auth: {\"type\":\"frontend_permission_http\",\"permission\":\"work_validate\"},\n meta: {\n tags: [\"work-tracking\"],\n summary: \"Bill multiple work entries (create invoice)\",\n validated: {\"params\":false,\"query\":false,\"body\":true},\n },\n types: null as unknown as {\n params: WorkTrackingBillParams;\n query: WorkTrackingBillQuery;\n body: WorkTrackingBillBody;\n response: WorkTrackingBillResponse;\n responseData: WorkTrackingBillResponseData;\n },\n },\n} as const;","// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Run `pnpm run api:generate` to regenerate\n\nexport * from \"./types\";\nexport * from \"./catalog\";\nexport * from \"./features/routes.admin\";\nexport * from \"./base/routes.amp_mail\";\nexport * from \"./base/routes.app_info\";\nexport * from \"./base/routes.auth\";\nexport * from \"./features/routes.bookkeeping\";\nexport * from \"./features/routes.currency_rates\";\nexport * from \"./features/routes.customer_companies\";\nexport * from \"./features/routes.customer_companies_external\";\nexport * from \"./features/routes.documents\";\nexport * from \"./features/routes.dunning_external\";\nexport * from \"./features/routes.enterprise\";\nexport * from \"./base/routes.entitlements\";\nexport * from \"./features/routes.exports\";\nexport * from \"./base/routes.internal\";\nexport * from \"./features/routes.invoices\";\nexport * from \"./features/routes.invoices_external\";\nexport * from \"./base/routes.logs\";\nexport * from \"./features/routes.managing_companies\";\nexport * from \"./features/routes.managing_companies_external\";\nexport * from \"./features/routes.managing_company_logos\";\nexport * from \"./base/routes.oauth2\";\nexport * from \"./base/routes.oauth2_external\";\nexport * from \"./base/routes.permissions\";\nexport * from \"./base/routes.roles\";\nexport * from \"./base/routes.security\";\nexport * from \"./base/routes.settings\";\nexport * from \"./base/routes.user_activity\";\nexport * from \"./base/routes.users\";\nexport * from \"./base/routes.webhooks\";\nexport * from \"./features/routes.work_tracking\";\n\nimport type { ApiEnvelope } from \"./types\";\nimport { apiRoutes_admin } from \"./features/routes.admin\";\nimport { apiRoutes_amp_mail } from \"./base/routes.amp_mail\";\nimport { apiRoutes_app_info } from \"./base/routes.app_info\";\nimport { apiRoutes_auth } from \"./base/routes.auth\";\nimport { apiRoutes_bookkeeping } from \"./features/routes.bookkeeping\";\nimport { apiRoutes_currency_rates } from \"./features/routes.currency_rates\";\nimport { apiRoutes_customer_companies } from \"./features/routes.customer_companies\";\nimport { apiRoutes_customer_companies_external } from \"./features/routes.customer_companies_external\";\nimport { apiRoutes_documents } from \"./features/routes.documents\";\nimport { apiRoutes_dunning_external } from \"./features/routes.dunning_external\";\nimport { apiRoutes_enterprise } from \"./features/routes.enterprise\";\nimport { apiRoutes_entitlements } from \"./base/routes.entitlements\";\nimport { apiRoutes_exports } from \"./features/routes.exports\";\nimport { apiRoutes_internal } from \"./base/routes.internal\";\nimport { apiRoutes_invoices } from \"./features/routes.invoices\";\nimport { apiRoutes_invoices_external } from \"./features/routes.invoices_external\";\nimport { apiRoutes_logs } from \"./base/routes.logs\";\nimport { apiRoutes_managing_companies } from \"./features/routes.managing_companies\";\nimport { apiRoutes_managing_companies_external } from \"./features/routes.managing_companies_external\";\nimport { apiRoutes_managing_company_logos } from \"./features/routes.managing_company_logos\";\nimport { apiRoutes_oauth2 } from \"./base/routes.oauth2\";\nimport { apiRoutes_oauth2_external } from \"./base/routes.oauth2_external\";\nimport { apiRoutes_permissions } from \"./base/routes.permissions\";\nimport { apiRoutes_roles } from \"./base/routes.roles\";\nimport { apiRoutes_security } from \"./base/routes.security\";\nimport { apiRoutes_settings } from \"./base/routes.settings\";\nimport { apiRoutes_user_activity } from \"./base/routes.user_activity\";\nimport { apiRoutes_users } from \"./base/routes.users\";\nimport { apiRoutes_webhooks } from \"./base/routes.webhooks\";\nimport { apiRoutes_work_tracking } from \"./features/routes.work_tracking\";\n\nexport type ApiRoutes =\n typeof apiRoutes_admin\n & typeof apiRoutes_amp_mail\n & typeof apiRoutes_app_info\n & typeof apiRoutes_auth\n & typeof apiRoutes_bookkeeping\n & typeof apiRoutes_currency_rates\n & typeof apiRoutes_customer_companies\n & typeof apiRoutes_customer_companies_external\n & typeof apiRoutes_documents\n & typeof apiRoutes_dunning_external\n & typeof apiRoutes_enterprise\n & typeof apiRoutes_entitlements\n & typeof apiRoutes_exports\n & typeof apiRoutes_internal\n & typeof apiRoutes_invoices\n & typeof apiRoutes_invoices_external\n & typeof apiRoutes_logs\n & typeof apiRoutes_managing_companies\n & typeof apiRoutes_managing_companies_external\n & typeof apiRoutes_managing_company_logos\n & typeof apiRoutes_oauth2\n & typeof apiRoutes_oauth2_external\n & typeof apiRoutes_permissions\n & typeof apiRoutes_roles\n & typeof apiRoutes_security\n & typeof apiRoutes_settings\n & typeof apiRoutes_user_activity\n & typeof apiRoutes_users\n & typeof apiRoutes_webhooks\n & typeof apiRoutes_work_tracking\n;\n\nexport const apiRoutes: ApiRoutes = {\n ...apiRoutes_admin,\n ...apiRoutes_amp_mail,\n ...apiRoutes_app_info,\n ...apiRoutes_auth,\n ...apiRoutes_bookkeeping,\n ...apiRoutes_currency_rates,\n ...apiRoutes_customer_companies,\n ...apiRoutes_customer_companies_external,\n ...apiRoutes_documents,\n ...apiRoutes_dunning_external,\n ...apiRoutes_enterprise,\n ...apiRoutes_entitlements,\n ...apiRoutes_exports,\n ...apiRoutes_internal,\n ...apiRoutes_invoices,\n ...apiRoutes_invoices_external,\n ...apiRoutes_logs,\n ...apiRoutes_managing_companies,\n ...apiRoutes_managing_companies_external,\n ...apiRoutes_managing_company_logos,\n ...apiRoutes_oauth2,\n ...apiRoutes_oauth2_external,\n ...apiRoutes_permissions,\n ...apiRoutes_roles,\n ...apiRoutes_security,\n ...apiRoutes_settings,\n ...apiRoutes_user_activity,\n ...apiRoutes_users,\n ...apiRoutes_webhooks,\n ...apiRoutes_work_tracking,\n} as const;\n\nexport type ApiRouteKey = keyof typeof apiRoutes;\nexport type ApiRoute<K extends ApiRouteKey> = (typeof apiRoutes)[K];\nexport type ApiRequest<K extends ApiRouteKey> = ApiRoute<K>[\"types\"];\nexport type ApiResponse<K extends ApiRouteKey> = ApiRoute<K>[\"types\"][\"response\"];\nexport type ApiResponseData<K extends ApiRouteKey> = ApiRoute<K>[\"types\"][\"responseData\"];\n\nexport type { ApiEnvelope };"]}
|