@medalsocial/sdk 1.6.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +68 -0
- package/dist/openapi/medal-social.openapi.json +3097 -1489
- package/dist/pilot/index.d.mts +2 -2
- package/dist/pilot/index.d.ts +2 -2
- package/dist/src/index.d.mts +593 -23
- package/dist/src/index.d.ts +593 -23
- package/dist/src/index.js +472 -146
- package/dist/src/index.js.map +1 -1
- package/dist/src/index.mjs +471 -146
- package/dist/src/index.mjs.map +1 -1
- package/dist/src/openapi.generated.d.mts +905 -45
- package/dist/src/openapi.generated.d.ts +905 -45
- package/dist/src/openapi.generated.js.map +1 -1
- package/openapi/medal-social.openapi.yaml +944 -0
- package/package.json +18 -17
- package/skills/client/SKILL.md +2 -2
- package/skills/resources/SKILL.md +104 -3
|
@@ -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/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 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_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_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 /** @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 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 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/{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":[]}
|