@medalsocial/sdk 1.7.0 → 1.9.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/openapi.generated.ts"],"sourcesContent":["/**\n * This file was auto-generated by openapi-typescript.\n * Do not make direct changes to the file.\n */\n\nexport interface paths {\n \"/api/v1/posts\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List posts */\n get: operations[\"listPosts\"];\n put?: never;\n /** Create a post */\n post: operations[\"createPost\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/posts/channels\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List connected post channels */\n get: operations[\"listPostChannels\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/posts/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** Get post detail */\n get: operations[\"getPost\"];\n put?: never;\n post?: never;\n /** Delete a post */\n delete: operations[\"deletePost\"];\n options?: never;\n head?: never;\n /** Update a draft post */\n patch: operations[\"updatePost\"];\n trace?: never;\n };\n \"/api/v1/posts/{id}/schedule\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Schedule a post */\n post: operations[\"schedulePost\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/posts/{id}/publish\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Publish a post */\n post: operations[\"publishPost\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/emails\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Send a transactional email */\n post: operations[\"sendEmail\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/emails/batch\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Send a batch of transactional emails */\n post: operations[\"batchSendEmails\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/emails/templates\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List active email templates */\n get: operations[\"listEmailTemplates\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/emails/templates/{slug}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n slug: components[\"parameters\"][\"Slug\"];\n };\n cookie?: never;\n };\n /** Get an email template */\n get: operations[\"getEmailTemplate\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/emails/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** Get sent email status */\n get: operations[\"getEmailSend\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/contacts\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List contacts */\n get: operations[\"listContacts\"];\n put?: never;\n /** Create a contact */\n post: operations[\"createContact\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/contacts/import\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Import contacts */\n post: operations[\"importContacts\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/contacts/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** Get a contact */\n get: operations[\"getContact\"];\n put?: never;\n post?: never;\n /** Delete a contact */\n delete: operations[\"deleteContact\"];\n options?: never;\n head?: never;\n /** Update a contact */\n patch: operations[\"updateContact\"];\n trace?: never;\n };\n \"/api/v1/contacts/{id}/activities\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** List contact activities */\n get: operations[\"listContactActivities\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/contacts/{id}/notes\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Add a contact note */\n post: operations[\"addContactNote\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/deals\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List deals */\n get: operations[\"listDeals\"];\n put?: never;\n /** Create a deal */\n post: operations[\"createDeal\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/deals/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** Get a deal */\n get: operations[\"getDeal\"];\n put?: never;\n post?: never;\n /** Delete a deal */\n delete: operations[\"deleteDeal\"];\n options?: never;\n head?: never;\n /** Update a deal */\n patch: operations[\"updateDeal\"];\n trace?: never;\n };\n \"/api/v1/bookings\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List bookings */\n get: operations[\"listBookings\"];\n put?: never;\n /**\n * Create a booking or party\n * @description Books every item or none of them. Each created booking carries a `manage_token` returned exactly once — only its hash is stored, and an idempotent replay omits it.\n */\n post: operations[\"createBooking\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/services\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List bookable services */\n get: operations[\"listBookingServices\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/resources\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List bookable resources */\n get: operations[\"listBookingResources\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/availability\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List free slots for a service\n * @description Slots reflect opening hours, time off, buffers, and existing bookings at the moment of the call. They are not held.\n */\n get: operations[\"listBookingAvailability\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/schedule\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List the dates a service can be booked on\n * @description The other half of `availability`. Availability returns free slots and nothing else, so a closed day, an evening past closing and a fully booked day all come back as the same empty array. This returns one entry per date the workspace keeps opening hours on; a date ABSENT from the response is closed. `last_start_ts` is the last start this service could occupy on that date (it depends on the service's duration and buffers, not just the closing time) and is `null` for a date with posted hours that is shut outright, such as a public holiday.\n */\n get: operations[\"listBookingSchedule\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** Get a booking */\n get: operations[\"getBooking\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n /** Annotate a booking */\n patch: operations[\"updateBooking\"];\n trace?: never;\n };\n \"/api/v1/bookings/{id}/cancel\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Cancel a booking as the business\n * @description Staff semantics — the workspace's cancel window is bypassed and the cancellation is attributed to staff.\n */\n post: operations[\"cancelBooking\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/{id}/reschedule\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Reschedule a booking as the business\n * @description Staff semantics — the reschedule window is bypassed. The old booking is cancelled and a new one inserted, so the response carries a new booking id and a freshly minted manage token.\n */\n post: operations[\"rescheduleBooking\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/{id}/no-show\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Mark a booking as a no-show */\n post: operations[\"markBookingNoShow\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/manage/{token}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */\n token: components[\"parameters\"][\"ManageToken\"];\n };\n cookie?: never;\n };\n /** Get the customer manage summary for a token */\n get: operations[\"getManagedBooking\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/manage/{token}/cancel\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */\n token: components[\"parameters\"][\"ManageToken\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Cancel on the customer's behalf\n * @description Customer semantics — the workspace's cancel window is ENFORCED and the cancellation is attributed to the customer.\n */\n post: operations[\"cancelManagedBooking\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/manage/{token}/reschedule\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */\n token: components[\"parameters\"][\"ManageToken\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Reschedule on the customer's behalf\n * @description Customer semantics — the reschedule window is ENFORCED. The response carries a new booking id and a new manage token; the old token stops working.\n */\n post: operations[\"rescheduleManagedBooking\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/gdpr/export\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Request a GDPR export */\n post: operations[\"requestGdprExport\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/gdpr/exports\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List GDPR exports */\n get: operations[\"listGdprExports\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/gdpr/exports/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** Get a GDPR export */\n get: operations[\"getGdprExport\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/gdpr/consent\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Record GDPR consent */\n post: operations[\"recordGdprConsent\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/gdpr/consent/{email}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n email: string;\n };\n cookie?: never;\n };\n /** Get GDPR consent records */\n get: operations[\"getGdprConsent\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/cookie-consent\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Record cookie consent */\n post: operations[\"recordCookieConsent\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/me/workspaces\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List accessible workspaces */\n get: operations[\"listWorkspaces\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/helpdesk/conversations\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List helpdesk conversations */\n get: operations[\"listHelpdeskConversations\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/helpdesk/conversations/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** Get a helpdesk conversation */\n get: operations[\"getHelpdeskConversation\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n /**\n * Update a conversation's status or assignee\n * @description Set `status` and/or `assignee_user_id` (`null` unassigns). At least one field is required. Capability-scoped tokens must send `Idempotency-Key` and `X-Capability-Confirmation` headers on this route; API keys with legacy scopes may omit them.\n */\n patch: operations[\"updateHelpdeskConversation\"];\n trace?: never;\n };\n \"/api/v1/helpdesk/conversations/{id}/messages\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** List conversation messages */\n get: operations[\"listHelpdeskConversationMessages\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/helpdesk/replies\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Send an operator reply or internal note\n * @description Send an `Idempotency-Key` header so retried requests do not create duplicate messages — it is required for capability-scoped tokens (together with `X-Capability-Confirmation`).\n */\n post: operations[\"createHelpdeskReply\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/webhooks\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List webhook endpoints */\n get: operations[\"listWebhooks\"];\n put?: never;\n /**\n * Create a webhook endpoint\n * @description The response's `data.secret` contains the signing secret EXACTLY ONCE — it can never be retrieved again, so store it securely immediately. An idempotent replay (same `Idempotency-Key`) returns the existing endpoint WITHOUT `secret`. Deliveries are HTTP POSTs signed with `X-Medal-Signature: sha256=<base64(HMAC-SHA256(\"{timestamp}.{rawBody}\", secret))>` plus `X-Medal-Timestamp`, `X-Medal-Event`, and `X-Medal-Delivery-Id` / `Idempotency-Key` headers.\n */\n post: operations[\"createWebhook\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/webhooks/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** Get a webhook endpoint */\n get: operations[\"getWebhook\"];\n put?: never;\n post?: never;\n /**\n * Delete a webhook endpoint\n * @description Permanently deletes the endpoint and stops all outbound deliveries. Capability-scoped tokens must send `Idempotency-Key` and `X-Capability-Confirmation` headers on this route; API keys with legacy scopes may omit them.\n */\n delete: operations[\"deleteWebhook\"];\n options?: never;\n head?: never;\n /**\n * Update a webhook endpoint\n * @description Only provided fields change. Pass `null` for `channels` or `channel_connection_ids` to clear that filter.\n */\n patch: operations[\"updateWebhook\"];\n trace?: never;\n };\n \"/api/v1/webhooks/{id}/deliveries\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** List recent deliveries */\n get: operations[\"listWebhookDeliveries\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/webhooks/{id}/test\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Queue a test delivery\n * @description Queues a signed `test.ping` delivery to the endpoint.\n */\n post: operations[\"testWebhook\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/capability-confirmations\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Issue a capability confirmation token\n * @description Mints a short-lived `X-Capability-Confirmation` token for one pending write. Confirmable write routes require BOTH `Idempotency-Key` and `X-Capability-Confirmation` when the credential holds the capability scope directly; API keys with legacy scopes are exempt. The token is bound to the workspace, auth subject, method, path, required scopes and idempotency key, and expires within 15 minutes. `user_approved: true` asserts that a human on the caller's side approved this exact action.\n */\n post: operations[\"issueCapabilityConfirmation\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/channels/connect-links\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List connect links\n * @description Link tokens are never returned. Newest first, cursor-paginated. The `channel_type` / `status` filters are applied within each page, so a page may hold fewer than `limit` items while `pagination.has_more` is still true — page off `has_more`, not the item count.\n */\n get: operations[\"listChannelConnectLinks\"];\n put?: never;\n /**\n * Mint a hosted connect link\n * @description Mints a single-use hosted connect link that lets an external person (no Medal account required) attach a channel account (e.g. `telegram_inbox`) to the workspace's helpdesk. The response's `data.url` contains the one-time link token EXACTLY ONCE — an idempotent replay (same `Idempotency-Key`) returns the link WITHOUT `url`. Requires the `channel.connect.manage` scope; OAuth callers additionally need the workspace `admin` role.\n */\n post: operations[\"createChannelConnectLink\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/channels/connect-links/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Revoke a connect link\n * @description Revokes a pending connect link so it can no longer be consumed. OAuth callers need the workspace `admin` role.\n */\n delete: operations[\"revokeChannelConnectLink\"];\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/channels/connections\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List channel connections\n * @description The workspace's channel connections in a generic, channel-agnostic shape. Newest first, cursor-paginated. Rows that are not projectable as connections are dropped within the page, so a page may hold fewer than `limit` items while `pagination.has_more` is still true — page off `has_more`, not the item count.\n */\n get: operations[\"listChannelConnections\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/channels/connections/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Disconnect a channel connection\n * @description Disconnects a connected channel account (best-effort platform logout, then local revoke). Emits a `helpdesk.channel_disconnected` webhook event with `reason: \"api_disconnect\"` if the account was previously connected. OAuth callers need the workspace `admin` role.\n */\n delete: operations[\"disconnectChannelConnection\"];\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/scan\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Queue a company/site scan\n * @description Queues an asynchronous scan. Provide exactly one of `url`, `orgnr`, or `name`; poll the returned id via `GET /api/v1/scan/{id}`.\n */\n post: operations[\"createScan\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/scan/companies\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** Search the Norwegian company registry */\n get: operations[\"searchScanCompanies\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/scan/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** Get a scan job */\n get: operations[\"getScan\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n}\nexport type webhooks = Record<string, never>;\nexport interface components {\n schemas: {\n ApiError: {\n error: {\n code: string;\n message: string;\n details?: unknown;\n };\n };\n Pagination: {\n has_more: boolean;\n next_cursor: string | null;\n };\n Success: {\n success: boolean;\n };\n PostCreateResult: {\n id: string;\n };\n Post: {\n id: string;\n type: components[\"schemas\"][\"PostType\"];\n title: string | null;\n content: string;\n status: string;\n channel_ids: string[];\n variant_count: number;\n published_count: number;\n failed_count: number;\n /** Format: date-time */\n scheduled_at: string | null;\n /** Format: date-time */\n published_at: string | null;\n /** Format: date-time */\n created_at: string | null;\n /** Format: date-time */\n updated_at: string | null;\n };\n /** @enum {string} */\n PostType: \"social\" | \"newsletter\" | \"blog\";\n PostVariant: {\n id: string;\n channel_id: string;\n content: string;\n status: string;\n platform: string | null;\n channel_display_name: string | null;\n /** Format: date-time */\n scheduled_at: string | null;\n /** Format: date-time */\n published_at: string | null;\n platform_post_id: string | null;\n /** Format: uri */\n permalink: string | null;\n error: string | null;\n };\n PostDetail: components[\"schemas\"][\"Post\"] & {\n variants: components[\"schemas\"][\"PostVariant\"][];\n };\n Channel: {\n id: string;\n platform: string | null;\n display_name: string | null;\n platform_username: string | null;\n state: string;\n /** Format: date-time */\n connected_at: string | null;\n };\n CreatePostInput: {\n type?: components[\"schemas\"][\"PostType\"];\n title?: string;\n content: string;\n channel_ids: string[];\n };\n UpdatePostInput: {\n title?: string;\n content?: string;\n };\n SchedulePostInput: {\n scheduled_at: number | string;\n };\n ScheduleResult: {\n success: boolean;\n workflow_id: string;\n };\n PublishResult: {\n success: boolean;\n workflow_id: string;\n };\n SendEmailInput: {\n template_slug: string;\n /** Format: email */\n to: string;\n name?: string;\n locale?: string;\n fallback_locale?: string;\n variables?: {\n [key: string]: string;\n };\n contact_id?: string;\n idempotency_key?: string;\n /** Format: email */\n copy_to?: string;\n /** Format: email */\n copy_reply_to?: string;\n };\n EmailSendResult: {\n /** @description Email send id — poll GET /api/v1/emails/{id} with it. */\n id: string | null;\n /** @description Send id of the copy_to copy, or null when no copy was requested. */\n copy_id: string | null;\n contact_id: string | null;\n status: string;\n };\n EmailSend: {\n id: string;\n status: string;\n /** Format: email */\n recipient_email: string;\n recipient_name: string | null;\n subject: string | null;\n template_id: string | null;\n contact_id: string | null;\n /** Format: date-time */\n queued_at: string | null;\n /** Format: date-time */\n sent_at: string | null;\n /** Format: date-time */\n delivered_at: string | null;\n /** Format: date-time */\n opened_at: string | null;\n /** Format: date-time */\n clicked_at: string | null;\n error_message: string | null;\n };\n BatchSendInput: {\n template_slug: string;\n default_locale?: string;\n recipients: {\n /** Format: email */\n email: string;\n name?: string;\n locale?: string;\n variables?: {\n [key: string]: string;\n };\n }[];\n };\n BatchSendSummary: {\n batch_id: string;\n total: number;\n queued: number;\n failed: number;\n /** @description Per-recipient outcome, in request order. */\n results: components[\"schemas\"][\"BatchSendRecipientResult\"][];\n };\n BatchSendRecipientResult: {\n /** Format: email */\n email: string;\n /** @description Email send id — poll GET /api/v1/emails/{id} with it. Null when not queued. */\n id: string | null;\n /** @enum {string} */\n status: \"queued\" | \"failed\";\n /** @description Failure reason for recipients that were not queued. */\n error: string | null;\n };\n EmailTemplate: {\n id: string;\n name: string;\n slug: string;\n type: string | null;\n subject: string | null;\n default_locale: string;\n available_locales: string[];\n description: string | null;\n category: string | null;\n label_ids: string[];\n is_active: boolean;\n is_archived: boolean;\n version: number;\n /** Format: date-time */\n created_at: string | null;\n /** Format: date-time */\n updated_at: string | null;\n };\n EmailTemplateDetail: components[\"schemas\"][\"EmailTemplate\"] & {\n html_content: string | null;\n text_content: string | null;\n preview_text: string | null;\n from_name: string | null;\n /** Format: email */\n from_email: string | null;\n /** Format: email */\n reply_to: string | null;\n requested_locale: string | null;\n resolved_locale: string;\n content_source: string;\n localizations: {\n locale: string | null;\n subject: string | null;\n html_content: string | null;\n text_content: string | null;\n preview_text: string | null;\n }[];\n };\n Contact: {\n id: string;\n /** Format: email */\n email: string;\n first_name: string | null;\n last_name: string | null;\n phone: string | null;\n company: string | null;\n job_title: string | null;\n address: {\n [key: string]: string;\n } | null;\n status: components[\"schemas\"][\"ContactStatus\"];\n email_status: components[\"schemas\"][\"EmailStatus\"];\n label_ids: string[];\n source: string | null;\n custom_fields: {\n [key: string]: unknown;\n } | null;\n /** Format: date-time */\n created_at: string | null;\n /** Format: date-time */\n updated_at: string | null;\n };\n ContactCreateResult: {\n id: string;\n };\n ContactUpdateResult: {\n /** @constant */\n success: true;\n };\n ContactRemoveResult: {\n /** @constant */\n success: true;\n };\n ContactNoteResult: {\n id: string;\n };\n /** @enum {string} */\n ContactStatus: \"lead\" | \"prospect\" | \"customer\" | \"churned\" | \"archived\";\n /** @enum {string} */\n EmailStatus: \"subscribed\" | \"unsubscribed\" | \"bounced\" | \"complained\";\n CreateContactInput: {\n /** Format: email */\n email: string;\n first_name?: string;\n last_name?: string;\n phone?: string;\n company?: string;\n job_title?: string;\n address?: {\n [key: string]: string;\n };\n status?: components[\"schemas\"][\"ContactStatus\"];\n email_status?: components[\"schemas\"][\"EmailStatus\"];\n label_ids?: string[];\n labels?: string[];\n custom_fields?: {\n [key: string]: unknown;\n };\n notes?: string | components[\"schemas\"][\"ContactNoteInput\"];\n };\n UpdateContactInput: {\n /** Format: email */\n email?: string;\n first_name?: string;\n last_name?: string;\n phone?: string;\n company?: string;\n job_title?: string;\n status?: components[\"schemas\"][\"ContactStatus\"];\n email_status?: components[\"schemas\"][\"EmailStatus\"];\n label_ids?: string[];\n labels?: string[];\n custom_fields?: {\n [key: string]: unknown;\n };\n };\n ContactNoteInput: {\n content: string;\n attachments?: {\n /** Format: uri */\n url: string;\n name: string;\n type?: string;\n size?: number;\n }[];\n };\n ImportContactInput: {\n /** Format: email */\n email: string;\n first_name?: string;\n last_name?: string;\n phone?: string;\n company?: string;\n job_title?: string;\n label_ids?: string[];\n status?: string;\n };\n ImportContactsResult: {\n added: number;\n skipped: number;\n total: number;\n };\n Activity: {\n id: string;\n type: string;\n title: string | null;\n content: string | null;\n actor_name: string | null;\n actor_type: string | null;\n metadata: unknown;\n /** Format: date-time */\n created_at: string | null;\n };\n AddNoteInput: {\n content: string;\n };\n Deal: {\n id: string;\n title: string;\n description: string | null;\n value: number | null;\n currency: string | null;\n status: components[\"schemas\"][\"DealStatus\"];\n brand_name: string | null;\n /** Format: uri */\n brand_website: string | null;\n contact_id: string | null;\n contact_name: string | null;\n /** Format: email */\n contact_email: string | null;\n /** Format: date */\n start_date: string | null;\n /** Format: date */\n end_date: string | null;\n notes: string | null;\n /** Format: date-time */\n created_at: string | null;\n /** Format: date-time */\n updated_at: string | null;\n };\n DealCreateResult: {\n id: string;\n };\n DealUpdateResult: {\n /** @constant */\n success: true;\n };\n DealRemoveResult: {\n /** @constant */\n success: true;\n };\n /** @enum {string} */\n DealStatus:\n | \"draft\"\n | \"open\"\n | \"won\"\n | \"lost\"\n | \"negotiating\"\n | \"proposal_sent\"\n | \"on_hold\"\n | \"churned\";\n CreateDealInput: {\n title: string;\n description?: string;\n value?: number;\n currency?: string;\n brand_name?: string;\n /** Format: uri */\n brand_website?: string;\n contact_id?: string;\n contact_name?: string;\n /** Format: email */\n contact_email?: string;\n /** Format: date */\n start_date?: string;\n /** Format: date */\n end_date?: string;\n notes?: string;\n };\n UpdateDealInput: {\n title?: string;\n description?: string;\n value?: number;\n currency?: string;\n status?: components[\"schemas\"][\"DealStatus\"];\n brand_name?: string;\n /** Format: uri */\n brand_website?: string;\n contact_id?: string | null;\n contact_name?: string;\n /** Format: email */\n contact_email?: string;\n /** Format: date */\n start_date?: string;\n /** Format: date */\n end_date?: string;\n notes?: string;\n };\n /** @description A timestamp on the way in — Unix milliseconds, or an ISO 8601 date-time string. Responses always render timestamps as ISO 8601. */\n BookingTimestampInput: number | string;\n /** @enum {string} */\n BookingStatus: \"pending\" | \"confirmed\" | \"completed\" | \"cancelled\" | \"no_show\";\n /**\n * @description Who cancelled. `staff` for the id-addressed cancel, `customer` for the manage-token cancel, `system` for an automated one.\n * @enum {string}\n */\n BookingCancelledBy: \"customer\" | \"staff\" | \"system\";\n /** @enum {string} */\n BookingPaymentStatus: \"none\" | \"reserved\" | \"captured\" | \"refunded\";\n /** @enum {string} */\n BookingCreatedVia: \"web\" | \"dashboard\" | \"walk_in\" | \"api\";\n /** @enum {string} */\n BookingResourceType: \"staff\" | \"room\" | \"equipment\";\n Booking: {\n id: string;\n contact_id: string | null;\n service_id: string | null;\n resource_id: string | null;\n /** Format: date-time */\n start_ts: string | null;\n /** Format: date-time */\n end_ts: string | null;\n booked_for_name: string | null;\n /** @description A birth year, not a birthdate — the age bracket is all that is stored. */\n booked_for_birth_year: number | null;\n /** @description Shared by every booking created in the same party request. */\n party_sequence_id: string | null;\n status: components[\"schemas\"][\"BookingStatus\"];\n cancelled_by: components[\"schemas\"][\"BookingCancelledBy\"] | null;\n cancel_reason: string | null;\n /** @description On a booking created by a reschedule, the booking it replaced. */\n rescheduled_from_id: string | null;\n payment_status: components[\"schemas\"][\"BookingPaymentStatus\"];\n /** @description Price in integer øre. Never a float and never kroner. */\n amount_ore: number | null;\n /** @description Customer-visible note. */\n notes: string | null;\n /** @description Staff-only note; never shown to the customer. */\n internal_notes: string | null;\n created_via: components[\"schemas\"][\"BookingCreatedVia\"] | null;\n /** Format: date-time */\n created_at: string | null;\n /** Format: date-time */\n updated_at: string | null;\n };\n BookingService: {\n id: string;\n name: string | null;\n description: string | null;\n category: string | null;\n duration_minutes: number | null;\n buffer_before_minutes: number | null;\n buffer_after_minutes: number | null;\n /** @description Price in integer øre. */\n price_ore: number | null;\n weekend_surcharge_pct: number | null;\n /** @description Resource types this service needs, e.g. `[\"staff\"]`. */\n resource_requirements: string[];\n bookable_online: boolean;\n max_per_booking: number | null;\n color: string | null;\n sort_order: number | null;\n active: boolean;\n /** Format: date-time */\n created_at: string | null;\n /** Format: date-time */\n updated_at: string | null;\n };\n BookingResource: {\n id: string;\n type: components[\"schemas\"][\"BookingResourceType\"] | null;\n name: string | null;\n /** Format: uri */\n photo_url: string | null;\n bio: string | null;\n /** @description Services this resource can perform. */\n service_ids: string[];\n capacity: number | null;\n sort_order: number | null;\n active: boolean;\n /** Format: date-time */\n created_at: string | null;\n /** Format: date-time */\n updated_at: string | null;\n };\n BookingSlot: {\n /** Format: date-time */\n start_ts: string | null;\n /** Format: date-time */\n end_ts: string | null;\n resource_id: string | null;\n };\n /** @description One date a service can be booked on. `date` is the workspace's own calendar date, not a timestamp. */\n BookingScheduleDay: {\n /** Format: date */\n date: string | null;\n /** Format: date-time */\n opens_ts: string | null;\n /** Format: date-time */\n closes_ts: string | null;\n /**\n * Format: date-time\n * @description Last start this service could occupy on the date; `null` when the date is shut outright.\n */\n last_start_ts: string | null;\n };\n /** @description The person the booking is made under. Phone is the CRM dedupe key. */\n BookingContactInput: {\n phone: string;\n email?: string;\n name?: string;\n };\n /** @description One line of a party — a single service on a single slot. */\n CreateBookingItemInput: {\n service_id: string;\n /** @description Omit to let the engine pick a free resource. */\n resource_id?: string;\n start_ts: components[\"schemas\"][\"BookingTimestampInput\"];\n booked_for_name?: string;\n booked_for_birth_year?: number;\n };\n CreateBookingInput: {\n /** @description A PARTY — one request books a whole family in one all-or-nothing transaction. */\n items: components[\"schemas\"][\"CreateBookingItemInput\"][];\n contact: components[\"schemas\"][\"BookingContactInput\"];\n notes?: string;\n /**\n * @description Where the booking came from. Defaults to `api`. A workspace's OWN website should send `web`, so its bookings can be told apart from integrations. `dashboard` and `walk_in` are staff-only and are rejected with 400 — a bearer token proves which workspace is calling, not that a member typed the booking in.\n * @enum {string}\n */\n created_via?: \"web\" | \"api\";\n };\n CreatedBooking: {\n id: string;\n /** @description Show-once secret for the customer's manage link. Only its hash is stored, and an idempotent replay omits this field entirely. */\n manage_token?: string;\n };\n BookingCreateResult: {\n /** @description One entry per created booking, in request order. */\n bookings: components[\"schemas\"][\"CreatedBooking\"][];\n contact_id: string;\n };\n BookingActionResult: {\n /** @constant */\n success: true;\n };\n BookingRescheduleResult: {\n /** @constant */\n success: true;\n /** @description The NEW booking's id — a reschedule cancels the old row and inserts a new one. */\n booking_id: string;\n /** @description Freshly minted manage token for the new booking; omitted on an idempotent replay. */\n manage_token?: string;\n };\n /** @description What the holder of a manage token may see and do. `can_cancel` and `can_reschedule` already apply the workspace's policy windows. */\n ManageSummary: {\n booking_id: string;\n contact_id: string | null;\n status: components[\"schemas\"][\"BookingStatus\"] | null;\n cancelled_by: components[\"schemas\"][\"BookingCancelledBy\"] | null;\n cancel_reason: string | null;\n rescheduled_from_id: string | null;\n /** Format: date-time */\n start_ts: string | null;\n /** Format: date-time */\n end_ts: string | null;\n service_id: string | null;\n service_name: string | null;\n resource_id: string | null;\n resource_name: string | null;\n booked_for_name: string | null;\n party_sequence_id: string | null;\n /** @description Price in integer øre. */\n amount_ore: number | null;\n payment_status: components[\"schemas\"][\"BookingPaymentStatus\"] | null;\n /** @description IANA zone the booking's local times should be rendered in. */\n time_zone: string | null;\n cancel_window_hours: number | null;\n reschedule_window_hours: number | null;\n can_cancel: boolean;\n can_reschedule: boolean;\n };\n /** @description At least one of `notes` or `internal_notes` is required — the API rejects a body carrying neither with a 400. `\"\"` is a meaningful value that clears the field, so the constraint is on presence. */\n UpdateBookingInput:\n | {\n /** @description Customer-visible note. */\n notes: string;\n /** @description Staff-only note. */\n internal_notes?: string;\n }\n | {\n /** @description Customer-visible note. */\n notes?: string;\n /** @description Staff-only note. */\n internal_notes: string;\n };\n CancelBookingInput: {\n reason?: string;\n };\n RescheduleBookingInput: {\n new_start_ts: components[\"schemas\"][\"BookingTimestampInput\"];\n new_resource_id?: string;\n };\n /** @description Pagination for a bookings page. `truncated` is the extra statement: the underlying read is capped, and when the cap binds there are matching bookings no cursor from this call reaches — narrow the window. */\n BookingsPagination: {\n has_more: boolean;\n next_cursor: string | null;\n truncated: boolean;\n };\n GdprExport: {\n id: string;\n request_type: string;\n status: string;\n /** Format: date-time */\n submitted_at: string | null;\n /** Format: date-time */\n completed_at: string | null;\n /** Format: date-time */\n due_date?: string | null;\n /** Format: uri */\n download_url?: string | null;\n /** Format: date-time */\n expires_at?: string | null;\n };\n GdprExportRequest: {\n request_id: string;\n status: string;\n };\n /** @enum {string} */\n ConsentType: \"marketing_email\" | \"analytics_tracking\" | \"third_party_sharing\";\n RecordConsentInput: {\n /** Format: email */\n email: string;\n consent_type: components[\"schemas\"][\"ConsentType\"];\n granted: boolean;\n source?: string;\n ip_address?: string;\n consent_text?: string;\n version?: string;\n };\n ConsentRecord: {\n id: string;\n /** Format: email */\n email: string;\n consent_type: components[\"schemas\"][\"ConsentType\"];\n granted: boolean;\n /** Format: date-time */\n granted_at: string | null;\n /** Format: date-time */\n revoked_at: string | null;\n source?: string;\n version?: string;\n };\n ConsentResult: {\n id: string;\n };\n CookieConsentInput: {\n domain: string;\n consentStatus: string;\n /** Format: date-time */\n consentTimestamp: string;\n ipAddress?: string;\n userAgent?: string;\n cookiePreferences: {\n [key: string]: components[\"schemas\"][\"CookieCategoryConsent\"];\n };\n };\n CookieCategoryConsent: {\n allowed: boolean;\n cookieRecords?: {\n cookie: string;\n duration: string;\n description: string;\n }[];\n };\n CookieConsentResult: {\n success: boolean;\n logId?: string;\n };\n Workspace: {\n id: string;\n name: string;\n slug: string;\n } & {\n [key: string]: unknown;\n };\n /** @enum {string} */\n HelpdeskConversationStatus: \"open\" | \"snoozed\" | \"closed\";\n /** @enum {string} */\n HelpdeskMessageAuthorType: \"visitor\" | \"operator\" | \"ai\" | \"system\";\n /**\n * @description `note` is operator-internal and never delivered to the customer.\n * @enum {string}\n */\n HelpdeskMessageType: \"chat\" | \"email\" | \"note\";\n HelpdeskConversation: {\n id: string;\n /** @description Channel type, e.g. `widget`, `instagram`, `messenger`, `whatsapp`, `email`. */\n channel: string;\n channel_connection_id: string | null;\n status: components[\"schemas\"][\"HelpdeskConversationStatus\"];\n subject: string | null;\n assignee_user_id: string | null;\n contact_id: string | null;\n visitor_name: string | null;\n visitor_email: string | null;\n external_conversation_id: string | null;\n channel_account_id: string | null;\n message_count: number;\n unread_for_operator: number;\n /** @description Unix timestamp in milliseconds. */\n last_message_at: number;\n last_message_preview: string | null;\n last_message_author_type: components[\"schemas\"][\"HelpdeskMessageAuthorType\"] | null;\n /** @description Unix timestamp in milliseconds. */\n created_at: number;\n /** @description Unix timestamp in milliseconds. */\n updated_at: number;\n };\n HelpdeskMessage: {\n id: string;\n conversation_id: string;\n author_type: components[\"schemas\"][\"HelpdeskMessageAuthorType\"];\n message_type: components[\"schemas\"][\"HelpdeskMessageType\"];\n author_user_id: string | null;\n author_name: string | null;\n body: string;\n /** @description Outbound delivery state, or `null` for inbound messages and internal notes. A `201` from `POST /api/v1/helpdesk/replies` means the reply was accepted, NOT delivered — the channel hand-off is asynchronous, so poll this field (or subscribe to `helpdesk.message_delivery_updated`) to learn the outcome. */\n delivery_status: components[\"schemas\"][\"HelpdeskMessageDeliveryStatus\"] | null;\n /** @description Last send error for a `failed` outbound message, otherwise `null`. */\n delivery_error: string | null;\n /** @description Unix timestamp in milliseconds. */\n created_at: number;\n };\n /** @enum {string} */\n HelpdeskMessageDeliveryStatus: \"pending\" | \"sent\" | \"delivered\" | \"failed\";\n /** @description At least one field is required. */\n UpdateHelpdeskConversationInput: {\n status?: components[\"schemas\"][\"HelpdeskConversationStatus\"];\n /** @description User ID to assign, or `null` to unassign. */\n assignee_user_id?: string | null;\n };\n HelpdeskConversationUpdateResult: {\n id: string;\n status: components[\"schemas\"][\"HelpdeskConversationStatus\"];\n assignee_user_id: string | null;\n };\n CreateHelpdeskReplyInput: {\n conversation_id: string;\n body: string;\n /**\n * @description `note` = operator-internal note (not delivered to the customer). Default `chat`.\n * @enum {string}\n */\n message_type?: \"chat\" | \"note\";\n /** @description Agent display name for bridged replies (shown in widget + inbox). */\n author_name?: string;\n };\n HelpdeskReplyCreateResult: {\n id: string;\n conversation_id: string;\n /** @constant */\n status: \"created\";\n };\n WebhookEndpoint: {\n id: string;\n name: string;\n /**\n * Format: uri\n * @description Destination URL (must be https).\n */\n url: string;\n enabled: boolean;\n /** @description Subscribed event types. Empty array = all events. */\n event_types: string[];\n /** @description Channel-type filter (e.g. `['widget', 'whatsapp']`), or `null` for all channels. */\n channels: string[] | null;\n /** @description Channel-connection filter, or `null` for all connections. */\n channel_connection_ids: string[] | null;\n /** @description Last 4 characters of the signing secret, for identification. */\n secret_last4: string;\n consecutive_failures: number;\n /** @description Unix timestamp in milliseconds, or `null` if never. */\n last_delivery_at: number | null;\n /** @description Unix timestamp in milliseconds, or `null` if never. */\n last_success_at: number | null;\n /** @description Unix timestamp in milliseconds, or `null` if never. */\n last_error_at: number | null;\n last_error: string | null;\n /** @description Unix timestamp in milliseconds. */\n created_at: number;\n /** @description Unix timestamp in milliseconds. */\n updated_at: number;\n /** @description Full signing secret (`whsec_…`) — present ONLY in the create response, exactly once. It can never be retrieved again; store it securely immediately. An idempotent replay of the create request omits it. */\n secret?: string;\n };\n CreateWebhookInput: {\n name: string;\n /**\n * Format: uri\n * @description Destination URL — must be https.\n */\n url: string;\n /** @description Event types to subscribe to (e.g. `helpdesk.message_received`). Empty = all. */\n event_types: string[];\n /** @description Restrict to these channel types (e.g. `['widget', 'whatsapp']`). */\n channels?: string[];\n /** @description Restrict to these channel connection IDs. */\n channel_connection_ids?: string[];\n };\n /** @description Only provided fields change. */\n UpdateWebhookInput: {\n name?: string;\n /** Format: uri */\n url?: string;\n event_types?: string[];\n /** @description New channel-type filter, or `null` to clear the filter. */\n channels?: string[] | null;\n /** @description New channel-connection filter, or `null` to clear the filter. */\n channel_connection_ids?: string[] | null;\n enabled?: boolean;\n };\n WebhookDeleteResult: {\n id: string;\n /** @constant */\n status: \"deleted\";\n };\n /** @description A delivery attempt record. `id` is the same value sent as the `X-Medal-Delivery-Id` and `Idempotency-Key` headers on the outbound request. Deliveries never carry payload bodies (payloads can contain customer PII). The correlation fields are derived from the stored event and fail closed to `null` when no canonical event exists — e.g. `test.ping` deliveries or events that have aged out of retention. */\n WebhookDelivery: {\n id: string;\n event_type: string;\n /** @description Primary subject id of the announced event, or `null`. */\n resource_id: string | null;\n conversation_id: string | null;\n message_id: string | null;\n connection_ref: string | null;\n channel: string | null;\n channel_connection_id: string | null;\n /** @enum {string} */\n status: \"pending\" | \"delivered\" | \"dead_letter\";\n attempt_count: number;\n /** @description Unix timestamp in milliseconds of the next retry, or `null`. */\n next_attempt_at: number | null;\n response_status: number | null;\n duration_ms: number | null;\n last_error: string | null;\n /** @description Unix timestamp in milliseconds, or `null` if not delivered. */\n delivered_at: number | null;\n /** @description Unix timestamp in milliseconds. */\n created_at: number;\n };\n WebhookTestResult: {\n delivery_id: string;\n /** @constant */\n status: \"queued\";\n };\n /** @enum {string} */\n ConnectLinkStatus: \"pending\" | \"consumed\" | \"expired\" | \"revoked\";\n /** @enum {string} */\n ChannelConnectionState: \"connecting\" | \"active\" | \"disconnected\" | \"disabled\";\n CreateConnectLinkInput: {\n /** @description Channel type to connect (e.g. `telegram_inbox`). */\n channel_type: string;\n /** @description Display label shown on the hosted connect page. */\n label?: string;\n /**\n * Format: uri\n * @description URL the hosted page redirects to after a successful connect — must be https.\n */\n redirect_url?: string;\n };\n ConnectLinkCreateResult: {\n id: string;\n /**\n * Format: uri\n * @description Single-use hosted connect URL containing the one-time link token — present ONLY in the live create response. An idempotent replay of the create request omits it; the token can never be retrieved again.\n */\n url?: string;\n channel_type: string;\n label: string | null;\n status: components[\"schemas\"][\"ConnectLinkStatus\"];\n /** @description Unix timestamp in milliseconds. */\n expires_at: number;\n };\n ConnectLink: {\n id: string;\n channel_type: string;\n label: string | null;\n status: components[\"schemas\"][\"ConnectLinkStatus\"];\n /** @description Stable ref of the connection created by consuming this link, or `null`. */\n consumed_connection_ref: string | null;\n /** @description Unix timestamp in milliseconds. */\n expires_at: number;\n /** @description Unix timestamp in milliseconds. */\n created_at: number;\n };\n ConnectLinkRevokeResult: {\n id: string;\n /** @constant */\n status: \"revoked\";\n };\n ChannelConnection: {\n id: string;\n channel_type: string;\n label: string | null;\n state: components[\"schemas\"][\"ChannelConnectionState\"];\n /** @description Privacy-preserving identity handle (e.g. a masked phone number). */\n masked_identity: string;\n /** @description Unix timestamp in milliseconds, or `null` if never active. */\n last_activity_at: number | null;\n /** @description Linked helpdesk channel connection ID, or `null`. */\n helpdesk_connection_id: string | null;\n };\n ChannelConnectionDisconnectResult: {\n id: string;\n /** @constant */\n state: \"disconnected\";\n };\n ApiResponse_PostCreateResult: components[\"schemas\"][\"Envelope_PostCreateResult\"];\n ApiResponse_PostDetail: components[\"schemas\"][\"Envelope_PostDetail\"];\n ApiResponse_Success: components[\"schemas\"][\"Envelope_Success\"];\n ApiResponse_ScheduleResult: components[\"schemas\"][\"Envelope_ScheduleResult\"];\n ApiResponse_PublishResult: components[\"schemas\"][\"Envelope_PublishResult\"];\n ApiResponse_ChannelArray: components[\"schemas\"][\"Envelope_ChannelArray\"];\n ApiResponse_EmailSendResult: components[\"schemas\"][\"Envelope_EmailSendResult\"];\n ApiResponse_EmailSend: components[\"schemas\"][\"Envelope_EmailSend\"];\n ApiResponse_BatchSendSummary: components[\"schemas\"][\"Envelope_BatchSendSummary\"];\n ApiResponse_EmailTemplateArray: components[\"schemas\"][\"Envelope_EmailTemplateArray\"];\n ApiResponse_EmailTemplateDetail: components[\"schemas\"][\"Envelope_EmailTemplateDetail\"];\n ApiResponse_Contact: components[\"schemas\"][\"Envelope_Contact\"];\n ApiResponse_ContactCreateResult: components[\"schemas\"][\"Envelope_ContactCreateResult\"];\n ApiResponse_ContactUpdateResult: components[\"schemas\"][\"Envelope_ContactUpdateResult\"];\n ApiResponse_ContactRemoveResult: components[\"schemas\"][\"Envelope_ContactRemoveResult\"];\n ApiResponse_ContactNoteResult: components[\"schemas\"][\"Envelope_ContactNoteResult\"];\n ApiResponse_ImportContactsResult: components[\"schemas\"][\"Envelope_ImportContactsResult\"];\n ApiResponse_Deal: components[\"schemas\"][\"Envelope_Deal\"];\n ApiResponse_DealCreateResult: components[\"schemas\"][\"Envelope_DealCreateResult\"];\n ApiResponse_DealUpdateResult: components[\"schemas\"][\"Envelope_DealUpdateResult\"];\n ApiResponse_DealRemoveResult: components[\"schemas\"][\"Envelope_DealRemoveResult\"];\n ApiResponse_Booking: components[\"schemas\"][\"Envelope_Booking\"];\n ApiResponse_BookingServiceArray: components[\"schemas\"][\"Envelope_BookingServiceArray\"];\n ApiResponse_BookingResourceArray: components[\"schemas\"][\"Envelope_BookingResourceArray\"];\n ApiResponse_BookingSlotArray: components[\"schemas\"][\"Envelope_BookingSlotArray\"];\n ApiResponse_BookingScheduleDayArray: components[\"schemas\"][\"Envelope_BookingScheduleDayArray\"];\n ApiResponse_BookingCreateResult: components[\"schemas\"][\"Envelope_BookingCreateResult\"];\n ApiResponse_BookingActionResult: components[\"schemas\"][\"Envelope_BookingActionResult\"];\n ApiResponse_BookingRescheduleResult: components[\"schemas\"][\"Envelope_BookingRescheduleResult\"];\n ApiResponse_ManageSummary: components[\"schemas\"][\"Envelope_ManageSummary\"];\n ApiResponse_GdprExportRequest: components[\"schemas\"][\"Envelope_GdprExportRequest\"];\n ApiResponse_GdprExportArray: components[\"schemas\"][\"Envelope_GdprExportArray\"];\n ApiResponse_GdprExport: components[\"schemas\"][\"Envelope_GdprExport\"];\n ApiResponse_ScanCreateResult: components[\"schemas\"][\"Envelope_ScanCreateResult\"];\n ApiResponse_ScanCompanyArray: components[\"schemas\"][\"Envelope_ScanCompanyArray\"];\n ApiResponse_ScanJob: components[\"schemas\"][\"Envelope_ScanJob\"];\n ApiResponse_ConsentResult: components[\"schemas\"][\"Envelope_ConsentResult\"];\n ApiResponse_ConsentRecordArray: components[\"schemas\"][\"Envelope_ConsentRecordArray\"];\n ApiResponse_WorkspaceArray: components[\"schemas\"][\"Envelope_WorkspaceArray\"];\n ApiResponse_HelpdeskConversation: components[\"schemas\"][\"Envelope_HelpdeskConversation\"];\n ApiResponse_HelpdeskConversationUpdateResult: components[\"schemas\"][\"Envelope_HelpdeskConversationUpdateResult\"];\n ApiResponse_HelpdeskReplyCreateResult: components[\"schemas\"][\"Envelope_HelpdeskReplyCreateResult\"];\n ApiResponse_WebhookEndpoint: components[\"schemas\"][\"Envelope_WebhookEndpoint\"];\n ApiResponse_WebhookEndpointArray: components[\"schemas\"][\"Envelope_WebhookEndpointArray\"];\n ApiResponse_WebhookDeleteResult: components[\"schemas\"][\"Envelope_WebhookDeleteResult\"];\n ApiResponse_WebhookDeliveryArray: components[\"schemas\"][\"Envelope_WebhookDeliveryArray\"];\n ApiResponse_WebhookTestResult: components[\"schemas\"][\"Envelope_WebhookTestResult\"];\n ApiResponse_ConnectLinkCreateResult: components[\"schemas\"][\"Envelope_ConnectLinkCreateResult\"];\n ApiResponse_ConnectLinkArray: components[\"schemas\"][\"Envelope_ConnectLinkArray\"];\n ApiResponse_ConnectLinkRevokeResult: components[\"schemas\"][\"Envelope_ConnectLinkRevokeResult\"];\n ApiResponse_ChannelConnectionArray: components[\"schemas\"][\"Envelope_ChannelConnectionArray\"];\n ApiResponse_ChannelConnectionDisconnectResult: components[\"schemas\"][\"Envelope_ChannelConnectionDisconnectResult\"];\n PaginatedResponse_Post: {\n data: components[\"schemas\"][\"Post\"][];\n pagination: components[\"schemas\"][\"Pagination\"];\n };\n PaginatedResponse_Contact: {\n data: components[\"schemas\"][\"Contact\"][];\n pagination: components[\"schemas\"][\"Pagination\"];\n };\n PaginatedResponse_Activity: {\n data: components[\"schemas\"][\"Activity\"][];\n pagination: components[\"schemas\"][\"Pagination\"];\n };\n PaginatedResponse_Deal: {\n data: components[\"schemas\"][\"Deal\"][];\n pagination: components[\"schemas\"][\"Pagination\"];\n };\n PaginatedResponse_Booking: {\n data: components[\"schemas\"][\"Booking\"][];\n pagination: components[\"schemas\"][\"BookingsPagination\"];\n };\n PaginatedResponse_HelpdeskConversation: {\n data: components[\"schemas\"][\"HelpdeskConversation\"][];\n pagination: components[\"schemas\"][\"Pagination\"];\n };\n PaginatedResponse_HelpdeskMessage: {\n data: components[\"schemas\"][\"HelpdeskMessage\"][];\n pagination: components[\"schemas\"][\"Pagination\"];\n };\n PaginatedResponse_ConnectLink: {\n data: components[\"schemas\"][\"ConnectLink\"][];\n pagination: components[\"schemas\"][\"Pagination\"];\n };\n PaginatedResponse_ChannelConnection: {\n data: components[\"schemas\"][\"ChannelConnection\"][];\n pagination: components[\"schemas\"][\"Pagination\"];\n };\n Envelope_PostCreateResult: {\n data: components[\"schemas\"][\"PostCreateResult\"];\n };\n Envelope_PostDetail: {\n data: components[\"schemas\"][\"PostDetail\"];\n };\n Envelope_Success: {\n data: components[\"schemas\"][\"Success\"];\n };\n Envelope_ScheduleResult: {\n data: components[\"schemas\"][\"ScheduleResult\"];\n };\n Envelope_PublishResult: {\n data: components[\"schemas\"][\"PublishResult\"];\n };\n Envelope_ChannelArray: {\n data: components[\"schemas\"][\"Channel\"][];\n };\n Envelope_EmailSendResult: {\n data: components[\"schemas\"][\"EmailSendResult\"];\n };\n Envelope_EmailSend: {\n data: components[\"schemas\"][\"EmailSend\"];\n };\n Envelope_BatchSendSummary: {\n data: components[\"schemas\"][\"BatchSendSummary\"];\n };\n Envelope_EmailTemplateArray: {\n data: components[\"schemas\"][\"EmailTemplate\"][];\n };\n Envelope_EmailTemplateDetail: {\n data: components[\"schemas\"][\"EmailTemplateDetail\"];\n };\n Envelope_Contact: {\n data: components[\"schemas\"][\"Contact\"];\n };\n Envelope_ContactCreateResult: {\n data: components[\"schemas\"][\"ContactCreateResult\"];\n };\n Envelope_ContactUpdateResult: {\n data: components[\"schemas\"][\"ContactUpdateResult\"];\n };\n Envelope_ContactRemoveResult: {\n data: components[\"schemas\"][\"ContactRemoveResult\"];\n };\n Envelope_ContactNoteResult: {\n data: components[\"schemas\"][\"ContactNoteResult\"];\n };\n Envelope_ImportContactsResult: {\n data: components[\"schemas\"][\"ImportContactsResult\"];\n };\n Envelope_Deal: {\n data: components[\"schemas\"][\"Deal\"];\n };\n Envelope_DealCreateResult: {\n data: components[\"schemas\"][\"DealCreateResult\"];\n };\n Envelope_DealUpdateResult: {\n data: components[\"schemas\"][\"DealUpdateResult\"];\n };\n Envelope_DealRemoveResult: {\n data: components[\"schemas\"][\"DealRemoveResult\"];\n };\n Envelope_Booking: {\n data: components[\"schemas\"][\"Booking\"];\n };\n Envelope_BookingServiceArray: {\n data: components[\"schemas\"][\"BookingService\"][];\n };\n Envelope_BookingResourceArray: {\n data: components[\"schemas\"][\"BookingResource\"][];\n };\n Envelope_BookingSlotArray: {\n data: components[\"schemas\"][\"BookingSlot\"][];\n };\n Envelope_BookingScheduleDayArray: {\n data: components[\"schemas\"][\"BookingScheduleDay\"][];\n };\n Envelope_BookingCreateResult: {\n data: components[\"schemas\"][\"BookingCreateResult\"];\n };\n Envelope_BookingActionResult: {\n data: components[\"schemas\"][\"BookingActionResult\"];\n };\n Envelope_BookingRescheduleResult: {\n data: components[\"schemas\"][\"BookingRescheduleResult\"];\n };\n Envelope_ManageSummary: {\n data: components[\"schemas\"][\"ManageSummary\"];\n };\n /** @description Provide exactly one of `url`, `orgnr`, or `name`. */\n ScanCreateInput: {\n url?: string;\n orgnr?: string;\n name?: string;\n } & (unknown | unknown | unknown);\n ScanCreateResult: {\n id: string;\n status: string;\n message?: string;\n };\n ScanCompany: {\n orgnr: string;\n name: string;\n org_form: string | null;\n industry: string | null;\n city: string | null;\n website: string | null;\n };\n ScanJob: {\n id: string;\n /** @description pending | running | done | failed */\n status: string;\n input: components[\"schemas\"][\"ScanCreateInput\"];\n resolved: {\n orgnr?: string;\n companyName?: string;\n websiteUrl?: string;\n } | null;\n /** @description Versioned findings payload (see the SDK `ScanResultPayload` type); additive per `version`. The stable core is documented below; further sections (registry, signals, pagespeed, seo, ai, gdpr, mailAuth, httpsOk) evolve additively. */\n result:\n | ({\n version: number;\n /** @description Weighted composite score (0-100); null when unmeasurable. */\n nettskaar: number | null;\n /** @description Per-axis 0-100 scores; null axes were unmeasurable. */\n subScores: {\n fart: number | null;\n google: number | null;\n ai: number | null;\n trygghet: number | null;\n omdomme: number | null;\n };\n } & {\n [key: string]: unknown;\n })\n | null;\n /** @description Public-safe failure code (company_not_found, no_website, …). */\n error: string | null;\n /** Format: date-time */\n created_at: string | null;\n /** Format: date-time */\n finished_at: string | null;\n };\n Envelope_ScanCreateResult: {\n data: components[\"schemas\"][\"ScanCreateResult\"];\n };\n Envelope_ScanCompanyArray: {\n data: components[\"schemas\"][\"ScanCompany\"][];\n };\n Envelope_ScanJob: {\n data: components[\"schemas\"][\"ScanJob\"];\n };\n Envelope_GdprExportRequest: {\n data: components[\"schemas\"][\"GdprExportRequest\"];\n };\n Envelope_GdprExportArray: {\n data: components[\"schemas\"][\"GdprExport\"][];\n };\n Envelope_GdprExport: {\n data: components[\"schemas\"][\"GdprExport\"];\n };\n Envelope_ConsentResult: {\n data: components[\"schemas\"][\"ConsentResult\"];\n };\n Envelope_ConsentRecordArray: {\n data: components[\"schemas\"][\"ConsentRecord\"][];\n };\n Envelope_WorkspaceArray: {\n data: components[\"schemas\"][\"Workspace\"][];\n };\n Envelope_HelpdeskConversation: {\n data: components[\"schemas\"][\"HelpdeskConversation\"];\n };\n Envelope_HelpdeskConversationUpdateResult: {\n data: components[\"schemas\"][\"HelpdeskConversationUpdateResult\"];\n };\n Envelope_HelpdeskReplyCreateResult: {\n data: components[\"schemas\"][\"HelpdeskReplyCreateResult\"];\n };\n Envelope_WebhookEndpoint: {\n data: components[\"schemas\"][\"WebhookEndpoint\"];\n };\n Envelope_WebhookEndpointArray: {\n data: components[\"schemas\"][\"WebhookEndpoint\"][];\n };\n Envelope_WebhookDeleteResult: {\n data: components[\"schemas\"][\"WebhookDeleteResult\"];\n };\n IssueCapabilityConfirmationInput: {\n /** @description Confirmable capability to mint a token for. */\n capability_id: string;\n /** @description Concrete `/api/v1/...` path to bind the token to. Optional when the capability has exactly one API target; required when it has several. */\n api_path?: string;\n /** @description Values for the capability path template's parameters. */\n path_params?: {\n [key: string]: string | number | boolean;\n };\n /** @description The exact `Idempotency-Key` the confirmed write will send. The token is bound to it. */\n idempotency_key?: string;\n /** @description Human-readable description of the approved action, retained for audit. */\n preview_summary: string;\n /**\n * @description Asserts that a human on the caller's side approved this specific action.\n * @constant\n */\n user_approved: true;\n };\n CapabilityConfirmation: {\n /** @description Send as the `X-Capability-Confirmation` header on the write. */\n confirmation_token: string;\n /** @constant */\n token_type: \"medal_capability_confirmation\";\n capability_id: string;\n method: string;\n path: string;\n required_scopes: string[];\n idempotency_key: string | null;\n expires_in: number;\n /** Format: date-time */\n expires_at: string;\n preview_summary: string;\n };\n ApiResponse_CapabilityConfirmation: components[\"schemas\"][\"Envelope_CapabilityConfirmation\"];\n Envelope_CapabilityConfirmation: {\n data: components[\"schemas\"][\"CapabilityConfirmation\"];\n };\n Envelope_WebhookDeliveryArray: {\n data: components[\"schemas\"][\"WebhookDelivery\"][];\n };\n Envelope_WebhookTestResult: {\n data: components[\"schemas\"][\"WebhookTestResult\"];\n };\n Envelope_ConnectLinkCreateResult: {\n data: components[\"schemas\"][\"ConnectLinkCreateResult\"];\n };\n /**\n * @deprecated\n * @description Deprecated — `listChannelConnectLinks` responds with `PaginatedResponse_ConnectLink`. Retained for backwards compatibility with consumers of the generated contract types.\n */\n Envelope_ConnectLinkArray: {\n data: components[\"schemas\"][\"ConnectLink\"][];\n };\n Envelope_ConnectLinkRevokeResult: {\n data: components[\"schemas\"][\"ConnectLinkRevokeResult\"];\n };\n /**\n * @deprecated\n * @description Deprecated — `listChannelConnections` responds with `PaginatedResponse_ChannelConnection`. Retained for backwards compatibility with consumers of the generated contract types.\n */\n Envelope_ChannelConnectionArray: {\n data: components[\"schemas\"][\"ChannelConnection\"][];\n };\n Envelope_ChannelConnectionDisconnectResult: {\n data: components[\"schemas\"][\"ChannelConnectionDisconnectResult\"];\n };\n };\n responses: {\n /** @description API error. */\n ApiError: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiError\"];\n };\n };\n };\n parameters: {\n Id: string;\n Slug: string;\n /** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */\n ManageToken: string;\n Cursor: string;\n Limit: number;\n };\n requestBodies: never;\n headers: never;\n pathItems: never;\n}\nexport type $defs = Record<string, never>;\nexport interface operations {\n listPosts: {\n parameters: {\n query?: {\n limit?: components[\"parameters\"][\"Limit\"];\n cursor?: components[\"parameters\"][\"Cursor\"];\n status?: string;\n type?: components[\"schemas\"][\"PostType\"];\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Posts page. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"PaginatedResponse_Post\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n createPost: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreatePostInput\"];\n };\n };\n responses: {\n /** @description Created post reference. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_PostCreateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listPostChannels: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Connected channels. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ChannelArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getPost: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Post detail. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_PostDetail\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n deletePost: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Delete result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_Success\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n updatePost: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdatePostInput\"];\n };\n };\n responses: {\n /** @description Update result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_Success\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n schedulePost: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"SchedulePostInput\"];\n };\n };\n responses: {\n /** @description Schedule result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ScheduleResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n publishPost: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Publish result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_PublishResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n sendEmail: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"SendEmailInput\"];\n };\n };\n responses: {\n /** @description Email queued. */\n 202: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_EmailSendResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n batchSendEmails: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"BatchSendInput\"];\n };\n };\n responses: {\n /** @description Batch queued. */\n 202: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BatchSendSummary\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listEmailTemplates: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Active templates. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_EmailTemplateArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getEmailTemplate: {\n parameters: {\n query?: {\n locale?: string;\n fallback_locale?: string;\n };\n header?: never;\n path: {\n slug: components[\"parameters\"][\"Slug\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Email template detail. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_EmailTemplateDetail\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getEmailSend: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Sent email status. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_EmailSend\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listContacts: {\n parameters: {\n query?: {\n limit?: components[\"parameters\"][\"Limit\"];\n cursor?: components[\"parameters\"][\"Cursor\"];\n status?: components[\"schemas\"][\"ContactStatus\"];\n email_status?: components[\"schemas\"][\"EmailStatus\"];\n /** @description Comma-separated label IDs. */\n label_ids?: string;\n search?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Contacts page. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"PaginatedResponse_Contact\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n createContact: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateContactInput\"];\n };\n };\n responses: {\n /** @description Created contact reference. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ContactCreateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n importContacts: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n contacts: components[\"schemas\"][\"ImportContactInput\"][];\n };\n };\n };\n responses: {\n /** @description Import summary. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ImportContactsResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getContact: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Contact. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_Contact\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n deleteContact: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Delete result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ContactRemoveResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n updateContact: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateContactInput\"];\n };\n };\n responses: {\n /** @description Update result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ContactUpdateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listContactActivities: {\n parameters: {\n query?: {\n limit?: components[\"parameters\"][\"Limit\"];\n cursor?: components[\"parameters\"][\"Cursor\"];\n };\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Contact activities page. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"PaginatedResponse_Activity\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n addContactNote: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"AddNoteInput\"];\n };\n };\n responses: {\n /** @description Created note reference. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ContactNoteResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listDeals: {\n parameters: {\n query?: {\n limit?: components[\"parameters\"][\"Limit\"];\n cursor?: components[\"parameters\"][\"Cursor\"];\n status?: components[\"schemas\"][\"DealStatus\"];\n search?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Deals page. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"PaginatedResponse_Deal\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n createDeal: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateDealInput\"];\n };\n };\n responses: {\n /** @description Created deal reference. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_DealCreateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getDeal: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Deal. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_Deal\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n deleteDeal: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Delete result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_DealRemoveResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n updateDeal: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateDealInput\"];\n };\n };\n responses: {\n /** @description Update result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_DealUpdateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listBookings: {\n parameters: {\n query?: {\n limit?: components[\"parameters\"][\"Limit\"];\n cursor?: components[\"parameters\"][\"Cursor\"];\n /** @description Only bookings starting at or after this instant. */\n from_ts?: components[\"schemas\"][\"BookingTimestampInput\"];\n /** @description Only bookings starting before this instant. */\n to_ts?: components[\"schemas\"][\"BookingTimestampInput\"];\n status?: components[\"schemas\"][\"BookingStatus\"];\n resource_id?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Bookings page. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"PaginatedResponse_Booking\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n createBooking: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateBookingInput\"];\n };\n };\n responses: {\n /** @description Created bookings, in request order. */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingCreateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listBookingServices: {\n parameters: {\n query?: {\n /** @description Include services with `active: false`. Defaults to active-only. */\n include_inactive?: boolean;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Bookable service catalogue. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingServiceArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listBookingResources: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Bookable resources — staff, rooms, and equipment. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingResourceArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listBookingAvailability: {\n parameters: {\n query: {\n service_id: string;\n /** @description Start of the window. */\n from_ts: components[\"schemas\"][\"BookingTimestampInput\"];\n /** @description End of the window; must be after `from_ts`. */\n to_ts: components[\"schemas\"][\"BookingTimestampInput\"];\n /** @description Restrict slots to one resource. */\n resource_id?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Free slots. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingSlotArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listBookingSchedule: {\n parameters: {\n query: {\n service_id: string;\n /** @description Start of the window. */\n from_ts: components[\"schemas\"][\"BookingTimestampInput\"];\n /** @description End of the window; must be after `from_ts`. */\n to_ts: components[\"schemas\"][\"BookingTimestampInput\"];\n /** @description Restrict to one resource's hours. */\n resource_id?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Open dates. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingScheduleDayArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getBooking: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Booking. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_Booking\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n updateBooking: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateBookingInput\"];\n };\n };\n responses: {\n /** @description The updated booking. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_Booking\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n cancelBooking: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CancelBookingInput\"];\n };\n };\n responses: {\n /** @description Cancel result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingActionResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n rescheduleBooking: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"RescheduleBookingInput\"];\n };\n };\n responses: {\n /** @description Reschedule result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingRescheduleResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n markBookingNoShow: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description No-show result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingActionResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getManagedBooking: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */\n token: components[\"parameters\"][\"ManageToken\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Manage summary. An unknown token and a token belonging to another workspace both answer 404, so this is not an existence oracle. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ManageSummary\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n cancelManagedBooking: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */\n token: components[\"parameters\"][\"ManageToken\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CancelBookingInput\"];\n };\n };\n responses: {\n /** @description Cancel result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingActionResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n rescheduleManagedBooking: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */\n token: components[\"parameters\"][\"ManageToken\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"RescheduleBookingInput\"];\n };\n };\n responses: {\n /** @description Reschedule result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingRescheduleResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n requestGdprExport: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Export request reference. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_GdprExportRequest\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listGdprExports: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Export requests. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_GdprExportArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getGdprExport: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Export request. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_GdprExport\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n recordGdprConsent: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"RecordConsentInput\"];\n };\n };\n responses: {\n /** @description Consent reference. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ConsentResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getGdprConsent: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n email: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Consent records. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ConsentRecordArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n recordCookieConsent: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CookieConsentInput\"];\n };\n };\n responses: {\n /** @description Cookie consent result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"CookieConsentResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listWorkspaces: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Workspaces. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_WorkspaceArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listHelpdeskConversations: {\n parameters: {\n query?: {\n limit?: number;\n cursor?: components[\"parameters\"][\"Cursor\"];\n status?: components[\"schemas\"][\"HelpdeskConversationStatus\"];\n /** @description Only conversations assigned to this user. */\n assignee_user_id?: string;\n /** @description Match against visitor name/email. */\n requester?: string;\n /** @description Free-text search query. */\n query?: string;\n /** @description Comma-separated channel types (e.g. `widget,whatsapp`). */\n channels?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Conversations page. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"PaginatedResponse_HelpdeskConversation\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getHelpdeskConversation: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Conversation. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_HelpdeskConversation\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n updateHelpdeskConversation: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateHelpdeskConversationInput\"];\n };\n };\n responses: {\n /** @description Update result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_HelpdeskConversationUpdateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listHelpdeskConversationMessages: {\n parameters: {\n query?: {\n limit?: number;\n cursor?: components[\"parameters\"][\"Cursor\"];\n };\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Messages page. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"PaginatedResponse_HelpdeskMessage\"];\n };\n };\n /** @description Conversation not found. */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiError\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n createHelpdeskReply: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateHelpdeskReplyInput\"];\n };\n };\n responses: {\n /** @description Created reply reference. */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_HelpdeskReplyCreateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listWebhooks: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Webhook endpoints. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_WebhookEndpointArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n createWebhook: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateWebhookInput\"];\n };\n };\n responses: {\n /** @description Created endpoint, including the one-time `secret`. */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_WebhookEndpoint\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getWebhook: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Webhook endpoint. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_WebhookEndpoint\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n deleteWebhook: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Delete result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_WebhookDeleteResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n updateWebhook: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateWebhookInput\"];\n };\n };\n responses: {\n /** @description Updated endpoint. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_WebhookEndpoint\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listWebhookDeliveries: {\n parameters: {\n query?: {\n limit?: number;\n };\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Recent deliveries, most recent first. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_WebhookDeliveryArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n testWebhook: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Test delivery queued. */\n 202: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_WebhookTestResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n issueCapabilityConfirmation: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"IssueCapabilityConfirmationInput\"];\n };\n };\n responses: {\n /** @description Minted confirmation token. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_CapabilityConfirmation\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listChannelConnectLinks: {\n parameters: {\n query?: {\n /** @description Page size (default 50, capped at 100). */\n limit?: number;\n cursor?: components[\"parameters\"][\"Cursor\"];\n channel_type?: string;\n status?: components[\"schemas\"][\"ConnectLinkStatus\"];\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Connect links page. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"PaginatedResponse_ConnectLink\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n createChannelConnectLink: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateConnectLinkInput\"];\n };\n };\n responses: {\n /** @description Minted connect link, including the one-time `url`. */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ConnectLinkCreateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n revokeChannelConnectLink: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Revoke result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ConnectLinkRevokeResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listChannelConnections: {\n parameters: {\n query?: {\n /** @description Page size (default 50, capped at 100). */\n limit?: number;\n cursor?: components[\"parameters\"][\"Cursor\"];\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Channel connections page. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"PaginatedResponse_ChannelConnection\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n disconnectChannelConnection: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Disconnect result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ChannelConnectionDisconnectResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n createScan: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"ScanCreateInput\"];\n };\n };\n responses: {\n /** @description Scan job queued. */\n 202: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ScanCreateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n searchScanCompanies: {\n parameters: {\n query: {\n q: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Registry matches (top 5, relevance-ranked). */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ScanCompanyArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getScan: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Scan job status and, once done, the findings payload. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ScanJob\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../src/openapi.generated.ts"],"sourcesContent":["/**\n * This file was auto-generated by openapi-typescript.\n * Do not make direct changes to the file.\n */\n\nexport interface paths {\n \"/api/v1/posts\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List posts */\n get: operations[\"listPosts\"];\n put?: never;\n /** Create a post */\n post: operations[\"createPost\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/posts/channels\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List connected post channels */\n get: operations[\"listPostChannels\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/posts/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** Get post detail */\n get: operations[\"getPost\"];\n put?: never;\n post?: never;\n /** Delete a post */\n delete: operations[\"deletePost\"];\n options?: never;\n head?: never;\n /** Update a draft post */\n patch: operations[\"updatePost\"];\n trace?: never;\n };\n \"/api/v1/posts/{id}/schedule\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Schedule a post */\n post: operations[\"schedulePost\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/posts/{id}/publish\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Publish a post */\n post: operations[\"publishPost\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/emails\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Send a transactional email */\n post: operations[\"sendEmail\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/emails/batch\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Send a batch of transactional emails */\n post: operations[\"batchSendEmails\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/emails/templates\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List active email templates */\n get: operations[\"listEmailTemplates\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/emails/templates/{slug}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n slug: components[\"parameters\"][\"Slug\"];\n };\n cookie?: never;\n };\n /** Get an email template */\n get: operations[\"getEmailTemplate\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/emails/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** Get sent email status */\n get: operations[\"getEmailSend\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/contacts\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List contacts */\n get: operations[\"listContacts\"];\n put?: never;\n /** Create a contact */\n post: operations[\"createContact\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/contacts/import\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Import contacts */\n post: operations[\"importContacts\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/contacts/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** Get a contact */\n get: operations[\"getContact\"];\n put?: never;\n post?: never;\n /** Delete a contact */\n delete: operations[\"deleteContact\"];\n options?: never;\n head?: never;\n /** Update a contact */\n patch: operations[\"updateContact\"];\n trace?: never;\n };\n \"/api/v1/contacts/{id}/activities\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** List contact activities */\n get: operations[\"listContactActivities\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/contacts/{id}/notes\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Add a contact note */\n post: operations[\"addContactNote\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/deals\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List deals */\n get: operations[\"listDeals\"];\n put?: never;\n /** Create a deal */\n post: operations[\"createDeal\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/deals/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** Get a deal */\n get: operations[\"getDeal\"];\n put?: never;\n post?: never;\n /** Delete a deal */\n delete: operations[\"deleteDeal\"];\n options?: never;\n head?: never;\n /** Update a deal */\n patch: operations[\"updateDeal\"];\n trace?: never;\n };\n \"/api/v1/bookings\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List bookings */\n get: operations[\"listBookings\"];\n put?: never;\n /**\n * Create a booking or party\n * @description Books every item or none of them. Each created booking carries a `manage_token` returned exactly once — only its hash is stored, and an idempotent replay omits it.\n */\n post: operations[\"createBooking\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/services\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List bookable services */\n get: operations[\"listBookingServices\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/resources\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List bookable resources */\n get: operations[\"listBookingResources\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/availability\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List free slots for a service\n * @description Slots reflect opening hours, time off, buffers, and existing bookings at the moment of the call. They are not held.\n */\n get: operations[\"listBookingAvailability\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/schedule\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List the dates a service can be booked on\n * @description The other half of `availability`. Availability returns free slots and nothing else, so a closed day, an evening past closing and a fully booked day all come back as the same empty array. This returns one entry per date the workspace keeps opening hours on; a date ABSENT from the response is closed. `last_start_ts` is the last start this service could occupy on that date (it depends on the service's duration and buffers, not just the closing time) and is `null` for a date with posted hours that is shut outright, such as a public holiday.\n */\n get: operations[\"listBookingSchedule\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/persons\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List a contact's persons\n * @description Persons a contact books for — a child, a pet, an employee. No login of their own. Active-only unless `include_inactive` is set.\n */\n get: operations[\"listContactPersons\"];\n put?: never;\n /** Add a person under a contact */\n post: operations[\"createContactPerson\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/relations\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List a contact's relations\n * @description Directional relations a contact holds, split into outgoing and incoming.\n */\n get: operations[\"listContactRelations\"];\n put?: never;\n /** Create a relation from one contact to another */\n post: operations[\"createContactRelation\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/events\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List arrangementer in a date range */\n get: operations[\"listBookingEvents\"];\n put?: never;\n /** Create an arrangement from a template */\n post: operations[\"createBookingEvent\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/events/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** Get an arrangement */\n get: operations[\"getBookingEvent\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** Get a booking */\n get: operations[\"getBooking\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n /** Annotate a booking */\n patch: operations[\"updateBooking\"];\n trace?: never;\n };\n \"/api/v1/bookings/{id}/cancel\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Cancel a booking as the business\n * @description Staff semantics — the workspace's cancel window is bypassed and the cancellation is attributed to staff.\n */\n post: operations[\"cancelBooking\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/{id}/reschedule\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Reschedule a booking as the business\n * @description Staff semantics — the reschedule window is bypassed. The old booking is cancelled and a new one inserted, so the response carries a new booking id and a freshly minted manage token.\n */\n post: operations[\"rescheduleBooking\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/{id}/no-show\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Mark a booking as a no-show */\n post: operations[\"markBookingNoShow\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/manage/{token}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */\n token: components[\"parameters\"][\"ManageToken\"];\n };\n cookie?: never;\n };\n /** Get the customer manage summary for a token */\n get: operations[\"getManagedBooking\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/manage/{token}/cancel\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */\n token: components[\"parameters\"][\"ManageToken\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Cancel on the customer's behalf\n * @description Customer semantics — the workspace's cancel window is ENFORCED and the cancellation is attributed to the customer.\n */\n post: operations[\"cancelManagedBooking\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/bookings/manage/{token}/reschedule\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */\n token: components[\"parameters\"][\"ManageToken\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Reschedule on the customer's behalf\n * @description Customer semantics — the reschedule window is ENFORCED. The response carries a new booking id and a new manage token; the old token stops working.\n */\n post: operations[\"rescheduleManagedBooking\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/portal/login/start\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * E-mail a one-time login code\n * @description Always answers 202 `{ status: \"sent\" }`, whether or not the address belongs to a contact — enumeration-safe by design. Rate-limited per address and per caller (`429 RATE_LIMITED`). Not idempotency-keyed. Errors: `400 VALIDATION_ERROR`, `403 FORBIDDEN` (key lacks `write:portal`), `429 RATE_LIMITED`.\n */\n post: operations[\"startPortalLogin\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/portal/login/verify\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Exchange the e-mailed code for a session\n * @description A wrong, burned or expired code all answer `401 PORTAL_CODE_INVALID` — the three are not distinguished, so the response is not an oracle for which codes exist. The returned `session_token` is a bearer credential for ONE contact: keep it in an HttpOnly cookie on the site's server and never hand it to the browser. Not idempotency-keyed. Errors: `400 VALIDATION_ERROR`, `401 PORTAL_CODE_INVALID`, `403 FORBIDDEN`, `429 RATE_LIMITED`.\n */\n post: operations[\"verifyPortalLogin\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/portal/logout\": {\n parameters: {\n query?: never;\n header: {\n /** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */\n \"X-Portal-Session\": components[\"parameters\"][\"PortalSession\"];\n };\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Revoke the session\n * @description Revoking twice reaches the same state — the second call answers `401 PORTAL_SESSION_INVALID`. Not idempotency-keyed. Errors: `401 PORTAL_SESSION_REQUIRED` (header missing), `401 PORTAL_SESSION_INVALID` (unknown, expired or revoked), `403 FORBIDDEN`, `429 RATE_LIMITED`.\n */\n post: operations[\"logoutPortal\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/portal/me\": {\n parameters: {\n query?: never;\n header: {\n /** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */\n \"X-Portal-Session\": components[\"parameters\"][\"PortalSession\"];\n };\n path?: never;\n cookie?: never;\n };\n /**\n * The signed-in contact's profile\n * @description Errors: `401 PORTAL_SESSION_REQUIRED`, `401 PORTAL_SESSION_INVALID`, `403 FORBIDDEN` (key lacks `read:portal`), `429 RATE_LIMITED`.\n */\n get: operations[\"getPortalProfile\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n /**\n * Update the signed-in contact's profile\n * @description Only the supplied fields change. `phone: null` clears the number, `family` replaces the whole list, and `marketing_consent` records a `marketing_email` consent decision with source `portal`. Answers the profile as it is after the change. Errors: `400 VALIDATION_ERROR`, `401 PORTAL_SESSION_REQUIRED`, `401 PORTAL_SESSION_INVALID`, `403 FORBIDDEN` (key lacks `write:portal`), `429 RATE_LIMITED`.\n */\n patch: operations[\"updatePortalProfile\"];\n trace?: never;\n };\n \"/api/v1/portal/me/bookings\": {\n parameters: {\n query?: never;\n header: {\n /** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */\n \"X-Portal-Session\": components[\"parameters\"][\"PortalSession\"];\n };\n path?: never;\n cookie?: never;\n };\n /**\n * The signed-in contact's bookings\n * @description Split into `upcoming` and `past`. An upcoming booking still inside the workspace's policy windows carries `manage_token` and `can_manage: true`; the token opens the site's manage page. Errors: `401 PORTAL_SESSION_REQUIRED`, `401 PORTAL_SESSION_INVALID`, `403 FORBIDDEN`, `429 RATE_LIMITED`.\n */\n get: operations[\"listPortalBookings\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/portal/me/export\": {\n parameters: {\n query?: never;\n header: {\n /** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */\n \"X-Portal-Session\": components[\"parameters\"][\"PortalSession\"];\n };\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Export everything held about the signed-in contact\n * @description A synchronous GDPR Art. 15 export of the contact's profile, family, consents and bookings, as one JSON document. Unlike `GET /api/v1/portal/me`, `contact.persons` here includes inactive persons so the export is a complete dump. `relations` lists every relation the contact is a party to, exposing only the counterpart's display name. Read-only, so not idempotency-keyed. Errors: `401 PORTAL_SESSION_REQUIRED`, `401 PORTAL_SESSION_INVALID`, `403 FORBIDDEN`, `429 RATE_LIMITED`.\n */\n post: operations[\"exportPortalData\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/portal/me/delete\": {\n parameters: {\n query?: never;\n header: {\n /** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */\n \"X-Portal-Session\": components[\"parameters\"][\"PortalSession\"];\n };\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Erase the signed-in contact\n * @description GDPR Art. 17 erasure. The session is revoked as part of the deletion, so a retry answers `401 PORTAL_SESSION_INVALID` rather than deleting anything else. Not idempotency-keyed. Errors: `401 PORTAL_SESSION_REQUIRED`, `401 PORTAL_SESSION_INVALID`, `403 FORBIDDEN` (key lacks `write:portal`), `429 RATE_LIMITED`.\n */\n post: operations[\"deletePortalAccount\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/gdpr/export\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Request a GDPR export */\n post: operations[\"requestGdprExport\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/gdpr/exports\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List GDPR exports */\n get: operations[\"listGdprExports\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/gdpr/exports/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** Get a GDPR export */\n get: operations[\"getGdprExport\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/gdpr/consent\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Record GDPR consent */\n post: operations[\"recordGdprConsent\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/gdpr/consent/{email}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n email: string;\n };\n cookie?: never;\n };\n /** Get GDPR consent records */\n get: operations[\"getGdprConsent\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/cookie-consent\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Record cookie consent */\n post: operations[\"recordCookieConsent\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/me/workspaces\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List accessible workspaces */\n get: operations[\"listWorkspaces\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/helpdesk/conversations\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List helpdesk conversations */\n get: operations[\"listHelpdeskConversations\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/helpdesk/conversations/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** Get a helpdesk conversation */\n get: operations[\"getHelpdeskConversation\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n /**\n * Update a conversation's status or assignee\n * @description Set `status` and/or `assignee_user_id` (`null` unassigns). At least one field is required. Capability-scoped tokens must send `Idempotency-Key` and `X-Capability-Confirmation` headers on this route; API keys with legacy scopes may omit them.\n */\n patch: operations[\"updateHelpdeskConversation\"];\n trace?: never;\n };\n \"/api/v1/helpdesk/conversations/{id}/messages\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** List conversation messages */\n get: operations[\"listHelpdeskConversationMessages\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/helpdesk/replies\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Send an operator reply or internal note\n * @description Send an `Idempotency-Key` header so retried requests do not create duplicate messages — it is required for capability-scoped tokens (together with `X-Capability-Confirmation`).\n */\n post: operations[\"createHelpdeskReply\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/webhooks\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** List webhook endpoints */\n get: operations[\"listWebhooks\"];\n put?: never;\n /**\n * Create a webhook endpoint\n * @description The response's `data.secret` contains the signing secret EXACTLY ONCE — it can never be retrieved again, so store it securely immediately. An idempotent replay (same `Idempotency-Key`) returns the existing endpoint WITHOUT `secret`. Deliveries are HTTP POSTs signed with `X-Medal-Signature: sha256=<base64(HMAC-SHA256(\"{timestamp}.{rawBody}\", secret))>` plus `X-Medal-Timestamp`, `X-Medal-Event`, and `X-Medal-Delivery-Id` / `Idempotency-Key` headers.\n */\n post: operations[\"createWebhook\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/webhooks/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** Get a webhook endpoint */\n get: operations[\"getWebhook\"];\n put?: never;\n post?: never;\n /**\n * Delete a webhook endpoint\n * @description Permanently deletes the endpoint and stops all outbound deliveries. Capability-scoped tokens must send `Idempotency-Key` and `X-Capability-Confirmation` headers on this route; API keys with legacy scopes may omit them.\n */\n delete: operations[\"deleteWebhook\"];\n options?: never;\n head?: never;\n /**\n * Update a webhook endpoint\n * @description Only provided fields change. Pass `null` for `channels` or `channel_connection_ids` to clear that filter.\n */\n patch: operations[\"updateWebhook\"];\n trace?: never;\n };\n \"/api/v1/webhooks/{id}/deliveries\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** List recent deliveries */\n get: operations[\"listWebhookDeliveries\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/webhooks/{id}/test\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Queue a test delivery\n * @description Queues a signed `test.ping` delivery to the endpoint.\n */\n post: operations[\"testWebhook\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/capability-confirmations\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Issue a capability confirmation token\n * @description Mints a short-lived `X-Capability-Confirmation` token for one pending write. Confirmable write routes require BOTH `Idempotency-Key` and `X-Capability-Confirmation` when the credential holds the capability scope directly; API keys with legacy scopes are exempt. The token is bound to the workspace, auth subject, method, path, required scopes and idempotency key, and expires within 15 minutes. `user_approved: true` asserts that a human on the caller's side approved this exact action.\n */\n post: operations[\"issueCapabilityConfirmation\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/channels/connect-links\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List connect links\n * @description Link tokens are never returned. Newest first, cursor-paginated. The `channel_type` / `status` filters are applied within each page, so a page may hold fewer than `limit` items while `pagination.has_more` is still true — page off `has_more`, not the item count.\n */\n get: operations[\"listChannelConnectLinks\"];\n put?: never;\n /**\n * Mint a hosted connect link\n * @description Mints a single-use hosted connect link that lets an external person (no Medal account required) attach a channel account (e.g. `telegram_inbox`) to the workspace's helpdesk. The response's `data.url` contains the one-time link token EXACTLY ONCE — an idempotent replay (same `Idempotency-Key`) returns the link WITHOUT `url`. Requires the `channel.connect.manage` scope; OAuth callers additionally need the workspace `admin` role.\n */\n post: operations[\"createChannelConnectLink\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/channels/connect-links/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Revoke a connect link\n * @description Revokes a pending connect link so it can no longer be consumed. OAuth callers need the workspace `admin` role.\n */\n delete: operations[\"revokeChannelConnectLink\"];\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/channels/connections\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List channel connections\n * @description The workspace's channel connections in a generic, channel-agnostic shape. Newest first, cursor-paginated. Rows that are not projectable as connections are dropped within the page, so a page may hold fewer than `limit` items while `pagination.has_more` is still true — page off `has_more`, not the item count.\n */\n get: operations[\"listChannelConnections\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/channels/connections/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Disconnect a channel connection\n * @description Disconnects a connected channel account (best-effort platform logout, then local revoke). Emits a `helpdesk.channel_disconnected` webhook event with `reason: \"api_disconnect\"` if the account was previously connected. OAuth callers need the workspace `admin` role.\n */\n delete: operations[\"disconnectChannelConnection\"];\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/scan\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Queue a company/site scan\n * @description Queues an asynchronous scan. Provide exactly one of `url`, `orgnr`, or `name`; poll the returned id via `GET /api/v1/scan/{id}`.\n */\n post: operations[\"createScan\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/scan/companies\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** Search the Norwegian company registry */\n get: operations[\"searchScanCompanies\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/api/v1/scan/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n /** Get a scan job */\n get: operations[\"getScan\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n}\nexport type webhooks = Record<string, never>;\nexport interface components {\n schemas: {\n ApiError: {\n error: {\n code: string;\n message: string;\n details?: unknown;\n };\n };\n Pagination: {\n has_more: boolean;\n next_cursor: string | null;\n };\n Success: {\n success: boolean;\n };\n PostCreateResult: {\n id: string;\n };\n Post: {\n id: string;\n type: components[\"schemas\"][\"PostType\"];\n title: string | null;\n content: string;\n status: string;\n channel_ids: string[];\n variant_count: number;\n published_count: number;\n failed_count: number;\n /** Format: date-time */\n scheduled_at: string | null;\n /** Format: date-time */\n published_at: string | null;\n /** Format: date-time */\n created_at: string | null;\n /** Format: date-time */\n updated_at: string | null;\n };\n /** @enum {string} */\n PostType: \"social\" | \"newsletter\" | \"blog\";\n PostVariant: {\n id: string;\n channel_id: string;\n content: string;\n status: string;\n platform: string | null;\n channel_display_name: string | null;\n /** Format: date-time */\n scheduled_at: string | null;\n /** Format: date-time */\n published_at: string | null;\n platform_post_id: string | null;\n /** Format: uri */\n permalink: string | null;\n error: string | null;\n };\n PostDetail: components[\"schemas\"][\"Post\"] & {\n variants: components[\"schemas\"][\"PostVariant\"][];\n };\n Channel: {\n id: string;\n platform: string | null;\n display_name: string | null;\n platform_username: string | null;\n state: string;\n /** Format: date-time */\n connected_at: string | null;\n };\n CreatePostInput: {\n type?: components[\"schemas\"][\"PostType\"];\n title?: string;\n content: string;\n channel_ids: string[];\n };\n UpdatePostInput: {\n title?: string;\n content?: string;\n };\n SchedulePostInput: {\n scheduled_at: number | string;\n };\n ScheduleResult: {\n success: boolean;\n workflow_id: string;\n };\n PublishResult: {\n success: boolean;\n workflow_id: string;\n };\n SendEmailInput: {\n template_slug: string;\n /** Format: email */\n to: string;\n name?: string;\n locale?: string;\n fallback_locale?: string;\n variables?: {\n [key: string]: string;\n };\n contact_id?: string;\n idempotency_key?: string;\n /** Format: email */\n copy_to?: string;\n /** Format: email */\n copy_reply_to?: string;\n };\n EmailSendResult: {\n /** @description Email send id — poll GET /api/v1/emails/{id} with it. */\n id: string | null;\n /** @description Send id of the copy_to copy, or null when no copy was requested. */\n copy_id: string | null;\n contact_id: string | null;\n status: string;\n };\n EmailSend: {\n id: string;\n status: string;\n /** Format: email */\n recipient_email: string;\n recipient_name: string | null;\n subject: string | null;\n template_id: string | null;\n contact_id: string | null;\n /** Format: date-time */\n queued_at: string | null;\n /** Format: date-time */\n sent_at: string | null;\n /** Format: date-time */\n delivered_at: string | null;\n /** Format: date-time */\n opened_at: string | null;\n /** Format: date-time */\n clicked_at: string | null;\n error_message: string | null;\n };\n BatchSendInput: {\n template_slug: string;\n default_locale?: string;\n recipients: {\n /** Format: email */\n email: string;\n name?: string;\n locale?: string;\n variables?: {\n [key: string]: string;\n };\n }[];\n };\n BatchSendSummary: {\n batch_id: string;\n total: number;\n queued: number;\n failed: number;\n /** @description Per-recipient outcome, in request order. */\n results: components[\"schemas\"][\"BatchSendRecipientResult\"][];\n };\n BatchSendRecipientResult: {\n /** Format: email */\n email: string;\n /** @description Email send id — poll GET /api/v1/emails/{id} with it. Null when not queued. */\n id: string | null;\n /** @enum {string} */\n status: \"queued\" | \"failed\";\n /** @description Failure reason for recipients that were not queued. */\n error: string | null;\n };\n EmailTemplate: {\n id: string;\n name: string;\n slug: string;\n type: string | null;\n subject: string | null;\n default_locale: string;\n available_locales: string[];\n description: string | null;\n category: string | null;\n label_ids: string[];\n is_active: boolean;\n is_archived: boolean;\n version: number;\n /** Format: date-time */\n created_at: string | null;\n /** Format: date-time */\n updated_at: string | null;\n };\n EmailTemplateDetail: components[\"schemas\"][\"EmailTemplate\"] & {\n html_content: string | null;\n text_content: string | null;\n preview_text: string | null;\n from_name: string | null;\n /** Format: email */\n from_email: string | null;\n /** Format: email */\n reply_to: string | null;\n requested_locale: string | null;\n resolved_locale: string;\n content_source: string;\n localizations: {\n locale: string | null;\n subject: string | null;\n html_content: string | null;\n text_content: string | null;\n preview_text: string | null;\n }[];\n };\n Contact: {\n id: string;\n /** Format: email */\n email: string;\n first_name: string | null;\n last_name: string | null;\n phone: string | null;\n company: string | null;\n job_title: string | null;\n address: {\n [key: string]: string;\n } | null;\n status: components[\"schemas\"][\"ContactStatus\"];\n email_status: components[\"schemas\"][\"EmailStatus\"];\n label_ids: string[];\n source: string | null;\n custom_fields: {\n [key: string]: unknown;\n } | null;\n /** Format: date-time */\n created_at: string | null;\n /** Format: date-time */\n updated_at: string | null;\n };\n ContactCreateResult: {\n id: string;\n };\n ContactUpdateResult: {\n /** @constant */\n success: true;\n };\n ContactRemoveResult: {\n /** @constant */\n success: true;\n };\n ContactNoteResult: {\n id: string;\n };\n /** @enum {string} */\n ContactStatus: \"lead\" | \"prospect\" | \"customer\" | \"churned\" | \"archived\";\n /** @enum {string} */\n EmailStatus: \"subscribed\" | \"unsubscribed\" | \"bounced\" | \"complained\";\n CreateContactInput: {\n /** Format: email */\n email: string;\n first_name?: string;\n last_name?: string;\n phone?: string;\n company?: string;\n job_title?: string;\n address?: {\n [key: string]: string;\n };\n status?: components[\"schemas\"][\"ContactStatus\"];\n email_status?: components[\"schemas\"][\"EmailStatus\"];\n label_ids?: string[];\n labels?: string[];\n custom_fields?: {\n [key: string]: unknown;\n };\n notes?: string | components[\"schemas\"][\"ContactNoteInput\"];\n };\n UpdateContactInput: {\n /** Format: email */\n email?: string;\n first_name?: string;\n last_name?: string;\n phone?: string;\n company?: string;\n job_title?: string;\n status?: components[\"schemas\"][\"ContactStatus\"];\n email_status?: components[\"schemas\"][\"EmailStatus\"];\n label_ids?: string[];\n labels?: string[];\n custom_fields?: {\n [key: string]: unknown;\n };\n };\n ContactNoteInput: {\n content: string;\n attachments?: {\n /** Format: uri */\n url: string;\n name: string;\n type?: string;\n size?: number;\n }[];\n };\n ImportContactInput: {\n /** Format: email */\n email: string;\n first_name?: string;\n last_name?: string;\n phone?: string;\n company?: string;\n job_title?: string;\n label_ids?: string[];\n status?: string;\n };\n ImportContactsResult: {\n added: number;\n skipped: number;\n total: number;\n };\n Activity: {\n id: string;\n type: string;\n title: string | null;\n content: string | null;\n actor_name: string | null;\n actor_type: string | null;\n metadata: unknown;\n /** Format: date-time */\n created_at: string | null;\n };\n AddNoteInput: {\n content: string;\n };\n Deal: {\n id: string;\n title: string;\n description: string | null;\n value: number | null;\n currency: string | null;\n status: components[\"schemas\"][\"DealStatus\"];\n brand_name: string | null;\n /** Format: uri */\n brand_website: string | null;\n contact_id: string | null;\n contact_name: string | null;\n /** Format: email */\n contact_email: string | null;\n /** Format: date */\n start_date: string | null;\n /** Format: date */\n end_date: string | null;\n notes: string | null;\n /** Format: date-time */\n created_at: string | null;\n /** Format: date-time */\n updated_at: string | null;\n };\n DealCreateResult: {\n id: string;\n };\n DealUpdateResult: {\n /** @constant */\n success: true;\n };\n DealRemoveResult: {\n /** @constant */\n success: true;\n };\n /** @enum {string} */\n DealStatus:\n | \"draft\"\n | \"open\"\n | \"won\"\n | \"lost\"\n | \"negotiating\"\n | \"proposal_sent\"\n | \"on_hold\"\n | \"churned\";\n CreateDealInput: {\n title: string;\n description?: string;\n value?: number;\n currency?: string;\n brand_name?: string;\n /** Format: uri */\n brand_website?: string;\n contact_id?: string;\n contact_name?: string;\n /** Format: email */\n contact_email?: string;\n /** Format: date */\n start_date?: string;\n /** Format: date */\n end_date?: string;\n notes?: string;\n };\n UpdateDealInput: {\n title?: string;\n description?: string;\n value?: number;\n currency?: string;\n status?: components[\"schemas\"][\"DealStatus\"];\n brand_name?: string;\n /** Format: uri */\n brand_website?: string;\n contact_id?: string | null;\n contact_name?: string;\n /** Format: email */\n contact_email?: string;\n /** Format: date */\n start_date?: string;\n /** Format: date */\n end_date?: string;\n notes?: string;\n };\n /** @description A timestamp on the way in — Unix milliseconds, or an ISO 8601 date-time string. Responses always render timestamps as ISO 8601. */\n BookingTimestampInput: number | string;\n /** @enum {string} */\n BookingStatus: \"pending\" | \"confirmed\" | \"completed\" | \"cancelled\" | \"no_show\";\n /**\n * @description Who cancelled. `staff` for the id-addressed cancel, `customer` for the manage-token cancel, `system` for an automated one.\n * @enum {string}\n */\n BookingCancelledBy: \"customer\" | \"staff\" | \"system\";\n /** @enum {string} */\n BookingPaymentStatus: \"none\" | \"reserved\" | \"captured\" | \"refunded\";\n /** @enum {string} */\n BookingCreatedVia: \"web\" | \"dashboard\" | \"walk_in\" | \"api\";\n /** @enum {string} */\n BookingResourceType: \"staff\" | \"room\" | \"equipment\";\n Booking: {\n id: string;\n contact_id: string | null;\n service_id: string | null;\n resource_id: string | null;\n /** Format: date-time */\n start_ts: string | null;\n /** Format: date-time */\n end_ts: string | null;\n booked_for_name: string | null;\n /** @description A birth year, not a birthdate — the age bracket is all that is stored. */\n booked_for_birth_year: number | null;\n /** @description The ContactPerson this booking was made for, if any. */\n booked_for_person_id: string | null;\n /** @description The BookingEvent this booking is a registration for, if any. */\n event_id: string | null;\n /** @description Position of this booking within its event's registrations, if any. */\n event_order: number | null;\n /** @description Shared by every booking created in the same party request. */\n party_sequence_id: string | null;\n status: components[\"schemas\"][\"BookingStatus\"];\n cancelled_by: components[\"schemas\"][\"BookingCancelledBy\"] | null;\n cancel_reason: string | null;\n /** @description On a booking created by a reschedule, the booking it replaced. */\n rescheduled_from_id: string | null;\n payment_status: components[\"schemas\"][\"BookingPaymentStatus\"];\n /** @description Price in integer øre. Never a float and never kroner. */\n amount_ore: number | null;\n /** @description Customer-visible note. */\n notes: string | null;\n /** @description Staff-only note; never shown to the customer. */\n internal_notes: string | null;\n created_via: components[\"schemas\"][\"BookingCreatedVia\"] | null;\n /** Format: date-time */\n created_at: string | null;\n /** Format: date-time */\n updated_at: string | null;\n };\n BookingService: {\n id: string;\n name: string | null;\n description: string | null;\n category: string | null;\n duration_minutes: number | null;\n buffer_before_minutes: number | null;\n buffer_after_minutes: number | null;\n /** @description Price in integer øre. */\n price_ore: number | null;\n weekend_surcharge_pct: number | null;\n /** @description Resource types this service needs, e.g. `[\"staff\"]`. */\n resource_requirements: string[];\n bookable_online: boolean;\n max_per_booking: number | null;\n color: string | null;\n sort_order: number | null;\n active: boolean;\n /** Format: date-time */\n created_at: string | null;\n /** Format: date-time */\n updated_at: string | null;\n };\n BookingResource: {\n id: string;\n type: components[\"schemas\"][\"BookingResourceType\"] | null;\n name: string | null;\n /** Format: uri */\n photo_url: string | null;\n bio: string | null;\n /** @description Services this resource can perform. */\n service_ids: string[];\n capacity: number | null;\n sort_order: number | null;\n active: boolean;\n /** Format: date-time */\n created_at: string | null;\n /** Format: date-time */\n updated_at: string | null;\n };\n BookingSlot: {\n /** Format: date-time */\n start_ts: string | null;\n /** Format: date-time */\n end_ts: string | null;\n resource_id: string | null;\n };\n /** @description One date a service can be booked on. `date` is the workspace's own calendar date, not a timestamp. */\n BookingScheduleDay: {\n /** Format: date */\n date: string | null;\n /** Format: date-time */\n opens_ts: string | null;\n /** Format: date-time */\n closes_ts: string | null;\n /**\n * Format: date-time\n * @description Last start this service could occupy on the date; `null` when the date is shut outright.\n */\n last_start_ts: string | null;\n };\n /** @description The person the booking is made under. Phone is the CRM dedupe key. */\n BookingContactInput: {\n phone: string;\n email?: string;\n name?: string;\n };\n /** @description One line of a party — a single service on a single slot. */\n CreateBookingItemInput: {\n service_id: string;\n /** @description Omit to let the engine pick a free resource. */\n resource_id?: string;\n start_ts: components[\"schemas\"][\"BookingTimestampInput\"];\n booked_for_name?: string;\n booked_for_birth_year?: number;\n /** @description Book this line on behalf of a ContactPerson rather than the contact. */\n booked_for_person_id?: string;\n };\n CreateBookingInput: {\n /** @description A PARTY — one request books a whole family in one all-or-nothing transaction. */\n items: components[\"schemas\"][\"CreateBookingItemInput\"][];\n contact: components[\"schemas\"][\"BookingContactInput\"];\n notes?: string;\n /**\n * @description Where the booking came from. Defaults to `api`. A workspace's OWN website should send `web`, so its bookings can be told apart from integrations. `dashboard` and `walk_in` are staff-only and are rejected with 400 — a bearer token proves which workspace is calling, not that a member typed the booking in.\n * @enum {string}\n */\n created_via?: \"web\" | \"api\";\n };\n CreatedBooking: {\n id: string;\n /** @description Show-once secret for the customer's manage link. Only its hash is stored, and an idempotent replay omits this field entirely. */\n manage_token?: string;\n };\n BookingCreateResult: {\n /** @description One entry per created booking, in request order. */\n bookings: components[\"schemas\"][\"CreatedBooking\"][];\n contact_id: string;\n };\n BookingActionResult: {\n /** @constant */\n success: true;\n };\n BookingRescheduleResult: {\n /** @constant */\n success: true;\n /** @description The NEW booking's id — a reschedule cancels the old row and inserts a new one. */\n booking_id: string;\n /** @description Freshly minted manage token for the new booking; omitted on an idempotent replay. */\n manage_token?: string;\n };\n /** @description What the holder of a manage token may see and do. `can_cancel` and `can_reschedule` already apply the workspace's policy windows. */\n ManageSummary: {\n booking_id: string;\n contact_id: string | null;\n status: components[\"schemas\"][\"BookingStatus\"] | null;\n cancelled_by: components[\"schemas\"][\"BookingCancelledBy\"] | null;\n cancel_reason: string | null;\n rescheduled_from_id: string | null;\n /** Format: date-time */\n start_ts: string | null;\n /** Format: date-time */\n end_ts: string | null;\n service_id: string | null;\n service_name: string | null;\n resource_id: string | null;\n resource_name: string | null;\n booked_for_name: string | null;\n party_sequence_id: string | null;\n /** @description Price in integer øre. */\n amount_ore: number | null;\n payment_status: components[\"schemas\"][\"BookingPaymentStatus\"] | null;\n /** @description IANA zone the booking's local times should be rendered in. */\n time_zone: string | null;\n cancel_window_hours: number | null;\n reschedule_window_hours: number | null;\n can_cancel: boolean;\n can_reschedule: boolean;\n };\n /** @description At least one of `notes` or `internal_notes` is required — the API rejects a body carrying neither with a 400. `\"\"` is a meaningful value that clears the field, so the constraint is on presence. */\n UpdateBookingInput:\n | {\n /** @description Customer-visible note. */\n notes: string;\n /** @description Staff-only note. */\n internal_notes?: string;\n }\n | {\n /** @description Customer-visible note. */\n notes?: string;\n /** @description Staff-only note. */\n internal_notes: string;\n };\n CancelBookingInput: {\n reason?: string;\n };\n RescheduleBookingInput: {\n new_start_ts: components[\"schemas\"][\"BookingTimestampInput\"];\n new_resource_id?: string;\n };\n /** @description Pagination for a bookings page. `truncated` is the extra statement: the underlying read is capped, and when the cap binds there are matching bookings no cursor from this call reaches — narrow the window. */\n BookingsPagination: {\n has_more: boolean;\n next_cursor: string | null;\n truncated: boolean;\n };\n GdprExport: {\n id: string;\n request_type: string;\n status: string;\n /** Format: date-time */\n submitted_at: string | null;\n /** Format: date-time */\n completed_at: string | null;\n /** Format: date-time */\n due_date?: string | null;\n /** Format: uri */\n download_url?: string | null;\n /** Format: date-time */\n expires_at?: string | null;\n };\n GdprExportRequest: {\n request_id: string;\n status: string;\n };\n /** @enum {string} */\n ConsentType: \"marketing_email\" | \"analytics_tracking\" | \"third_party_sharing\";\n RecordConsentInput: {\n /** Format: email */\n email: string;\n consent_type: components[\"schemas\"][\"ConsentType\"];\n granted: boolean;\n source?: string;\n ip_address?: string;\n consent_text?: string;\n version?: string;\n };\n ConsentRecord: {\n id: string;\n /** Format: email */\n email: string;\n consent_type: components[\"schemas\"][\"ConsentType\"];\n granted: boolean;\n /** Format: date-time */\n granted_at: string | null;\n /** Format: date-time */\n revoked_at: string | null;\n source?: string;\n version?: string;\n };\n ConsentResult: {\n id: string;\n };\n CookieConsentInput: {\n domain: string;\n consentStatus: string;\n /** Format: date-time */\n consentTimestamp: string;\n ipAddress?: string;\n userAgent?: string;\n cookiePreferences: {\n [key: string]: components[\"schemas\"][\"CookieCategoryConsent\"];\n };\n };\n CookieCategoryConsent: {\n allowed: boolean;\n cookieRecords?: {\n cookie: string;\n duration: string;\n description: string;\n }[];\n };\n CookieConsentResult: {\n success: boolean;\n logId?: string;\n };\n Workspace: {\n id: string;\n name: string;\n slug: string;\n } & {\n [key: string]: unknown;\n };\n /** @enum {string} */\n HelpdeskConversationStatus: \"open\" | \"snoozed\" | \"closed\";\n /** @enum {string} */\n HelpdeskMessageAuthorType: \"visitor\" | \"operator\" | \"ai\" | \"system\";\n /**\n * @description `note` is operator-internal and never delivered to the customer.\n * @enum {string}\n */\n HelpdeskMessageType: \"chat\" | \"email\" | \"note\";\n HelpdeskConversation: {\n id: string;\n /** @description Channel type, e.g. `widget`, `instagram`, `messenger`, `whatsapp`, `email`. */\n channel: string;\n channel_connection_id: string | null;\n status: components[\"schemas\"][\"HelpdeskConversationStatus\"];\n subject: string | null;\n assignee_user_id: string | null;\n contact_id: string | null;\n visitor_name: string | null;\n visitor_email: string | null;\n external_conversation_id: string | null;\n channel_account_id: string | null;\n message_count: number;\n unread_for_operator: number;\n /** @description Unix timestamp in milliseconds. */\n last_message_at: number;\n last_message_preview: string | null;\n last_message_author_type: components[\"schemas\"][\"HelpdeskMessageAuthorType\"] | null;\n /** @description Unix timestamp in milliseconds. */\n created_at: number;\n /** @description Unix timestamp in milliseconds. */\n updated_at: number;\n };\n HelpdeskMessage: {\n id: string;\n conversation_id: string;\n author_type: components[\"schemas\"][\"HelpdeskMessageAuthorType\"];\n message_type: components[\"schemas\"][\"HelpdeskMessageType\"];\n author_user_id: string | null;\n author_name: string | null;\n body: string;\n /** @description Outbound delivery state, or `null` for inbound messages and internal notes. A `201` from `POST /api/v1/helpdesk/replies` means the reply was accepted, NOT delivered — the channel hand-off is asynchronous, so poll this field (or subscribe to `helpdesk.message_delivery_updated`) to learn the outcome. */\n delivery_status: components[\"schemas\"][\"HelpdeskMessageDeliveryStatus\"] | null;\n /** @description Last send error for a `failed` outbound message, otherwise `null`. */\n delivery_error: string | null;\n /** @description Unix timestamp in milliseconds. */\n created_at: number;\n };\n /** @enum {string} */\n HelpdeskMessageDeliveryStatus: \"pending\" | \"sent\" | \"delivered\" | \"failed\";\n /** @description At least one field is required. */\n UpdateHelpdeskConversationInput: {\n status?: components[\"schemas\"][\"HelpdeskConversationStatus\"];\n /** @description User ID to assign, or `null` to unassign. */\n assignee_user_id?: string | null;\n };\n HelpdeskConversationUpdateResult: {\n id: string;\n status: components[\"schemas\"][\"HelpdeskConversationStatus\"];\n assignee_user_id: string | null;\n };\n CreateHelpdeskReplyInput: {\n conversation_id: string;\n body: string;\n /**\n * @description `note` = operator-internal note (not delivered to the customer). Default `chat`.\n * @enum {string}\n */\n message_type?: \"chat\" | \"note\";\n /** @description Agent display name for bridged replies (shown in widget + inbox). */\n author_name?: string;\n };\n HelpdeskReplyCreateResult: {\n id: string;\n conversation_id: string;\n /** @constant */\n status: \"created\";\n };\n WebhookEndpoint: {\n id: string;\n name: string;\n /**\n * Format: uri\n * @description Destination URL (must be https).\n */\n url: string;\n enabled: boolean;\n /** @description Subscribed event types. Empty array = all events. */\n event_types: string[];\n /** @description Channel-type filter (e.g. `['widget', 'whatsapp']`), or `null` for all channels. */\n channels: string[] | null;\n /** @description Channel-connection filter, or `null` for all connections. */\n channel_connection_ids: string[] | null;\n /** @description Last 4 characters of the signing secret, for identification. */\n secret_last4: string;\n consecutive_failures: number;\n /** @description Unix timestamp in milliseconds, or `null` if never. */\n last_delivery_at: number | null;\n /** @description Unix timestamp in milliseconds, or `null` if never. */\n last_success_at: number | null;\n /** @description Unix timestamp in milliseconds, or `null` if never. */\n last_error_at: number | null;\n last_error: string | null;\n /** @description Unix timestamp in milliseconds. */\n created_at: number;\n /** @description Unix timestamp in milliseconds. */\n updated_at: number;\n /** @description Full signing secret (`whsec_…`) — present ONLY in the create response, exactly once. It can never be retrieved again; store it securely immediately. An idempotent replay of the create request omits it. */\n secret?: string;\n };\n CreateWebhookInput: {\n name: string;\n /**\n * Format: uri\n * @description Destination URL — must be https.\n */\n url: string;\n /** @description Event types to subscribe to (e.g. `helpdesk.message_received`). Empty = all. */\n event_types: string[];\n /** @description Restrict to these channel types (e.g. `['widget', 'whatsapp']`). */\n channels?: string[];\n /** @description Restrict to these channel connection IDs. */\n channel_connection_ids?: string[];\n };\n /** @description Only provided fields change. */\n UpdateWebhookInput: {\n name?: string;\n /** Format: uri */\n url?: string;\n event_types?: string[];\n /** @description New channel-type filter, or `null` to clear the filter. */\n channels?: string[] | null;\n /** @description New channel-connection filter, or `null` to clear the filter. */\n channel_connection_ids?: string[] | null;\n enabled?: boolean;\n };\n WebhookDeleteResult: {\n id: string;\n /** @constant */\n status: \"deleted\";\n };\n /** @description A delivery attempt record. `id` is the same value sent as the `X-Medal-Delivery-Id` and `Idempotency-Key` headers on the outbound request. Deliveries never carry payload bodies (payloads can contain customer PII). The correlation fields are derived from the stored event and fail closed to `null` when no canonical event exists — e.g. `test.ping` deliveries or events that have aged out of retention. */\n WebhookDelivery: {\n id: string;\n event_type: string;\n /** @description Primary subject id of the announced event, or `null`. */\n resource_id: string | null;\n conversation_id: string | null;\n message_id: string | null;\n connection_ref: string | null;\n channel: string | null;\n channel_connection_id: string | null;\n /** @enum {string} */\n status: \"pending\" | \"delivered\" | \"dead_letter\";\n attempt_count: number;\n /** @description Unix timestamp in milliseconds of the next retry, or `null`. */\n next_attempt_at: number | null;\n response_status: number | null;\n duration_ms: number | null;\n last_error: string | null;\n /** @description Unix timestamp in milliseconds, or `null` if not delivered. */\n delivered_at: number | null;\n /** @description Unix timestamp in milliseconds. */\n created_at: number;\n };\n WebhookTestResult: {\n delivery_id: string;\n /** @constant */\n status: \"queued\";\n };\n /** @enum {string} */\n ConnectLinkStatus: \"pending\" | \"consumed\" | \"expired\" | \"revoked\";\n /** @enum {string} */\n ChannelConnectionState: \"connecting\" | \"active\" | \"disconnected\" | \"disabled\";\n CreateConnectLinkInput: {\n /** @description Channel type to connect (e.g. `telegram_inbox`). */\n channel_type: string;\n /** @description Display label shown on the hosted connect page. */\n label?: string;\n /**\n * Format: uri\n * @description URL the hosted page redirects to after a successful connect — must be https.\n */\n redirect_url?: string;\n };\n ConnectLinkCreateResult: {\n id: string;\n /**\n * Format: uri\n * @description Single-use hosted connect URL containing the one-time link token — present ONLY in the live create response. An idempotent replay of the create request omits it; the token can never be retrieved again.\n */\n url?: string;\n channel_type: string;\n label: string | null;\n status: components[\"schemas\"][\"ConnectLinkStatus\"];\n /** @description Unix timestamp in milliseconds. */\n expires_at: number;\n };\n ConnectLink: {\n id: string;\n channel_type: string;\n label: string | null;\n status: components[\"schemas\"][\"ConnectLinkStatus\"];\n /** @description Stable ref of the connection created by consuming this link, or `null`. */\n consumed_connection_ref: string | null;\n /** @description Unix timestamp in milliseconds. */\n expires_at: number;\n /** @description Unix timestamp in milliseconds. */\n created_at: number;\n };\n ConnectLinkRevokeResult: {\n id: string;\n /** @constant */\n status: \"revoked\";\n };\n ChannelConnection: {\n id: string;\n channel_type: string;\n label: string | null;\n state: components[\"schemas\"][\"ChannelConnectionState\"];\n /** @description Privacy-preserving identity handle (e.g. a masked phone number). */\n masked_identity: string;\n /** @description Unix timestamp in milliseconds, or `null` if never active. */\n last_activity_at: number | null;\n /** @description Linked helpdesk channel connection ID, or `null`. */\n helpdesk_connection_id: string | null;\n };\n ChannelConnectionDisconnectResult: {\n id: string;\n /** @constant */\n state: \"disconnected\";\n };\n ApiResponse_PostCreateResult: components[\"schemas\"][\"Envelope_PostCreateResult\"];\n ApiResponse_PostDetail: components[\"schemas\"][\"Envelope_PostDetail\"];\n ApiResponse_Success: components[\"schemas\"][\"Envelope_Success\"];\n ApiResponse_ScheduleResult: components[\"schemas\"][\"Envelope_ScheduleResult\"];\n ApiResponse_PublishResult: components[\"schemas\"][\"Envelope_PublishResult\"];\n ApiResponse_ChannelArray: components[\"schemas\"][\"Envelope_ChannelArray\"];\n ApiResponse_EmailSendResult: components[\"schemas\"][\"Envelope_EmailSendResult\"];\n ApiResponse_EmailSend: components[\"schemas\"][\"Envelope_EmailSend\"];\n ApiResponse_BatchSendSummary: components[\"schemas\"][\"Envelope_BatchSendSummary\"];\n ApiResponse_EmailTemplateArray: components[\"schemas\"][\"Envelope_EmailTemplateArray\"];\n ApiResponse_EmailTemplateDetail: components[\"schemas\"][\"Envelope_EmailTemplateDetail\"];\n ApiResponse_Contact: components[\"schemas\"][\"Envelope_Contact\"];\n ApiResponse_ContactCreateResult: components[\"schemas\"][\"Envelope_ContactCreateResult\"];\n ApiResponse_ContactUpdateResult: components[\"schemas\"][\"Envelope_ContactUpdateResult\"];\n ApiResponse_ContactRemoveResult: components[\"schemas\"][\"Envelope_ContactRemoveResult\"];\n ApiResponse_ContactNoteResult: components[\"schemas\"][\"Envelope_ContactNoteResult\"];\n ApiResponse_ImportContactsResult: components[\"schemas\"][\"Envelope_ImportContactsResult\"];\n ApiResponse_Deal: components[\"schemas\"][\"Envelope_Deal\"];\n ApiResponse_DealCreateResult: components[\"schemas\"][\"Envelope_DealCreateResult\"];\n ApiResponse_DealUpdateResult: components[\"schemas\"][\"Envelope_DealUpdateResult\"];\n ApiResponse_DealRemoveResult: components[\"schemas\"][\"Envelope_DealRemoveResult\"];\n ApiResponse_Booking: components[\"schemas\"][\"Envelope_Booking\"];\n ApiResponse_BookingServiceArray: components[\"schemas\"][\"Envelope_BookingServiceArray\"];\n ApiResponse_BookingResourceArray: components[\"schemas\"][\"Envelope_BookingResourceArray\"];\n ApiResponse_BookingSlotArray: components[\"schemas\"][\"Envelope_BookingSlotArray\"];\n ApiResponse_BookingScheduleDayArray: components[\"schemas\"][\"Envelope_BookingScheduleDayArray\"];\n ApiResponse_BookingCreateResult: components[\"schemas\"][\"Envelope_BookingCreateResult\"];\n ApiResponse_BookingActionResult: components[\"schemas\"][\"Envelope_BookingActionResult\"];\n ApiResponse_BookingRescheduleResult: components[\"schemas\"][\"Envelope_BookingRescheduleResult\"];\n ApiResponse_ManageSummary: components[\"schemas\"][\"Envelope_ManageSummary\"];\n ApiResponse_PortalLoginStartResult: components[\"schemas\"][\"Envelope_PortalLoginStartResult\"];\n ApiResponse_PortalSession: components[\"schemas\"][\"Envelope_PortalSession\"];\n ApiResponse_PortalProfile: components[\"schemas\"][\"Envelope_PortalProfile\"];\n ApiResponse_PortalBookings: components[\"schemas\"][\"Envelope_PortalBookings\"];\n ApiResponse_PortalExport: components[\"schemas\"][\"Envelope_PortalExport\"];\n ApiResponse_GdprExportRequest: components[\"schemas\"][\"Envelope_GdprExportRequest\"];\n ApiResponse_GdprExportArray: components[\"schemas\"][\"Envelope_GdprExportArray\"];\n ApiResponse_GdprExport: components[\"schemas\"][\"Envelope_GdprExport\"];\n ApiResponse_ScanCreateResult: components[\"schemas\"][\"Envelope_ScanCreateResult\"];\n ApiResponse_ScanCompanyArray: components[\"schemas\"][\"Envelope_ScanCompanyArray\"];\n ApiResponse_ScanJob: components[\"schemas\"][\"Envelope_ScanJob\"];\n ApiResponse_ConsentResult: components[\"schemas\"][\"Envelope_ConsentResult\"];\n ApiResponse_ConsentRecordArray: components[\"schemas\"][\"Envelope_ConsentRecordArray\"];\n ApiResponse_WorkspaceArray: components[\"schemas\"][\"Envelope_WorkspaceArray\"];\n ApiResponse_HelpdeskConversation: components[\"schemas\"][\"Envelope_HelpdeskConversation\"];\n ApiResponse_HelpdeskConversationUpdateResult: components[\"schemas\"][\"Envelope_HelpdeskConversationUpdateResult\"];\n ApiResponse_HelpdeskReplyCreateResult: components[\"schemas\"][\"Envelope_HelpdeskReplyCreateResult\"];\n ApiResponse_WebhookEndpoint: components[\"schemas\"][\"Envelope_WebhookEndpoint\"];\n ApiResponse_WebhookEndpointArray: components[\"schemas\"][\"Envelope_WebhookEndpointArray\"];\n ApiResponse_WebhookDeleteResult: components[\"schemas\"][\"Envelope_WebhookDeleteResult\"];\n ApiResponse_WebhookDeliveryArray: components[\"schemas\"][\"Envelope_WebhookDeliveryArray\"];\n ApiResponse_WebhookTestResult: components[\"schemas\"][\"Envelope_WebhookTestResult\"];\n ApiResponse_ConnectLinkCreateResult: components[\"schemas\"][\"Envelope_ConnectLinkCreateResult\"];\n ApiResponse_ConnectLinkArray: components[\"schemas\"][\"Envelope_ConnectLinkArray\"];\n ApiResponse_ConnectLinkRevokeResult: components[\"schemas\"][\"Envelope_ConnectLinkRevokeResult\"];\n ApiResponse_ChannelConnectionArray: components[\"schemas\"][\"Envelope_ChannelConnectionArray\"];\n ApiResponse_ChannelConnectionDisconnectResult: components[\"schemas\"][\"Envelope_ChannelConnectionDisconnectResult\"];\n PaginatedResponse_Post: {\n data: components[\"schemas\"][\"Post\"][];\n pagination: components[\"schemas\"][\"Pagination\"];\n };\n PaginatedResponse_Contact: {\n data: components[\"schemas\"][\"Contact\"][];\n pagination: components[\"schemas\"][\"Pagination\"];\n };\n PaginatedResponse_Activity: {\n data: components[\"schemas\"][\"Activity\"][];\n pagination: components[\"schemas\"][\"Pagination\"];\n };\n PaginatedResponse_Deal: {\n data: components[\"schemas\"][\"Deal\"][];\n pagination: components[\"schemas\"][\"Pagination\"];\n };\n PaginatedResponse_Booking: {\n data: components[\"schemas\"][\"Booking\"][];\n pagination: components[\"schemas\"][\"BookingsPagination\"];\n };\n PaginatedResponse_HelpdeskConversation: {\n data: components[\"schemas\"][\"HelpdeskConversation\"][];\n pagination: components[\"schemas\"][\"Pagination\"];\n };\n PaginatedResponse_HelpdeskMessage: {\n data: components[\"schemas\"][\"HelpdeskMessage\"][];\n pagination: components[\"schemas\"][\"Pagination\"];\n };\n PaginatedResponse_ConnectLink: {\n data: components[\"schemas\"][\"ConnectLink\"][];\n pagination: components[\"schemas\"][\"Pagination\"];\n };\n PaginatedResponse_ChannelConnection: {\n data: components[\"schemas\"][\"ChannelConnection\"][];\n pagination: components[\"schemas\"][\"Pagination\"];\n };\n Envelope_PostCreateResult: {\n data: components[\"schemas\"][\"PostCreateResult\"];\n };\n Envelope_PostDetail: {\n data: components[\"schemas\"][\"PostDetail\"];\n };\n Envelope_Success: {\n data: components[\"schemas\"][\"Success\"];\n };\n Envelope_ScheduleResult: {\n data: components[\"schemas\"][\"ScheduleResult\"];\n };\n Envelope_PublishResult: {\n data: components[\"schemas\"][\"PublishResult\"];\n };\n Envelope_ChannelArray: {\n data: components[\"schemas\"][\"Channel\"][];\n };\n Envelope_EmailSendResult: {\n data: components[\"schemas\"][\"EmailSendResult\"];\n };\n Envelope_EmailSend: {\n data: components[\"schemas\"][\"EmailSend\"];\n };\n Envelope_BatchSendSummary: {\n data: components[\"schemas\"][\"BatchSendSummary\"];\n };\n Envelope_EmailTemplateArray: {\n data: components[\"schemas\"][\"EmailTemplate\"][];\n };\n Envelope_EmailTemplateDetail: {\n data: components[\"schemas\"][\"EmailTemplateDetail\"];\n };\n Envelope_Contact: {\n data: components[\"schemas\"][\"Contact\"];\n };\n Envelope_ContactCreateResult: {\n data: components[\"schemas\"][\"ContactCreateResult\"];\n };\n Envelope_ContactUpdateResult: {\n data: components[\"schemas\"][\"ContactUpdateResult\"];\n };\n Envelope_ContactRemoveResult: {\n data: components[\"schemas\"][\"ContactRemoveResult\"];\n };\n Envelope_ContactNoteResult: {\n data: components[\"schemas\"][\"ContactNoteResult\"];\n };\n Envelope_ImportContactsResult: {\n data: components[\"schemas\"][\"ImportContactsResult\"];\n };\n Envelope_Deal: {\n data: components[\"schemas\"][\"Deal\"];\n };\n Envelope_DealCreateResult: {\n data: components[\"schemas\"][\"DealCreateResult\"];\n };\n Envelope_DealUpdateResult: {\n data: components[\"schemas\"][\"DealUpdateResult\"];\n };\n Envelope_DealRemoveResult: {\n data: components[\"schemas\"][\"DealRemoveResult\"];\n };\n Envelope_Booking: {\n data: components[\"schemas\"][\"Booking\"];\n };\n Envelope_BookingServiceArray: {\n data: components[\"schemas\"][\"BookingService\"][];\n };\n Envelope_BookingResourceArray: {\n data: components[\"schemas\"][\"BookingResource\"][];\n };\n Envelope_BookingSlotArray: {\n data: components[\"schemas\"][\"BookingSlot\"][];\n };\n Envelope_BookingScheduleDayArray: {\n data: components[\"schemas\"][\"BookingScheduleDay\"][];\n };\n Envelope_BookingCreateResult: {\n data: components[\"schemas\"][\"BookingCreateResult\"];\n };\n Envelope_BookingActionResult: {\n data: components[\"schemas\"][\"BookingActionResult\"];\n };\n Envelope_BookingRescheduleResult: {\n data: components[\"schemas\"][\"BookingRescheduleResult\"];\n };\n Envelope_ManageSummary: {\n data: components[\"schemas\"][\"ManageSummary\"];\n };\n PortalLoginStartInput: {\n /**\n * Format: email\n * @description The address the code is sent to.\n */\n email: string;\n /** @description Locale for the e-mail (e.g. `nb`, `en`); the workspace default when omitted. */\n locale?: string;\n };\n /** @description Always `sent`, whether or not the address is a known contact — the route is enumeration-safe by design. */\n PortalLoginStartResult: {\n /** @constant */\n status: \"sent\";\n };\n PortalVerifyInput: {\n /** Format: email */\n email: string;\n /** @description The one-time code from the e-mail. */\n code: string;\n };\n PortalContactSummary: {\n contact_id: string;\n first_name: string | null;\n };\n /** @description A portal session. `session_token` is a bearer credential for ONE contact — keep it in an HttpOnly cookie on the site's server and never hand it to the browser. */\n PortalSession: {\n session_token: string;\n /** @description Unix timestamp in milliseconds. */\n expires_at: number;\n contact: components[\"schemas\"][\"PortalContactSummary\"];\n };\n PortalFamilyMember: {\n name: string;\n birth_year: number;\n };\n /** @description A person the contact books for — a child, a pet — with no login of its own. */\n PortalPerson: {\n person_id: string;\n name: string;\n birth_year: number | null;\n relation_type: components[\"schemas\"][\"RelationType\"];\n relation_label: string | null;\n notes: string | null;\n /** @description False for a person the customer removed or that was promoted to its own contact; `me` returns active persons only, the export returns all. */\n active: boolean;\n };\n /** @description The workspace's own words for the person concept, e.g. `\"Barn\"`. */\n PortalLabels: {\n person: string;\n persons: string;\n };\n PortalProfile: {\n contact_id: string;\n email: string;\n first_name: string | null;\n last_name: string | null;\n phone: string | null;\n family: components[\"schemas\"][\"PortalFamilyMember\"][];\n persons: components[\"schemas\"][\"PortalPerson\"][];\n labels: components[\"schemas\"][\"PortalLabels\"];\n marketing_consent: boolean;\n /** @description Unix timestamp in milliseconds. */\n created_at: number;\n };\n /** @description Only the supplied fields change. */\n PortalProfilePatch: {\n first_name?: string;\n last_name?: string;\n /** @description `null` clears the number. */\n phone?: string | null;\n /** @description Replaces the whole list. */\n family?: components[\"schemas\"][\"PortalFamilyMember\"][];\n /** @description Records a `marketing_email` consent change with source `portal`. */\n marketing_consent?: boolean;\n };\n PortalBooking: {\n booking_id: string;\n status: components[\"schemas\"][\"BookingStatus\"];\n /** @description Unix timestamp in milliseconds. */\n start_ts: number;\n /** @description Unix timestamp in milliseconds. */\n end_ts: number;\n service_id: string | null;\n service_name: string | null;\n resource_id: string | null;\n resource_name: string | null;\n booked_for_name: string | null;\n /** @description Integer øre, or `null` when the service has no price. */\n amount_ore: number | null;\n notes: string | null;\n /** @description Present only while the booking is upcoming and manageable; opens the site's manage page. */\n manage_token: string | null;\n can_manage: boolean;\n };\n PortalBookings: {\n upcoming: components[\"schemas\"][\"PortalBooking\"][];\n past: components[\"schemas\"][\"PortalBooking\"][];\n };\n PortalConsentRecord: {\n consent_type: string;\n granted: boolean;\n /** @description Unix timestamp in milliseconds, or `null`. */\n granted_at: number | null;\n /** @description Unix timestamp in milliseconds, or `null`. */\n revoked_at: number | null;\n source: string;\n };\n /** @description A relation the exporting contact is a party to; only the counterpart's display name is exposed. */\n PortalExportRelation: {\n /** @enum {string} */\n direction: \"outgoing\" | \"incoming\";\n type: components[\"schemas\"][\"RelationType\"];\n custom_label: string | null;\n /** @description Unix timestamp in milliseconds. */\n since: number | null;\n note: string | null;\n counterpart_name: string;\n };\n /** @description Everything the workspace holds about the signed-in contact (GDPR Art. 15). */\n PortalExport: {\n /** @description Unix timestamp in milliseconds. */\n exported_at: number;\n contact: components[\"schemas\"][\"PortalProfile\"];\n family: components[\"schemas\"][\"PortalFamilyMember\"][];\n consents: components[\"schemas\"][\"PortalConsentRecord\"][];\n bookings: components[\"schemas\"][\"PortalBooking\"][];\n relations: components[\"schemas\"][\"PortalExportRelation\"][];\n };\n Envelope_PortalLoginStartResult: {\n data: components[\"schemas\"][\"PortalLoginStartResult\"];\n };\n Envelope_PortalSession: {\n data: components[\"schemas\"][\"PortalSession\"];\n };\n Envelope_PortalProfile: {\n data: components[\"schemas\"][\"PortalProfile\"];\n };\n Envelope_PortalBookings: {\n data: components[\"schemas\"][\"PortalBookings\"];\n };\n Envelope_PortalExport: {\n data: components[\"schemas\"][\"PortalExport\"];\n };\n /** @description Provide exactly one of `url`, `orgnr`, or `name`. */\n ScanCreateInput: {\n url?: string;\n orgnr?: string;\n name?: string;\n } & (unknown | unknown | unknown);\n ScanCreateResult: {\n id: string;\n status: string;\n message?: string;\n };\n ScanCompany: {\n orgnr: string;\n name: string;\n org_form: string | null;\n industry: string | null;\n city: string | null;\n website: string | null;\n };\n ScanJob: {\n id: string;\n /** @description pending | running | done | failed */\n status: string;\n input: components[\"schemas\"][\"ScanCreateInput\"];\n resolved: {\n orgnr?: string;\n companyName?: string;\n websiteUrl?: string;\n } | null;\n /** @description Versioned findings payload (see the SDK `ScanResultPayload` type); additive per `version`. The stable core is documented below; further sections (registry, signals, pagespeed, seo, ai, gdpr, mailAuth, httpsOk) evolve additively. */\n result:\n | ({\n version: number;\n /** @description Weighted composite score (0-100); null when unmeasurable. */\n nettskaar: number | null;\n /** @description Per-axis 0-100 scores; null axes were unmeasurable. */\n subScores: {\n fart: number | null;\n google: number | null;\n ai: number | null;\n trygghet: number | null;\n omdomme: number | null;\n };\n } & {\n [key: string]: unknown;\n })\n | null;\n /** @description Public-safe failure code (company_not_found, no_website, …). */\n error: string | null;\n /** Format: date-time */\n created_at: string | null;\n /** Format: date-time */\n finished_at: string | null;\n };\n Envelope_ScanCreateResult: {\n data: components[\"schemas\"][\"ScanCreateResult\"];\n };\n Envelope_ScanCompanyArray: {\n data: components[\"schemas\"][\"ScanCompany\"][];\n };\n Envelope_ScanJob: {\n data: components[\"schemas\"][\"ScanJob\"];\n };\n Envelope_GdprExportRequest: {\n data: components[\"schemas\"][\"GdprExportRequest\"];\n };\n Envelope_GdprExportArray: {\n data: components[\"schemas\"][\"GdprExport\"][];\n };\n Envelope_GdprExport: {\n data: components[\"schemas\"][\"GdprExport\"];\n };\n Envelope_ConsentResult: {\n data: components[\"schemas\"][\"ConsentResult\"];\n };\n Envelope_ConsentRecordArray: {\n data: components[\"schemas\"][\"ConsentRecord\"][];\n };\n Envelope_WorkspaceArray: {\n data: components[\"schemas\"][\"Workspace\"][];\n };\n Envelope_HelpdeskConversation: {\n data: components[\"schemas\"][\"HelpdeskConversation\"];\n };\n Envelope_HelpdeskConversationUpdateResult: {\n data: components[\"schemas\"][\"HelpdeskConversationUpdateResult\"];\n };\n Envelope_HelpdeskReplyCreateResult: {\n data: components[\"schemas\"][\"HelpdeskReplyCreateResult\"];\n };\n Envelope_WebhookEndpoint: {\n data: components[\"schemas\"][\"WebhookEndpoint\"];\n };\n Envelope_WebhookEndpointArray: {\n data: components[\"schemas\"][\"WebhookEndpoint\"][];\n };\n Envelope_WebhookDeleteResult: {\n data: components[\"schemas\"][\"WebhookDeleteResult\"];\n };\n IssueCapabilityConfirmationInput: {\n /** @description Confirmable capability to mint a token for. */\n capability_id: string;\n /** @description Concrete `/api/v1/...` path to bind the token to. Optional when the capability has exactly one API target; required when it has several. */\n api_path?: string;\n /** @description Values for the capability path template's parameters. */\n path_params?: {\n [key: string]: string | number | boolean;\n };\n /** @description The exact `Idempotency-Key` the confirmed write will send. The token is bound to it. */\n idempotency_key?: string;\n /** @description Human-readable description of the approved action, retained for audit. */\n preview_summary: string;\n /**\n * @description Asserts that a human on the caller's side approved this specific action.\n * @constant\n */\n user_approved: true;\n };\n CapabilityConfirmation: {\n /** @description Send as the `X-Capability-Confirmation` header on the write. */\n confirmation_token: string;\n /** @constant */\n token_type: \"medal_capability_confirmation\";\n capability_id: string;\n method: string;\n path: string;\n required_scopes: string[];\n idempotency_key: string | null;\n expires_in: number;\n /** Format: date-time */\n expires_at: string;\n preview_summary: string;\n };\n ApiResponse_CapabilityConfirmation: components[\"schemas\"][\"Envelope_CapabilityConfirmation\"];\n Envelope_CapabilityConfirmation: {\n data: components[\"schemas\"][\"CapabilityConfirmation\"];\n };\n Envelope_WebhookDeliveryArray: {\n data: components[\"schemas\"][\"WebhookDelivery\"][];\n };\n Envelope_WebhookTestResult: {\n data: components[\"schemas\"][\"WebhookTestResult\"];\n };\n Envelope_ConnectLinkCreateResult: {\n data: components[\"schemas\"][\"ConnectLinkCreateResult\"];\n };\n /**\n * @deprecated\n * @description Deprecated — `listChannelConnectLinks` responds with `PaginatedResponse_ConnectLink`. Retained for backwards compatibility with consumers of the generated contract types.\n */\n Envelope_ConnectLinkArray: {\n data: components[\"schemas\"][\"ConnectLink\"][];\n };\n Envelope_ConnectLinkRevokeResult: {\n data: components[\"schemas\"][\"ConnectLinkRevokeResult\"];\n };\n /**\n * @deprecated\n * @description Deprecated — `listChannelConnections` responds with `PaginatedResponse_ChannelConnection`. Retained for backwards compatibility with consumers of the generated contract types.\n */\n Envelope_ChannelConnectionArray: {\n data: components[\"schemas\"][\"ChannelConnection\"][];\n };\n Envelope_ChannelConnectionDisconnectResult: {\n data: components[\"schemas\"][\"ChannelConnectionDisconnectResult\"];\n };\n /**\n * @description How a person or a relation relates to a contact.\n * @enum {string}\n */\n RelationType: \"guardian\" | \"owner\" | \"employer\" | \"caregiver\" | \"partner\" | \"custom\";\n /** @description A person a contact books for — a child, a pet, an employee. No login of their own. */\n ContactPerson: {\n person_id: string;\n contact_id: string;\n name: string;\n birth_year: number | null;\n relation_type: components[\"schemas\"][\"RelationType\"];\n relation_label: string | null;\n notes: string | null;\n active: boolean;\n promoted_to_contact_id: string | null;\n /** Format: date-time */\n created_at: string;\n /** Format: date-time */\n updated_at: string;\n };\n CreateContactPersonInput: {\n contact_id: string;\n name: string;\n birth_year?: number;\n relation_type: components[\"schemas\"][\"RelationType\"];\n relation_label?: string;\n notes?: string;\n };\n /** @description One directional relation between two contacts. */\n ContactRelation: {\n relation_id: string;\n from_contact_id: string;\n to_contact_id: string;\n type: components[\"schemas\"][\"RelationType\"];\n custom_label: string | null;\n /** @description Unix timestamp in milliseconds. */\n since: number | null;\n note: string | null;\n /** @description Empty string when the counterpart contact no longer exists. */\n counterpart_name: string;\n /** Format: date-time */\n created_at: string;\n };\n /** @description Relations a contact holds, split by direction. */\n ContactRelations: {\n outgoing: components[\"schemas\"][\"ContactRelation\"][];\n incoming: components[\"schemas\"][\"ContactRelation\"][];\n };\n CreateContactRelationInput: {\n from_contact_id: string;\n to_contact_id: string;\n type: components[\"schemas\"][\"RelationType\"];\n custom_label?: string;\n /** @description Unix timestamp in milliseconds. */\n since?: number;\n note?: string;\n };\n CreateContactRelationResult: {\n relation_id: string;\n };\n /** @enum {string} */\n BookingEventStatus: \"draft\" | \"open\" | \"closed\" | \"completed\" | \"cancelled\";\n /** @enum {string} */\n BookingEventTemplateKey: \"kindergarten_visit\" | \"company_day\" | \"class\" | \"open_day\" | \"custom\";\n /** @description An arrangement — a scheduled group session bookings register against. */\n BookingEvent: {\n event_id: string;\n template_id: string;\n host_id: string | null;\n /**\n * Format: date\n * @description yyyy-mm-dd in the workspace time zone.\n */\n date: string;\n window_start_minute: number;\n window_end_minute: number;\n /** @enum {string} */\n place: \"at_host\" | \"in_house\";\n capacity: number;\n minimum: number;\n registered_count: number;\n service_ids: string[];\n resource_ids: string[];\n price_override_ore: number | null;\n status: components[\"schemas\"][\"BookingEventStatus\"];\n /** Format: date-time */\n registration_closes_at: string;\n slug: string;\n /** Format: date-time */\n created_at: string;\n /** Format: date-time */\n updated_at: string;\n };\n CreateBookingEventInput: {\n template_key: components[\"schemas\"][\"BookingEventTemplateKey\"];\n host_id?: string;\n /** Format: date */\n date: string;\n window_start_minute: number;\n window_end_minute?: number;\n /** @enum {string} */\n place: \"at_host\" | \"in_house\";\n capacity?: number;\n minimum?: number;\n service_ids: string[];\n resource_ids: string[];\n };\n ApiResponse_ContactPersonArray: components[\"schemas\"][\"Envelope_ContactPersonArray\"];\n ApiResponse_ContactPerson: components[\"schemas\"][\"Envelope_ContactPerson\"];\n ApiResponse_ContactRelations: components[\"schemas\"][\"Envelope_ContactRelations\"];\n ApiResponse_CreateContactRelationResult: components[\"schemas\"][\"Envelope_CreateContactRelationResult\"];\n ApiResponse_BookingEventArray: components[\"schemas\"][\"Envelope_BookingEventArray\"];\n ApiResponse_BookingEvent: components[\"schemas\"][\"Envelope_BookingEvent\"];\n Envelope_ContactPersonArray: {\n data: components[\"schemas\"][\"ContactPerson\"][];\n };\n Envelope_ContactPerson: {\n data: components[\"schemas\"][\"ContactPerson\"];\n };\n Envelope_ContactRelations: {\n data: components[\"schemas\"][\"ContactRelations\"];\n };\n Envelope_CreateContactRelationResult: {\n data: components[\"schemas\"][\"CreateContactRelationResult\"];\n };\n Envelope_BookingEventArray: {\n data: components[\"schemas\"][\"BookingEvent\"][];\n };\n Envelope_BookingEvent: {\n data: components[\"schemas\"][\"BookingEvent\"];\n };\n };\n responses: {\n /** @description API error. */\n ApiError: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiError\"];\n };\n };\n };\n parameters: {\n Id: string;\n Slug: string;\n /** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */\n ManageToken: string;\n /** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */\n PortalSession: string;\n Cursor: string;\n Limit: number;\n };\n requestBodies: never;\n headers: never;\n pathItems: never;\n}\nexport type $defs = Record<string, never>;\nexport interface operations {\n listPosts: {\n parameters: {\n query?: {\n limit?: components[\"parameters\"][\"Limit\"];\n cursor?: components[\"parameters\"][\"Cursor\"];\n status?: string;\n type?: components[\"schemas\"][\"PostType\"];\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Posts page. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"PaginatedResponse_Post\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n createPost: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreatePostInput\"];\n };\n };\n responses: {\n /** @description Created post reference. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_PostCreateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listPostChannels: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Connected channels. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ChannelArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getPost: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Post detail. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_PostDetail\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n deletePost: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Delete result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_Success\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n updatePost: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdatePostInput\"];\n };\n };\n responses: {\n /** @description Update result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_Success\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n schedulePost: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"SchedulePostInput\"];\n };\n };\n responses: {\n /** @description Schedule result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ScheduleResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n publishPost: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Publish result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_PublishResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n sendEmail: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"SendEmailInput\"];\n };\n };\n responses: {\n /** @description Email queued. */\n 202: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_EmailSendResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n batchSendEmails: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"BatchSendInput\"];\n };\n };\n responses: {\n /** @description Batch queued. */\n 202: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BatchSendSummary\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listEmailTemplates: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Active templates. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_EmailTemplateArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getEmailTemplate: {\n parameters: {\n query?: {\n locale?: string;\n fallback_locale?: string;\n };\n header?: never;\n path: {\n slug: components[\"parameters\"][\"Slug\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Email template detail. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_EmailTemplateDetail\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getEmailSend: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Sent email status. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_EmailSend\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listContacts: {\n parameters: {\n query?: {\n limit?: components[\"parameters\"][\"Limit\"];\n cursor?: components[\"parameters\"][\"Cursor\"];\n status?: components[\"schemas\"][\"ContactStatus\"];\n email_status?: components[\"schemas\"][\"EmailStatus\"];\n /** @description Comma-separated label IDs. */\n label_ids?: string;\n search?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Contacts page. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"PaginatedResponse_Contact\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n createContact: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateContactInput\"];\n };\n };\n responses: {\n /** @description Created contact reference. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ContactCreateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n importContacts: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n contacts: components[\"schemas\"][\"ImportContactInput\"][];\n };\n };\n };\n responses: {\n /** @description Import summary. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ImportContactsResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getContact: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Contact. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_Contact\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n deleteContact: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Delete result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ContactRemoveResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n updateContact: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateContactInput\"];\n };\n };\n responses: {\n /** @description Update result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ContactUpdateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listContactActivities: {\n parameters: {\n query?: {\n limit?: components[\"parameters\"][\"Limit\"];\n cursor?: components[\"parameters\"][\"Cursor\"];\n };\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Contact activities page. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"PaginatedResponse_Activity\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n addContactNote: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"AddNoteInput\"];\n };\n };\n responses: {\n /** @description Created note reference. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ContactNoteResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listDeals: {\n parameters: {\n query?: {\n limit?: components[\"parameters\"][\"Limit\"];\n cursor?: components[\"parameters\"][\"Cursor\"];\n status?: components[\"schemas\"][\"DealStatus\"];\n search?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Deals page. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"PaginatedResponse_Deal\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n createDeal: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateDealInput\"];\n };\n };\n responses: {\n /** @description Created deal reference. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_DealCreateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getDeal: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Deal. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_Deal\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n deleteDeal: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Delete result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_DealRemoveResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n updateDeal: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateDealInput\"];\n };\n };\n responses: {\n /** @description Update result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_DealUpdateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listBookings: {\n parameters: {\n query?: {\n limit?: components[\"parameters\"][\"Limit\"];\n cursor?: components[\"parameters\"][\"Cursor\"];\n /** @description Only bookings starting at or after this instant. */\n from_ts?: components[\"schemas\"][\"BookingTimestampInput\"];\n /** @description Only bookings starting before this instant. */\n to_ts?: components[\"schemas\"][\"BookingTimestampInput\"];\n status?: components[\"schemas\"][\"BookingStatus\"];\n resource_id?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Bookings page. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"PaginatedResponse_Booking\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n createBooking: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateBookingInput\"];\n };\n };\n responses: {\n /** @description Created bookings, in request order. */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingCreateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listBookingServices: {\n parameters: {\n query?: {\n /** @description Include services with `active: false`. Defaults to active-only. */\n include_inactive?: boolean;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Bookable service catalogue. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingServiceArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listBookingResources: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Bookable resources — staff, rooms, and equipment. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingResourceArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listBookingAvailability: {\n parameters: {\n query: {\n service_id: string;\n /** @description Start of the window. */\n from_ts: components[\"schemas\"][\"BookingTimestampInput\"];\n /** @description End of the window; must be after `from_ts`. */\n to_ts: components[\"schemas\"][\"BookingTimestampInput\"];\n /** @description Restrict slots to one resource. */\n resource_id?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Free slots. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingSlotArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listBookingSchedule: {\n parameters: {\n query: {\n service_id: string;\n /** @description Start of the window. */\n from_ts: components[\"schemas\"][\"BookingTimestampInput\"];\n /** @description End of the window; must be after `from_ts`. */\n to_ts: components[\"schemas\"][\"BookingTimestampInput\"];\n /** @description Restrict to one resource's hours. */\n resource_id?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Open dates. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingScheduleDayArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listContactPersons: {\n parameters: {\n query: {\n contact_id: string;\n include_inactive?: boolean;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Contact persons. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ContactPersonArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n createContactPerson: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateContactPersonInput\"];\n };\n };\n responses: {\n /** @description Created person. */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ContactPerson\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listContactRelations: {\n parameters: {\n query: {\n contact_id: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Outgoing and incoming relations. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ContactRelations\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n createContactRelation: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateContactRelationInput\"];\n };\n };\n responses: {\n /** @description Created relation id. */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_CreateContactRelationResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listBookingEvents: {\n parameters: {\n query: {\n /** @description Start of the window, `yyyy-mm-dd`, inclusive. */\n from: string;\n /** @description End of the window, `yyyy-mm-dd`, inclusive. */\n to: string;\n status?: components[\"schemas\"][\"BookingEventStatus\"];\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Arrangementer in the window. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingEventArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n createBookingEvent: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateBookingEventInput\"];\n };\n };\n responses: {\n /** @description Created arrangement. */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingEvent\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getBookingEvent: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Arrangement. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingEvent\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getBooking: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Booking. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_Booking\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n updateBooking: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateBookingInput\"];\n };\n };\n responses: {\n /** @description The updated booking. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_Booking\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n cancelBooking: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CancelBookingInput\"];\n };\n };\n responses: {\n /** @description Cancel result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingActionResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n rescheduleBooking: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"RescheduleBookingInput\"];\n };\n };\n responses: {\n /** @description Reschedule result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingRescheduleResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n markBookingNoShow: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description No-show result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingActionResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getManagedBooking: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */\n token: components[\"parameters\"][\"ManageToken\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Manage summary. An unknown token and a token belonging to another workspace both answer 404, so this is not an existence oracle. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ManageSummary\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n cancelManagedBooking: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */\n token: components[\"parameters\"][\"ManageToken\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CancelBookingInput\"];\n };\n };\n responses: {\n /** @description Cancel result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingActionResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n rescheduleManagedBooking: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */\n token: components[\"parameters\"][\"ManageToken\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"RescheduleBookingInput\"];\n };\n };\n responses: {\n /** @description Reschedule result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_BookingRescheduleResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n startPortalLogin: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"PortalLoginStartInput\"];\n };\n };\n responses: {\n /** @description Code queued (or silently not, for an unknown address). */\n 202: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_PortalLoginStartResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n verifyPortalLogin: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"PortalVerifyInput\"];\n };\n };\n responses: {\n /** @description The new session. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_PortalSession\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n logoutPortal: {\n parameters: {\n query?: never;\n header: {\n /** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */\n \"X-Portal-Session\": components[\"parameters\"][\"PortalSession\"];\n };\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Session revoked. */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getPortalProfile: {\n parameters: {\n query?: never;\n header: {\n /** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */\n \"X-Portal-Session\": components[\"parameters\"][\"PortalSession\"];\n };\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Profile. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_PortalProfile\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n updatePortalProfile: {\n parameters: {\n query?: never;\n header: {\n /** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */\n \"X-Portal-Session\": components[\"parameters\"][\"PortalSession\"];\n };\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"PortalProfilePatch\"];\n };\n };\n responses: {\n /** @description Updated profile. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_PortalProfile\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listPortalBookings: {\n parameters: {\n query?: never;\n header: {\n /** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */\n \"X-Portal-Session\": components[\"parameters\"][\"PortalSession\"];\n };\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Bookings. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_PortalBookings\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n exportPortalData: {\n parameters: {\n query?: never;\n header: {\n /** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */\n \"X-Portal-Session\": components[\"parameters\"][\"PortalSession\"];\n };\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description The export. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_PortalExport\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n deletePortalAccount: {\n parameters: {\n query?: never;\n header: {\n /** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */\n \"X-Portal-Session\": components[\"parameters\"][\"PortalSession\"];\n };\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Contact erased and session revoked. */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n requestGdprExport: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Export request reference. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_GdprExportRequest\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listGdprExports: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Export requests. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_GdprExportArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getGdprExport: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Export request. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_GdprExport\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n recordGdprConsent: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"RecordConsentInput\"];\n };\n };\n responses: {\n /** @description Consent reference. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ConsentResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getGdprConsent: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n email: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Consent records. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ConsentRecordArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n recordCookieConsent: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CookieConsentInput\"];\n };\n };\n responses: {\n /** @description Cookie consent result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"CookieConsentResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listWorkspaces: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Workspaces. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_WorkspaceArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listHelpdeskConversations: {\n parameters: {\n query?: {\n limit?: number;\n cursor?: components[\"parameters\"][\"Cursor\"];\n status?: components[\"schemas\"][\"HelpdeskConversationStatus\"];\n /** @description Only conversations assigned to this user. */\n assignee_user_id?: string;\n /** @description Match against visitor name/email. */\n requester?: string;\n /** @description Free-text search query. */\n query?: string;\n /** @description Comma-separated channel types (e.g. `widget,whatsapp`). */\n channels?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Conversations page. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"PaginatedResponse_HelpdeskConversation\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getHelpdeskConversation: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Conversation. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_HelpdeskConversation\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n updateHelpdeskConversation: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateHelpdeskConversationInput\"];\n };\n };\n responses: {\n /** @description Update result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_HelpdeskConversationUpdateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listHelpdeskConversationMessages: {\n parameters: {\n query?: {\n limit?: number;\n cursor?: components[\"parameters\"][\"Cursor\"];\n };\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Messages page. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"PaginatedResponse_HelpdeskMessage\"];\n };\n };\n /** @description Conversation not found. */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiError\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n createHelpdeskReply: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateHelpdeskReplyInput\"];\n };\n };\n responses: {\n /** @description Created reply reference. */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_HelpdeskReplyCreateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listWebhooks: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Webhook endpoints. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_WebhookEndpointArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n createWebhook: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateWebhookInput\"];\n };\n };\n responses: {\n /** @description Created endpoint, including the one-time `secret`. */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_WebhookEndpoint\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getWebhook: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Webhook endpoint. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_WebhookEndpoint\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n deleteWebhook: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Delete result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_WebhookDeleteResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n updateWebhook: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateWebhookInput\"];\n };\n };\n responses: {\n /** @description Updated endpoint. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_WebhookEndpoint\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listWebhookDeliveries: {\n parameters: {\n query?: {\n limit?: number;\n };\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Recent deliveries, most recent first. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_WebhookDeliveryArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n testWebhook: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Test delivery queued. */\n 202: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_WebhookTestResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n issueCapabilityConfirmation: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"IssueCapabilityConfirmationInput\"];\n };\n };\n responses: {\n /** @description Minted confirmation token. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_CapabilityConfirmation\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listChannelConnectLinks: {\n parameters: {\n query?: {\n /** @description Page size (default 50, capped at 100). */\n limit?: number;\n cursor?: components[\"parameters\"][\"Cursor\"];\n channel_type?: string;\n status?: components[\"schemas\"][\"ConnectLinkStatus\"];\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Connect links page. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"PaginatedResponse_ConnectLink\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n createChannelConnectLink: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateConnectLinkInput\"];\n };\n };\n responses: {\n /** @description Minted connect link, including the one-time `url`. */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ConnectLinkCreateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n revokeChannelConnectLink: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Revoke result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ConnectLinkRevokeResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n listChannelConnections: {\n parameters: {\n query?: {\n /** @description Page size (default 50, capped at 100). */\n limit?: number;\n cursor?: components[\"parameters\"][\"Cursor\"];\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Channel connections page. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"PaginatedResponse_ChannelConnection\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n disconnectChannelConnection: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Disconnect result. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ChannelConnectionDisconnectResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n createScan: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"ScanCreateInput\"];\n };\n };\n responses: {\n /** @description Scan job queued. */\n 202: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ScanCreateResult\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n searchScanCompanies: {\n parameters: {\n query: {\n q: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Registry matches (top 5, relevance-ranked). */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ScanCompanyArray\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n getScan: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n id: components[\"parameters\"][\"Id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Scan job status and, once done, the findings payload. */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ApiResponse_ScanJob\"];\n };\n };\n default: components[\"responses\"][\"ApiError\"];\n };\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}