smartletter 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/case.ts","../src/client.ts","../src/generated/operations.ts","../src/emails.ts","../src/webhooks/sha256.ts","../src/webhooks/verify.ts","../src/resources.ts","../src/index.ts"],"sourcesContent":["import type { KeyTree } from \"./generated/operations\";\n\n/**\n * Renomme les clés camelCase en clés du fil (snake_case) en suivant `tree`.\n * Seules les clés présentes dans l'arbre sont renommées : toute autre clé\n * (y compris déjà en snake_case) et le contenu des records libres passent tels quels.\n */\nexport function toWire(value: unknown, tree?: KeyTree): unknown {\n if (!tree || value === null || typeof value !== \"object\") return value;\n if (Array.isArray(value)) return value.map((item) => toWire(item, tree));\n if (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) return value;\n const out: Record<string, unknown> = {};\n for (const [key, v] of Object.entries(value as Record<string, unknown>)) {\n const node = tree[key];\n out[node ? node.wire : key] = node ? toWire(v, node.items ?? node.props) : v;\n }\n return out;\n}\n","import { toWire } from \"./case\";\nimport type { Operation } from \"./generated/operations\";\nimport type { ErrorResponse, RequestOptions, Response as SdkResponse } from \"./types\";\n\ndeclare const __VERSION__: string;\n\nconst UNRESOLVED_MESSAGE = \"Unable to fetch data. The request could not be resolved.\";\nconst DEFAULT_BASE_URL = \"https://api.smartletter.ai\";\n\nfunction env(name: string): string | undefined {\n return typeof process !== \"undefined\" ? process.env?.[name] || undefined : undefined;\n}\n\nfunction camel(snake: string): string {\n return snake.replace(/_([a-z0-9])/g, (_, c: string) => c.toUpperCase());\n}\n\nfunction applicationError(message: string, statusCode: number | null): ErrorResponse {\n return { name: \"application_error\", message, statusCode };\n}\n\nfunction isEmptyObject(value: unknown): boolean {\n return !!value && typeof value === \"object\" && !Array.isArray(value) && Object.keys(value).length === 0;\n}\n\nexport class Client {\n readonly key: string;\n readonly baseUrl: string;\n private readonly userAgent: string;\n\n constructor(key?: string, options: { baseUrl?: string; userAgent?: string } = {}) {\n const resendKey = env(\"RESEND_API_KEY\");\n const resolved =\n key || env(\"SMARTLETTER_API_KEY\") || (resendKey && /^(sl_|re_)/.test(resendKey) ? resendKey : undefined);\n if (!resolved) {\n throw new Error(\n 'Missing API key. Pass it to the constructor `new Smartletter(\"sl_123\")` or set SMARTLETTER_API_KEY.',\n );\n }\n if (resolved.startsWith(\"re_\")) {\n throw new Error(\"This is a Resend key (re_…). Create a Smartletter key (sl_…) in Settings → API keys.\");\n }\n this.key = resolved;\n this.baseUrl = (options.baseUrl || env(\"SMARTLETTER_BASE_URL\") || DEFAULT_BASE_URL).replace(/\\/+$/, \"\");\n this.userAgent = options.userAgent ?? `smartletter-node/${__VERSION__}`;\n }\n\n async call(\n op: Operation,\n args: Record<string, unknown> | unknown[] | BodyInit | undefined,\n options: RequestOptions = {},\n ): Promise<SdkResponse<unknown>> {\n const headers = new Headers(options.headers);\n headers.set(\"Authorization\", `Bearer ${this.key}`);\n headers.set(\"User-Agent\", this.userAgent);\n if (options.idempotencyKey) headers.set(\"Idempotency-Key\", options.idempotencyKey);\n\n let path = op.path;\n let rest = args as Record<string, unknown> | unknown[] | undefined;\n if (op.pathParams.length > 0 && !Array.isArray(args)) {\n const copy = { ...((args ?? {}) as Record<string, unknown>) };\n for (const wireName of op.pathParams) {\n const name = camel(wireName);\n const value = copy[name] ?? copy[wireName];\n if (value === undefined || value === null || value === \"\") {\n return {\n data: null,\n error: { name: \"missing_required_field\", statusCode: null, message: `Missing \\`${name}\\` field.` },\n headers: null,\n };\n }\n path = path.replace(`{${wireName}}`, encodeURIComponent(String(value)));\n delete copy[name];\n delete copy[wireName];\n }\n rest = copy;\n }\n\n let url = `${this.baseUrl}${path}`;\n let body: BodyInit | undefined;\n if (op.rawBody) {\n body = args as BodyInit | undefined;\n if (body !== undefined) headers.set(\"Content-Type\", \"application/octet-stream\");\n } else if (op.method === \"GET\") {\n const params = new URLSearchParams();\n const wire = (toWire(rest, op.query) ?? {}) as Record<string, unknown>;\n for (const [k, v] of Object.entries(wire)) {\n if (v === undefined || v === null) continue;\n params.set(k, String(v));\n }\n const qs = params.toString();\n if (qs) url += `?${qs}`;\n } else if (rest !== undefined && !isEmptyObject(rest)) {\n // Rien à envoyer (cancel, verify, publish…) : pas de corps, comme Resend. L'API lit un corps vide comme `{}`.\n const wire = op.bodyIsArray && Array.isArray(rest) ? rest.map((i) => toWire(i, op.body)) : toWire(rest, op.body);\n body = JSON.stringify(wire);\n headers.set(\"Content-Type\", \"application/json\");\n }\n\n const unresolved: SdkResponse<unknown> = {\n data: null,\n error: applicationError(UNRESOLVED_MESSAGE, null),\n headers: null,\n };\n\n let response: globalThis.Response;\n try {\n response = await fetch(url, { method: op.method, headers, body, signal: options.signal });\n } catch {\n return unresolved;\n }\n\n const responseHeaders = Object.fromEntries(response.headers);\n\n if (!response.ok) {\n let text: string;\n try {\n text = await response.text();\n } catch (err) {\n const message = err instanceof Error ? err.message : response.statusText;\n return { data: null, error: applicationError(message, response.status), headers: responseHeaders };\n }\n try {\n return { data: null, error: JSON.parse(text) as ErrorResponse, headers: responseHeaders };\n } catch {\n return {\n data: null,\n error: applicationError(\n \"Internal server error. We are unable to process your request right now, please try again later.\",\n response.status,\n ),\n headers: responseHeaders,\n };\n }\n }\n\n let text: string;\n try {\n text = await response.text();\n } catch {\n return unresolved;\n }\n if (op.responseType === \"text\") return { data: text, error: null, headers: responseHeaders };\n if (text === \"\") return { data: null, error: null, headers: responseHeaders } as unknown as SdkResponse<unknown>;\n try {\n return { data: JSON.parse(text), error: null, headers: responseHeaders };\n } catch {\n return { ...unresolved, headers: responseHeaders };\n }\n }\n}\n","// Generated by scripts/generate.ts from @smartletter/api-spec. Do not edit by hand.\n\nexport type KeyTree = { [camelKey: string]: { wire: string; props?: KeyTree; items?: KeyTree } };\n\nexport interface Operation {\n id: string;\n method: \"GET\" | \"POST\" | \"PATCH\" | \"DELETE\";\n path: string;\n pathParams: string[];\n body?: KeyTree;\n bodyIsArray?: boolean;\n /** Body is raw bytes (images.create), not JSON. */\n rawBody?: boolean;\n query?: KeyTree;\n paginated: boolean;\n idempotent: boolean;\n /** Response body is returned as text (non-JSON content type, e.g. CSV). */\n responseType?: \"text\";\n}\n\nexport const OPERATIONS: Record<string, Operation> = {\n \"emails.send\": {\n id: \"emails.send\",\n method: \"POST\",\n path: \"/emails\",\n pathParams: [],\n paginated: false,\n idempotent: true,\n body: {\n from: {\n wire: \"from\",\n },\n to: {\n wire: \"to\",\n },\n subject: {\n wire: \"subject\",\n },\n template: {\n wire: \"template\",\n props: {\n id: {\n wire: \"id\",\n },\n variables: {\n wire: \"variables\",\n },\n },\n },\n html: {\n wire: \"html\",\n },\n text: {\n wire: \"text\",\n },\n cc: {\n wire: \"cc\",\n },\n bcc: {\n wire: \"bcc\",\n },\n replyTo: {\n wire: \"reply_to\",\n },\n headers: {\n wire: \"headers\",\n },\n tags: {\n wire: \"tags\",\n items: {\n name: {\n wire: \"name\",\n },\n value: {\n wire: \"value\",\n },\n },\n },\n scheduledAt: {\n wire: \"scheduled_at\",\n },\n attachments: {\n wire: \"attachments\",\n items: {\n content: {\n wire: \"content\",\n },\n path: {\n wire: \"path\",\n },\n filename: {\n wire: \"filename\",\n },\n contentType: {\n wire: \"content_type\",\n },\n contentId: {\n wire: \"content_id\",\n },\n },\n },\n },\n },\n \"batch.send\": {\n id: \"batch.send\",\n method: \"POST\",\n path: \"/emails/batch\",\n pathParams: [],\n paginated: false,\n idempotent: true,\n bodyIsArray: true,\n body: {\n from: {\n wire: \"from\",\n },\n to: {\n wire: \"to\",\n },\n subject: {\n wire: \"subject\",\n },\n template: {\n wire: \"template\",\n props: {\n id: {\n wire: \"id\",\n },\n variables: {\n wire: \"variables\",\n },\n },\n },\n html: {\n wire: \"html\",\n },\n text: {\n wire: \"text\",\n },\n cc: {\n wire: \"cc\",\n },\n bcc: {\n wire: \"bcc\",\n },\n replyTo: {\n wire: \"reply_to\",\n },\n headers: {\n wire: \"headers\",\n },\n tags: {\n wire: \"tags\",\n items: {\n name: {\n wire: \"name\",\n },\n value: {\n wire: \"value\",\n },\n },\n },\n scheduledAt: {\n wire: \"scheduled_at\",\n },\n },\n },\n \"emails.list\": {\n id: \"emails.list\",\n method: \"GET\",\n path: \"/emails\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"emails.get\": {\n id: \"emails.get\",\n method: \"GET\",\n path: \"/emails/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"emails.update\": {\n id: \"emails.update\",\n method: \"PATCH\",\n path: \"/emails/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n scheduledAt: {\n wire: \"scheduled_at\",\n },\n },\n },\n \"emails.cancel\": {\n id: \"emails.cancel\",\n method: \"POST\",\n path: \"/emails/{id}/cancel\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"templates.create\": {\n id: \"templates.create\",\n method: \"POST\",\n path: \"/templates\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n alias: {\n wire: \"alias\",\n },\n from: {\n wire: \"from\",\n },\n subject: {\n wire: \"subject\",\n },\n replyTo: {\n wire: \"reply_to\",\n },\n html: {\n wire: \"html\",\n },\n text: {\n wire: \"text\",\n },\n variables: {\n wire: \"variables\",\n items: {\n key: {\n wire: \"key\",\n },\n type: {\n wire: \"type\",\n },\n fallbackValue: {\n wire: \"fallback_value\",\n },\n required: {\n wire: \"required\",\n },\n },\n },\n },\n },\n \"templates.list\": {\n id: \"templates.list\",\n method: \"GET\",\n path: \"/templates\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"templates.get\": {\n id: \"templates.get\",\n method: \"GET\",\n path: \"/templates/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"templates.update\": {\n id: \"templates.update\",\n method: \"PATCH\",\n path: \"/templates/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n alias: {\n wire: \"alias\",\n },\n from: {\n wire: \"from\",\n },\n subject: {\n wire: \"subject\",\n },\n replyTo: {\n wire: \"reply_to\",\n },\n html: {\n wire: \"html\",\n },\n text: {\n wire: \"text\",\n },\n variables: {\n wire: \"variables\",\n items: {\n key: {\n wire: \"key\",\n },\n type: {\n wire: \"type\",\n },\n fallbackValue: {\n wire: \"fallback_value\",\n },\n required: {\n wire: \"required\",\n },\n },\n },\n changeNote: {\n wire: \"change_note\",\n },\n },\n },\n \"templates.remove\": {\n id: \"templates.remove\",\n method: \"DELETE\",\n path: \"/templates/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"templates.publish\": {\n id: \"templates.publish\",\n method: \"POST\",\n path: \"/templates/{id}/publish\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n versionId: {\n wire: \"version_id\",\n },\n },\n },\n \"templates.duplicate\": {\n id: \"templates.duplicate\",\n method: \"POST\",\n path: \"/templates/{id}/duplicate\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"templates.versions\": {\n id: \"templates.versions\",\n method: \"GET\",\n path: \"/templates/{id}/versions\",\n pathParams: [\"id\"],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"newsletters.list\": {\n id: \"newsletters.list\",\n method: \"GET\",\n path: \"/newsletters\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n status: {\n wire: \"status\",\n },\n },\n },\n \"newsletters.create\": {\n id: \"newsletters.create\",\n method: \"POST\",\n path: \"/newsletters\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n subject: {\n wire: \"subject\",\n },\n preheader: {\n wire: \"preheader\",\n },\n segmentId: {\n wire: \"segment_id\",\n },\n topicId: {\n wire: \"topic_id\",\n },\n markdown: {\n wire: \"markdown\",\n },\n html: {\n wire: \"html\",\n },\n blocks: {\n wire: \"blocks\",\n items: {\n kind: {\n wire: \"kind\",\n },\n level: {\n wire: \"level\",\n },\n text: {\n wire: \"text\",\n },\n ordered: {\n wire: \"ordered\",\n },\n items: {\n wire: \"items\",\n },\n url: {\n wire: \"url\",\n },\n alt: {\n wire: \"alt\",\n },\n label: {\n wire: \"label\",\n },\n title: {\n wire: \"title\",\n },\n imageUrl: {\n wire: \"imageUrl\",\n },\n price: {\n wire: \"price\",\n },\n description: {\n wire: \"description\",\n },\n ctaLabel: {\n wire: \"ctaLabel\",\n },\n html: {\n wire: \"html\",\n },\n columns: {\n wire: \"columns\",\n },\n },\n },\n audienceFilterId: {\n wire: \"audience_filter_id\",\n },\n abTest: {\n wire: \"ab_test\",\n props: {\n variants: {\n wire: \"variants\",\n items: {\n subject: {\n wire: \"subject\",\n },\n preheader: {\n wire: \"preheader\",\n },\n },\n },\n samplePct: {\n wire: \"sample_pct\",\n },\n metric: {\n wire: \"metric\",\n },\n waitHours: {\n wire: \"wait_hours\",\n },\n winnerMode: {\n wire: \"winner_mode\",\n },\n },\n },\n },\n },\n \"newsletters.get\": {\n id: \"newsletters.get\",\n method: \"GET\",\n path: \"/newsletters/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"newsletters.update\": {\n id: \"newsletters.update\",\n method: \"PATCH\",\n path: \"/newsletters/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n subject: {\n wire: \"subject\",\n },\n preheader: {\n wire: \"preheader\",\n },\n topicId: {\n wire: \"topic_id\",\n },\n markdown: {\n wire: \"markdown\",\n },\n html: {\n wire: \"html\",\n },\n blocks: {\n wire: \"blocks\",\n items: {\n kind: {\n wire: \"kind\",\n },\n level: {\n wire: \"level\",\n },\n text: {\n wire: \"text\",\n },\n ordered: {\n wire: \"ordered\",\n },\n items: {\n wire: \"items\",\n },\n url: {\n wire: \"url\",\n },\n alt: {\n wire: \"alt\",\n },\n label: {\n wire: \"label\",\n },\n title: {\n wire: \"title\",\n },\n imageUrl: {\n wire: \"imageUrl\",\n },\n price: {\n wire: \"price\",\n },\n description: {\n wire: \"description\",\n },\n ctaLabel: {\n wire: \"ctaLabel\",\n },\n html: {\n wire: \"html\",\n },\n columns: {\n wire: \"columns\",\n },\n },\n },\n audienceFilterId: {\n wire: \"audience_filter_id\",\n },\n abTest: {\n wire: \"ab_test\",\n props: {\n variants: {\n wire: \"variants\",\n items: {\n subject: {\n wire: \"subject\",\n },\n preheader: {\n wire: \"preheader\",\n },\n },\n },\n samplePct: {\n wire: \"sample_pct\",\n },\n metric: {\n wire: \"metric\",\n },\n waitHours: {\n wire: \"wait_hours\",\n },\n winnerMode: {\n wire: \"winner_mode\",\n },\n },\n },\n },\n },\n \"newsletters.remove\": {\n id: \"newsletters.remove\",\n method: \"DELETE\",\n path: \"/newsletters/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"newsletters.duplicate\": {\n id: \"newsletters.duplicate\",\n method: \"POST\",\n path: \"/newsletters/{id}/duplicate\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"newsletters.review\": {\n id: \"newsletters.review\",\n method: \"GET\",\n path: \"/newsletters/{id}/review\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"newsletters.test\": {\n id: \"newsletters.test\",\n method: \"POST\",\n path: \"/newsletters/{id}/test\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"newsletters.send\": {\n id: \"newsletters.send\",\n method: \"POST\",\n path: \"/newsletters/{id}/send\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: true,\n body: {\n audienceLimit: {\n wire: \"audience_limit\",\n },\n },\n },\n \"newsletters.schedule\": {\n id: \"newsletters.schedule\",\n method: \"POST\",\n path: \"/newsletters/{id}/schedule\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: true,\n body: {\n scheduledAt: {\n wire: \"scheduled_at\",\n },\n audienceLimit: {\n wire: \"audience_limit\",\n },\n },\n },\n \"newsletters.unschedule\": {\n id: \"newsletters.unschedule\",\n method: \"POST\",\n path: \"/newsletters/{id}/unschedule\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"newsletters.pause\": {\n id: \"newsletters.pause\",\n method: \"POST\",\n path: \"/newsletters/{id}/pause\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"newsletters.resume\": {\n id: \"newsletters.resume\",\n method: \"POST\",\n path: \"/newsletters/{id}/resume\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"newsletters.sendMore\": {\n id: \"newsletters.sendMore\",\n method: \"POST\",\n path: \"/newsletters/{id}/send-more\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: true,\n body: {\n count: {\n wire: \"count\",\n },\n },\n },\n \"newsletters.report\": {\n id: \"newsletters.report\",\n method: \"GET\",\n path: \"/newsletters/{id}/report\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"newsletters.abWinner\": {\n id: \"newsletters.abWinner\",\n method: \"POST\",\n path: \"/newsletters/{id}/ab-winner\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n variant: {\n wire: \"variant\",\n },\n },\n },\n \"contacts.list\": {\n id: \"contacts.list\",\n method: \"GET\",\n path: \"/contacts\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n segmentId: {\n wire: \"segment_id\",\n },\n status: {\n wire: \"status\",\n },\n search: {\n wire: \"search\",\n },\n tag: {\n wire: \"tag\",\n },\n },\n },\n \"contacts.create\": {\n id: \"contacts.create\",\n method: \"POST\",\n path: \"/contacts\",\n pathParams: [],\n paginated: false,\n idempotent: true,\n body: {\n email: {\n wire: \"email\",\n },\n segmentId: {\n wire: \"segment_id\",\n },\n name: {\n wire: \"name\",\n },\n firstName: {\n wire: \"first_name\",\n },\n lastName: {\n wire: \"last_name\",\n },\n language: {\n wire: \"language\",\n },\n customFields: {\n wire: \"custom_fields\",\n },\n tags: {\n wire: \"tags\",\n },\n },\n },\n \"contacts.import\": {\n id: \"contacts.import\",\n method: \"POST\",\n path: \"/contacts/import\",\n pathParams: [],\n paginated: false,\n idempotent: true,\n body: {\n segmentId: {\n wire: \"segment_id\",\n },\n consent: {\n wire: \"consent\",\n },\n contacts: {\n wire: \"contacts\",\n items: {\n email: {\n wire: \"email\",\n },\n name: {\n wire: \"name\",\n },\n firstName: {\n wire: \"first_name\",\n },\n lastName: {\n wire: \"last_name\",\n },\n language: {\n wire: \"language\",\n },\n customFields: {\n wire: \"custom_fields\",\n },\n openRate: {\n wire: \"open_rate\",\n },\n clickRate: {\n wire: \"click_rate\",\n },\n lastActivityAt: {\n wire: \"last_activity_at\",\n },\n tags: {\n wire: \"tags\",\n },\n status: {\n wire: \"status\",\n },\n unsubscribedAt: {\n wire: \"unsubscribed_at\",\n },\n },\n },\n },\n },\n \"contacts.export\": {\n id: \"contacts.export\",\n method: \"GET\",\n path: \"/contacts/export\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n query: {\n segmentId: {\n wire: \"segment_id\",\n },\n status: {\n wire: \"status\",\n },\n },\n responseType: \"text\",\n },\n \"contacts.get\": {\n id: \"contacts.get\",\n method: \"GET\",\n path: \"/contacts/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"contacts.unsubscribe\": {\n id: \"contacts.unsubscribe\",\n method: \"POST\",\n path: \"/contacts/{id}/unsubscribe\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"contacts.reactivate\": {\n id: \"contacts.reactivate\",\n method: \"POST\",\n path: \"/contacts/{id}/reactivate\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"contacts.remove\": {\n id: \"contacts.remove\",\n method: \"DELETE\",\n path: \"/contacts/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"contacts.update\": {\n id: \"contacts.update\",\n method: \"PATCH\",\n path: \"/contacts/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n firstName: {\n wire: \"first_name\",\n },\n lastName: {\n wire: \"last_name\",\n },\n name: {\n wire: \"name\",\n },\n language: {\n wire: \"language\",\n },\n customFields: {\n wire: \"custom_fields\",\n },\n tags: {\n wire: \"tags\",\n },\n addTags: {\n wire: \"add_tags\",\n },\n removeTags: {\n wire: \"remove_tags\",\n },\n },\n },\n \"contactFields.list\": {\n id: \"contactFields.list\",\n method: \"GET\",\n path: \"/contact-fields\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n },\n \"contactFields.create\": {\n id: \"contactFields.create\",\n method: \"POST\",\n path: \"/contact-fields\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n key: {\n wire: \"key\",\n },\n label: {\n wire: \"label\",\n },\n type: {\n wire: \"type\",\n },\n options: {\n wire: \"options\",\n },\n defaultValue: {\n wire: \"default_value\",\n },\n inSignup: {\n wire: \"in_signup\",\n },\n },\n },\n \"contactFields.update\": {\n id: \"contactFields.update\",\n method: \"PATCH\",\n path: \"/contact-fields/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n label: {\n wire: \"label\",\n },\n options: {\n wire: \"options\",\n },\n defaultValue: {\n wire: \"default_value\",\n },\n inSignup: {\n wire: \"in_signup\",\n },\n position: {\n wire: \"position\",\n },\n },\n },\n \"contactFields.remove\": {\n id: \"contactFields.remove\",\n method: \"DELETE\",\n path: \"/contact-fields/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"events.send\": {\n id: \"events.send\",\n method: \"POST\",\n path: \"/events\",\n pathParams: [],\n paginated: false,\n idempotent: true,\n body: {\n email: {\n wire: \"email\",\n },\n contactId: {\n wire: \"contact_id\",\n },\n event: {\n wire: \"event\",\n },\n properties: {\n wire: \"properties\",\n },\n occurredAt: {\n wire: \"occurred_at\",\n },\n createContact: {\n wire: \"create_contact\",\n },\n segmentId: {\n wire: \"segment_id\",\n },\n },\n },\n \"audienceFilters.list\": {\n id: \"audienceFilters.list\",\n method: \"GET\",\n path: \"/audience-filters\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"audienceFilters.create\": {\n id: \"audienceFilters.create\",\n method: \"POST\",\n path: \"/audience-filters\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n description: {\n wire: \"description\",\n },\n rules: {\n wire: \"rules\",\n },\n },\n },\n \"audienceFilters.get\": {\n id: \"audienceFilters.get\",\n method: \"GET\",\n path: \"/audience-filters/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"audienceFilters.update\": {\n id: \"audienceFilters.update\",\n method: \"PATCH\",\n path: \"/audience-filters/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n description: {\n wire: \"description\",\n },\n rules: {\n wire: \"rules\",\n },\n },\n },\n \"audienceFilters.remove\": {\n id: \"audienceFilters.remove\",\n method: \"DELETE\",\n path: \"/audience-filters/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"audienceFilters.count\": {\n id: \"audienceFilters.count\",\n method: \"POST\",\n path: \"/audience-filters/count\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n filterId: {\n wire: \"filter_id\",\n },\n rules: {\n wire: \"rules\",\n },\n segmentId: {\n wire: \"segment_id\",\n },\n },\n },\n \"signups.create\": {\n id: \"signups.create\",\n method: \"POST\",\n path: \"/signups\",\n pathParams: [],\n paginated: false,\n idempotent: true,\n body: {\n email: {\n wire: \"email\",\n },\n name: {\n wire: \"name\",\n },\n firstName: {\n wire: \"first_name\",\n },\n segmentId: {\n wire: \"segment_id\",\n },\n language: {\n wire: \"language\",\n },\n sourceUrl: {\n wire: \"source_url\",\n },\n customFields: {\n wire: \"custom_fields\",\n },\n },\n },\n \"segments.list\": {\n id: \"segments.list\",\n method: \"GET\",\n path: \"/segments\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"segments.create\": {\n id: \"segments.create\",\n method: \"POST\",\n path: \"/segments\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n slug: {\n wire: \"slug\",\n },\n language: {\n wire: \"language\",\n },\n description: {\n wire: \"description\",\n },\n themes: {\n wire: \"themes\",\n },\n },\n },\n \"topics.list\": {\n id: \"topics.list\",\n method: \"GET\",\n path: \"/topics\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n query: {\n segmentId: {\n wire: \"segment_id\",\n },\n },\n },\n \"segments.archive.get\": {\n id: \"segments.archive.get\",\n method: \"GET\",\n path: \"/segments/{id}/archive\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"segments.archive.update\": {\n id: \"segments.archive.update\",\n method: \"PATCH\",\n path: \"/segments/{id}/archive\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n enabled: {\n wire: \"enabled\",\n },\n slug: {\n wire: \"slug\",\n },\n description: {\n wire: \"description\",\n },\n author: {\n wire: \"author\",\n },\n about: {\n wire: \"about\",\n },\n avatarUrl: {\n wire: \"avatar_url\",\n },\n links: {\n wire: \"links\",\n props: {\n website: {\n wire: \"website\",\n },\n x: {\n wire: \"x\",\n },\n linkedin: {\n wire: \"linkedin\",\n },\n youtube: {\n wire: \"youtube\",\n },\n instagram: {\n wire: \"instagram\",\n },\n github: {\n wire: \"github\",\n },\n bluesky: {\n wire: \"bluesky\",\n },\n },\n },\n },\n },\n \"newsletters.archive.update\": {\n id: \"newsletters.archive.update\",\n method: \"PATCH\",\n path: \"/newsletters/{id}/archive\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n pinned: {\n wire: \"pinned\",\n },\n hidden: {\n wire: \"hidden\",\n },\n },\n },\n \"segments.domain.get\": {\n id: \"segments.domain.get\",\n method: \"GET\",\n path: \"/segments/{id}/domain\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"segments.domain.set\": {\n id: \"segments.domain.set\",\n method: \"POST\",\n path: \"/segments/{id}/domain\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n domain: {\n wire: \"domain\",\n },\n },\n },\n \"segments.domain.remove\": {\n id: \"segments.domain.remove\",\n method: \"DELETE\",\n path: \"/segments/{id}/domain\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"suppressions.list\": {\n id: \"suppressions.list\",\n method: \"GET\",\n path: \"/suppressions\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n reason: {\n wire: \"reason\",\n },\n },\n },\n \"suppressions.create\": {\n id: \"suppressions.create\",\n method: \"POST\",\n path: \"/suppressions\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n email: {\n wire: \"email\",\n },\n reason: {\n wire: \"reason\",\n },\n notes: {\n wire: \"notes\",\n },\n },\n },\n \"suppressions.remove\": {\n id: \"suppressions.remove\",\n method: \"DELETE\",\n path: \"/suppressions/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"images.list\": {\n id: \"images.list\",\n method: \"GET\",\n path: \"/images\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"images.create\": {\n id: \"images.create\",\n method: \"POST\",\n path: \"/images\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n rawBody: true,\n },\n \"stats.overview\": {\n id: \"stats.overview\",\n method: \"GET\",\n path: \"/stats/overview\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n },\n \"domains.create\": {\n id: \"domains.create\",\n method: \"POST\",\n path: \"/domains\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n trackingSubdomain: {\n wire: \"tracking_subdomain\",\n },\n },\n },\n \"domains.list\": {\n id: \"domains.list\",\n method: \"GET\",\n path: \"/domains\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"domains.get\": {\n id: \"domains.get\",\n method: \"GET\",\n path: \"/domains/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"domains.verify\": {\n id: \"domains.verify\",\n method: \"POST\",\n path: \"/domains/{id}/verify\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"apiKeys.create\": {\n id: \"apiKeys.create\",\n method: \"POST\",\n path: \"/api-keys\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n permission: {\n wire: \"permission\",\n },\n domainId: {\n wire: \"domain_id\",\n },\n },\n },\n \"apiKeys.list\": {\n id: \"apiKeys.list\",\n method: \"GET\",\n path: \"/api-keys\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"apiKeys.update\": {\n id: \"apiKeys.update\",\n method: \"PATCH\",\n path: \"/api-keys/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n },\n },\n \"apiKeys.remove\": {\n id: \"apiKeys.remove\",\n method: \"DELETE\",\n path: \"/api-keys/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"logs.list\": {\n id: \"logs.list\",\n method: \"GET\",\n path: \"/logs\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"logs.get\": {\n id: \"logs.get\",\n method: \"GET\",\n path: \"/logs/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"usage.get\": {\n id: \"usage.get\",\n method: \"GET\",\n path: \"/usage\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n },\n \"sequences.list\": {\n id: \"sequences.list\",\n method: \"GET\",\n path: \"/sequences\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n query: {\n includeArchived: {\n wire: \"include_archived\",\n },\n },\n },\n \"sequences.create\": {\n id: \"sequences.create\",\n method: \"POST\",\n path: \"/sequences\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n description: {\n wire: \"description\",\n },\n segmentId: {\n wire: \"segment_id\",\n },\n topicId: {\n wire: \"topic_id\",\n },\n trigger: {\n wire: \"trigger\",\n props: {\n type: {\n wire: \"type\",\n },\n includeImports: {\n wire: \"include_imports\",\n },\n topicId: {\n wire: \"topic_id\",\n },\n leadMagnetId: {\n wire: \"lead_magnet_id\",\n },\n event: {\n wire: \"event\",\n },\n newsletterId: {\n wire: \"newsletter_id\",\n },\n filterId: {\n wire: \"filter_id\",\n },\n includeExisting: {\n wire: \"include_existing\",\n },\n },\n },\n reentry: {\n wire: \"reentry\",\n props: {\n mode: {\n wire: \"mode\",\n },\n days: {\n wire: \"days\",\n },\n },\n },\n exit: {\n wire: \"exit\",\n props: {\n events: {\n wire: \"events\",\n },\n filterId: {\n wire: \"filter_id\",\n },\n },\n },\n steps: {\n wire: \"steps\",\n items: {\n id: {\n wire: \"id\",\n },\n type: {\n wire: \"type\",\n },\n subject: {\n wire: \"subject\",\n },\n preheader: {\n wire: \"preheader\",\n },\n markdown: {\n wire: \"markdown\",\n },\n html: {\n wire: \"html\",\n },\n doc: {\n wire: \"doc\",\n },\n templateId: {\n wire: \"template_id\",\n },\n amount: {\n wire: \"amount\",\n },\n unit: {\n wire: \"unit\",\n },\n until: {\n wire: \"until\",\n props: {\n time: {\n wire: \"time\",\n },\n weekdays: {\n wire: \"weekdays\",\n },\n timezone: {\n wire: \"timezone\",\n },\n },\n },\n event: {\n wire: \"event\",\n },\n timeoutHours: {\n wire: \"timeout_hours\",\n },\n onTimeout: {\n wire: \"on_timeout\",\n },\n filterId: {\n wire: \"filter_id\",\n },\n rule: {\n wire: \"rule\",\n },\n yes: {\n wire: \"yes\",\n },\n no: {\n wire: \"no\",\n },\n action: {\n wire: \"action\",\n },\n key: {\n wire: \"key\",\n },\n value: {\n wire: \"value\",\n },\n topicId: {\n wire: \"topic_id\",\n },\n webhookId: {\n wire: \"webhook_id\",\n },\n },\n },\n },\n },\n \"sequences.get\": {\n id: \"sequences.get\",\n method: \"GET\",\n path: \"/sequences/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"sequences.update\": {\n id: \"sequences.update\",\n method: \"PATCH\",\n path: \"/sequences/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n description: {\n wire: \"description\",\n },\n segmentId: {\n wire: \"segment_id\",\n },\n topicId: {\n wire: \"topic_id\",\n },\n trigger: {\n wire: \"trigger\",\n props: {\n type: {\n wire: \"type\",\n },\n includeImports: {\n wire: \"include_imports\",\n },\n topicId: {\n wire: \"topic_id\",\n },\n leadMagnetId: {\n wire: \"lead_magnet_id\",\n },\n event: {\n wire: \"event\",\n },\n newsletterId: {\n wire: \"newsletter_id\",\n },\n filterId: {\n wire: \"filter_id\",\n },\n includeExisting: {\n wire: \"include_existing\",\n },\n },\n },\n reentry: {\n wire: \"reentry\",\n props: {\n mode: {\n wire: \"mode\",\n },\n days: {\n wire: \"days\",\n },\n },\n },\n exit: {\n wire: \"exit\",\n props: {\n events: {\n wire: \"events\",\n },\n filterId: {\n wire: \"filter_id\",\n },\n },\n },\n steps: {\n wire: \"steps\",\n items: {\n id: {\n wire: \"id\",\n },\n type: {\n wire: \"type\",\n },\n subject: {\n wire: \"subject\",\n },\n preheader: {\n wire: \"preheader\",\n },\n markdown: {\n wire: \"markdown\",\n },\n html: {\n wire: \"html\",\n },\n doc: {\n wire: \"doc\",\n },\n templateId: {\n wire: \"template_id\",\n },\n amount: {\n wire: \"amount\",\n },\n unit: {\n wire: \"unit\",\n },\n until: {\n wire: \"until\",\n props: {\n time: {\n wire: \"time\",\n },\n weekdays: {\n wire: \"weekdays\",\n },\n timezone: {\n wire: \"timezone\",\n },\n },\n },\n event: {\n wire: \"event\",\n },\n timeoutHours: {\n wire: \"timeout_hours\",\n },\n onTimeout: {\n wire: \"on_timeout\",\n },\n filterId: {\n wire: \"filter_id\",\n },\n rule: {\n wire: \"rule\",\n },\n yes: {\n wire: \"yes\",\n },\n no: {\n wire: \"no\",\n },\n action: {\n wire: \"action\",\n },\n key: {\n wire: \"key\",\n },\n value: {\n wire: \"value\",\n },\n topicId: {\n wire: \"topic_id\",\n },\n webhookId: {\n wire: \"webhook_id\",\n },\n },\n },\n },\n },\n \"sequences.remove\": {\n id: \"sequences.remove\",\n method: \"DELETE\",\n path: \"/sequences/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"sequences.activate\": {\n id: \"sequences.activate\",\n method: \"POST\",\n path: \"/sequences/{id}/activate\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"sequences.pause\": {\n id: \"sequences.pause\",\n method: \"POST\",\n path: \"/sequences/{id}/pause\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"sequences.archive\": {\n id: \"sequences.archive\",\n method: \"POST\",\n path: \"/sequences/{id}/archive\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"sequences.enrollments\": {\n id: \"sequences.enrollments\",\n method: \"GET\",\n path: \"/sequences/{id}/enrollments\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n query: {\n status: {\n wire: \"status\",\n },\n limit: {\n wire: \"limit\",\n },\n },\n },\n \"sequences.enroll\": {\n id: \"sequences.enroll\",\n method: \"POST\",\n path: \"/sequences/{id}/enrollments\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n email: {\n wire: \"email\",\n },\n contactId: {\n wire: \"contact_id\",\n },\n },\n },\n \"sequences.unenroll\": {\n id: \"sequences.unenroll\",\n method: \"DELETE\",\n path: \"/sequences/{id}/enrollments/{enrollment_id}\",\n pathParams: [\"id\", \"enrollment_id\"],\n paginated: false,\n idempotent: false,\n },\n \"sequences.stats\": {\n id: \"sequences.stats\",\n method: \"GET\",\n path: \"/sequences/{id}/stats\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"webhooks.create\": {\n id: \"webhooks.create\",\n method: \"POST\",\n path: \"/webhooks\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n endpoint: {\n wire: \"endpoint\",\n },\n events: {\n wire: \"events\",\n },\n description: {\n wire: \"description\",\n },\n includeNewsletters: {\n wire: \"include_newsletters\",\n },\n segmentIds: {\n wire: \"segment_ids\",\n },\n domains: {\n wire: \"domains\",\n },\n },\n },\n \"webhooks.list\": {\n id: \"webhooks.list\",\n method: \"GET\",\n path: \"/webhooks\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"webhooks.get\": {\n id: \"webhooks.get\",\n method: \"GET\",\n path: \"/webhooks/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"webhooks.update\": {\n id: \"webhooks.update\",\n method: \"PATCH\",\n path: \"/webhooks/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n endpoint: {\n wire: \"endpoint\",\n },\n events: {\n wire: \"events\",\n },\n status: {\n wire: \"status\",\n },\n description: {\n wire: \"description\",\n },\n includeNewsletters: {\n wire: \"include_newsletters\",\n },\n segmentIds: {\n wire: \"segment_ids\",\n },\n domains: {\n wire: \"domains\",\n },\n },\n },\n \"webhooks.remove\": {\n id: \"webhooks.remove\",\n method: \"DELETE\",\n path: \"/webhooks/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"webhooks.rotateSigningSecret\": {\n id: \"webhooks.rotateSigningSecret\",\n method: \"POST\",\n path: \"/webhooks/{id}/signing-secret/rotate\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"webhooks.test\": {\n id: \"webhooks.test\",\n method: \"POST\",\n path: \"/webhooks/{id}/test\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n type: {\n wire: \"type\",\n },\n },\n },\n \"webhooks.deliveries\": {\n id: \"webhooks.deliveries\",\n method: \"GET\",\n path: \"/webhooks/{id}/deliveries\",\n pathParams: [\"id\"],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n status: {\n wire: \"status\",\n },\n },\n },\n \"webhooks.retryDelivery\": {\n id: \"webhooks.retryDelivery\",\n method: \"POST\",\n path: \"/webhooks/{id}/deliveries/{delivery_id}/retry\",\n pathParams: [\"id\", \"delivery_id\"],\n paginated: false,\n idempotent: false,\n },\n \"inboxes.list\": {\n id: \"inboxes.list\",\n method: \"GET\",\n path: \"/inboxes\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n },\n \"inboxes.create\": {\n id: \"inboxes.create\",\n method: \"POST\",\n path: \"/inboxes\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n displayName: {\n wire: \"display_name\",\n },\n description: {\n wire: \"description\",\n },\n domainId: {\n wire: \"domain_id\",\n },\n replyFrom: {\n wire: \"reply_from\",\n },\n },\n },\n \"inboxes.get\": {\n id: \"inboxes.get\",\n method: \"GET\",\n path: \"/inboxes/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"inboxes.update\": {\n id: \"inboxes.update\",\n method: \"PATCH\",\n path: \"/inboxes/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n displayName: {\n wire: \"display_name\",\n },\n description: {\n wire: \"description\",\n },\n replyFrom: {\n wire: \"reply_from\",\n },\n status: {\n wire: \"status\",\n },\n },\n },\n \"inboxes.remove\": {\n id: \"inboxes.remove\",\n method: \"DELETE\",\n path: \"/inboxes/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"threads.list\": {\n id: \"threads.list\",\n method: \"GET\",\n path: \"/threads\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n query: {\n inboxId: {\n wire: \"inbox_id\",\n },\n status: {\n wire: \"status\",\n },\n label: {\n wire: \"label\",\n },\n spam: {\n wire: \"spam\",\n },\n assigneeAgent: {\n wire: \"assignee_agent\",\n },\n unread: {\n wire: \"unread\",\n },\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n },\n },\n \"threads.get\": {\n id: \"threads.get\",\n method: \"GET\",\n path: \"/threads/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"threads.update\": {\n id: \"threads.update\",\n method: \"PATCH\",\n path: \"/threads/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n status: {\n wire: \"status\",\n },\n labels: {\n wire: \"labels\",\n },\n addLabels: {\n wire: \"add_labels\",\n },\n removeLabels: {\n wire: \"remove_labels\",\n },\n assigneeAgent: {\n wire: \"assignee_agent\",\n },\n assigneeUserId: {\n wire: \"assignee_user_id\",\n },\n spam: {\n wire: \"spam\",\n },\n unread: {\n wire: \"unread\",\n },\n },\n },\n \"threads.reply\": {\n id: \"threads.reply\",\n method: \"POST\",\n path: \"/threads/{id}/reply\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n text: {\n wire: \"text\",\n },\n html: {\n wire: \"html\",\n },\n messageId: {\n wire: \"message_id\",\n },\n replyAll: {\n wire: \"reply_all\",\n },\n cc: {\n wire: \"cc\",\n },\n quote: {\n wire: \"quote\",\n },\n draft: {\n wire: \"draft\",\n },\n status: {\n wire: \"status\",\n },\n },\n },\n \"messages.get\": {\n id: \"messages.get\",\n method: \"GET\",\n path: \"/messages/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"messages.update\": {\n id: \"messages.update\",\n method: \"PATCH\",\n path: \"/messages/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n text: {\n wire: \"text\",\n },\n html: {\n wire: \"html\",\n },\n cc: {\n wire: \"cc\",\n },\n },\n },\n \"messages.send\": {\n id: \"messages.send\",\n method: \"POST\",\n path: \"/messages/{id}/send\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n status: {\n wire: \"status\",\n },\n },\n },\n \"messages.remove\": {\n id: \"messages.remove\",\n method: \"DELETE\",\n path: \"/messages/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"messages.attachment\": {\n id: \"messages.attachment\",\n method: \"GET\",\n path: \"/messages/{id}/attachments/{attachment_id}\",\n pathParams: [\"id\", \"attachment_id\"],\n paginated: false,\n idempotent: false,\n },\n};\n\nexport const OPERATION_IDS = Object.keys(OPERATIONS);\n","import type { Client } from \"./client\";\nimport { OPERATIONS } from \"./generated/operations\";\nimport type { BatchSendParams, BatchSendResponse, EmailsSendParams, EmailsSendResponse } from \"./generated/types\";\nimport type { RequestOptions, Response } from \"./types\";\n\ntype SendAttachment = Omit<NonNullable<EmailsSendParams[\"attachments\"]>[number], \"content\"> & {\n content?: string | Uint8Array;\n};\n\ntype ContentKeys = \"from\" | \"subject\" | \"template\" | \"html\" | \"text\";\ntype EmailTemplate = NonNullable<EmailsSendParams[\"template\"]>;\n\n/**\n * Comme `CreateEmailOptions` de Resend 6.32 : soit un contenu (`html`, `text` ou `react`) avec `from` et\n * `subject` obligatoires, soit un `template` publié qui fournit `from` et `subject` s'ils manquent.\n */\ntype WithContent<Base> =\n | (Base & { from: string; subject: string; html?: string; text?: string; react?: unknown; template?: never })\n | (Base & { from?: string; subject?: string; template: EmailTemplate; html?: never; text?: never; react?: never });\n\n/** Même charge utile que `emails.send` de Resend : `react`, contenu binaire et envoi par template. */\nexport type SendEmailParams = WithContent<Omit<EmailsSendParams, ContentKeys | \"attachments\"> & { attachments?: SendAttachment[] }>;\n\n/** Un email de `batch.send` : comme `emails.send`, sans pièces jointes. */\nexport type BatchEmailParams = WithContent<Omit<BatchSendParams[number], ContentKeys>>;\n\nexport type BatchSendOptions = RequestOptions & { batchValidation?: \"strict\" | \"permissive\" };\n\nconst RENDER_ERROR =\n \"Failed to render React component. Make sure to install `@react-email/render` or `@react-email/components`.\";\n\nclass RenderError extends Error {}\n\n/**\n * Rend un élément React en HTML. Toute panne (module absent, module sans `render`,\n * composant qui lève) devient une `RenderError`, convertie en `application_error` :\n * le SDK ne lève jamais sur un envoi.\n */\nexport async function renderReact(node: unknown): Promise<string> {\n let renderFn: unknown;\n try {\n ({ render: renderFn } = await import(\"@react-email/render\"));\n } catch {\n throw new RenderError(RENDER_ERROR);\n }\n if (typeof renderFn !== \"function\") throw new RenderError(RENDER_ERROR);\n try {\n return await (renderFn as (node: unknown) => string | Promise<string>)(node);\n } catch (err) {\n throw new RenderError(err instanceof Error ? err.message : String(err));\n }\n}\n\nfunction toBase64(bytes: Uint8Array): string {\n if (typeof Buffer !== \"undefined\") return Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString(\"base64\");\n let binary = \"\";\n for (let i = 0; i < bytes.length; i += 0x8000) {\n binary += String.fromCharCode(...bytes.subarray(i, i + 0x8000));\n }\n return btoa(binary);\n}\n\n/** Rend `react` en `html` et encode les pièces jointes binaires, sans modifier l'objet de l'appelant. */\nasync function prepare<T extends { react?: unknown; attachments?: SendAttachment[] }>(email: T) {\n const { react, attachments, ...rest } = email;\n const out: Record<string, unknown> = { ...rest };\n if (react) out.html = await renderReact(react);\n if (attachments) {\n out.attachments = attachments.map((a) => (a.content instanceof Uint8Array ? { ...a, content: toBase64(a.content) } : a));\n }\n return out;\n}\n\nexport function renderFailure(err: unknown): Response<never> | undefined {\n if (!(err instanceof RenderError)) return undefined;\n return { data: null, error: { name: \"application_error\", statusCode: null, message: err.message }, headers: null };\n}\n\nexport function makeEmailsSend(client: Client) {\n return async (payload: SendEmailParams, options?: RequestOptions): Promise<Response<EmailsSendResponse>> => {\n try {\n const body = await prepare(payload);\n return (await client.call(OPERATIONS[\"emails.send\"]!, body, options)) as Response<EmailsSendResponse>;\n } catch (err) {\n const failure = renderFailure(err);\n if (failure) return failure;\n throw err;\n }\n };\n}\n\nexport function makeBatchSend(client: Client) {\n return async (emails: BatchEmailParams[], options: BatchSendOptions = {}): Promise<Response<BatchSendResponse>> => {\n try {\n const body = [];\n for (const email of emails) body.push(await prepare(email));\n const { batchValidation, ...requestOptions } = options;\n const headers = new Headers({ \"x-batch-validation\": batchValidation ?? \"strict\" });\n for (const [key, value] of new Headers(requestOptions.headers)) headers.set(key, value);\n return (await client.call(OPERATIONS[\"batch.send\"]!, body, { ...requestOptions, headers })) as Response<BatchSendResponse>;\n } catch (err) {\n const failure = renderFailure(err);\n if (failure) return failure;\n throw err;\n }\n };\n}\n","// SHA-256 (FIPS 180-4) et HMAC (RFC 2104) synchrones, sans dépendance ni API de la plateforme.\n\nconst K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n]);\n\nconst rotr = (x: number, n: number) => (x >>> n) | (x << (32 - n));\n\nexport function sha256(data: Uint8Array): Uint8Array {\n const h = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n ]);\n const padded = new Uint8Array((((data.length + 9 + 63) >> 6) << 6));\n padded.set(data);\n padded[data.length] = 0x80;\n const view = new DataView(padded.buffer);\n view.setUint32(padded.length - 8, Math.floor(data.length / 0x20000000));\n view.setUint32(padded.length - 4, (data.length << 3) >>> 0);\n\n const w = new Uint32Array(64);\n for (let off = 0; off < padded.length; off += 64) {\n for (let i = 0; i < 16; i++) w[i] = view.getUint32(off + i * 4);\n for (let i = 16; i < 64; i++) {\n const a = w[i - 15]!;\n const b = w[i - 2]!;\n const s0 = rotr(a, 7) ^ rotr(a, 18) ^ (a >>> 3);\n const s1 = rotr(b, 17) ^ rotr(b, 19) ^ (b >>> 10);\n w[i] = (w[i - 16]! + s0 + w[i - 7]! + s1) | 0;\n }\n let [a, b, c, d, e, f, g, hh] = h as unknown as number[] as [number, number, number, number, number, number, number, number];\n for (let i = 0; i < 64; i++) {\n const t1 = (hh + (rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25)) + ((e & f) ^ (~e & g)) + K[i]! + w[i]!) | 0;\n const t2 = ((rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22)) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n hh = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n h[0] = (h[0]! + a) | 0;\n h[1] = (h[1]! + b) | 0;\n h[2] = (h[2]! + c) | 0;\n h[3] = (h[3]! + d) | 0;\n h[4] = (h[4]! + e) | 0;\n h[5] = (h[5]! + f) | 0;\n h[6] = (h[6]! + g) | 0;\n h[7] = (h[7]! + hh) | 0;\n }\n const out = new Uint8Array(32);\n const outView = new DataView(out.buffer);\n for (let i = 0; i < 8; i++) outView.setUint32(i * 4, h[i]!);\n return out;\n}\n\nexport function hmacSha256(key: Uint8Array, message: Uint8Array): Uint8Array {\n const block = new Uint8Array(64);\n block.set(key.length > 64 ? sha256(key) : key);\n const inner = new Uint8Array(64 + message.length);\n const outer = new Uint8Array(64 + 32);\n for (let i = 0; i < 64; i++) {\n inner[i] = block[i]! ^ 0x36;\n outer[i] = block[i]! ^ 0x5c;\n }\n inner.set(message, 64);\n outer.set(sha256(inner), 64);\n return sha256(outer);\n}\n","import { hmacSha256 } from \"./sha256\";\n\nconst TOLERANCE_SECONDS = 5 * 60;\nconst PREFIX = \"whsec_\";\nconst B64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\nexport class WebhookVerificationError extends Error {\n constructor(message: string) {\n super(message);\n Object.setPrototypeOf(this, WebhookVerificationError.prototype);\n this.name = \"WebhookVerificationError\";\n }\n}\n\nexport type WebhookEvent = { type: string; created_at: string; data: Record<string, unknown> };\n\nexport interface VerifyWebhookInput {\n payload: string;\n headers: { id: string; timestamp: string; signature: string };\n webhookSecret: string;\n}\n\nfunction base64Decode(input: string): Uint8Array {\n // Mêmes règles que @stablelib/base64 (utilisé par standardwebhooks 1.1.1).\n const clean = input.replace(/=+$/, \"\");\n if (input.length < 4 || input.length - clean.length > 2) throw new Error(\"Base64Coder: incorrect padding\");\n if (clean.length % 4 === 1) throw new Error(\"Base64Coder: incorrect characters for decoding\");\n const out = new Uint8Array(Math.floor((clean.length * 3) / 4));\n let acc = 0;\n let bits = 0;\n let n = 0;\n for (let i = 0; i < clean.length; i++) {\n const v = B64.indexOf(clean[i]!);\n if (v < 0) throw new Error(\"Base64Coder: incorrect characters for decoding\");\n acc = (acc << 6) | v;\n bits += 6;\n if (bits >= 8) {\n bits -= 8;\n out[n++] = (acc >> bits) & 0xff;\n acc &= (1 << bits) - 1;\n }\n }\n return out;\n}\n\nfunction base64Encode(bytes: Uint8Array): string {\n let out = \"\";\n for (let i = 0; i < bytes.length; i += 3) {\n const n = (bytes[i]! << 16) | ((bytes[i + 1] ?? 0) << 8) | (bytes[i + 2] ?? 0);\n out += B64[(n >> 18) & 63]! + B64[(n >> 12) & 63]!;\n out += i + 1 < bytes.length ? B64[(n >> 6) & 63]! : \"=\";\n out += i + 2 < bytes.length ? B64[n & 63]! : \"=\";\n }\n return out;\n}\n\n/** Comparaison en temps constant (la longueur seule peut fuiter, comme chez standardwebhooks). */\nfunction timingSafeEqual(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++) diff |= a[i]! ^ b[i]!;\n return diff === 0;\n}\n\nfunction toPayloadString(payload: unknown): string {\n if (typeof payload === \"string\") return payload;\n if ((payload as { constructor?: { name?: string } } | null)?.constructor?.name === \"Buffer\") return String(payload);\n throw new Error(\"Expected payload to be of type string or Buffer.\");\n}\n\n/** Même contrat que `resend.webhooks.verify` (Standard Webhooks, synchrone). */\nexport function verify(input: VerifyWebhookInput): WebhookEvent {\n const secret = input.webhookSecret;\n if (typeof secret !== \"string\") throw new Error(\"Expected secret to be of type string\");\n const key = base64Decode(secret.startsWith(PREFIX) ? secret.slice(PREFIX.length) : secret);\n if (key.length === 0) throw new Error(\"Secret can't be empty.\");\n\n const { id, timestamp: timestampHeader, signature } = input.headers ?? ({} as VerifyWebhookInput[\"headers\"]);\n if (!signature || !id || !timestampHeader) throw new WebhookVerificationError(\"Missing required headers\");\n\n const now = Math.floor(Date.now() / 1000);\n const timestamp = parseInt(timestampHeader, 10);\n if (Number.isNaN(timestamp)) throw new WebhookVerificationError(\"Invalid Signature Headers\");\n if (now - timestamp > TOLERANCE_SECONDS) throw new WebhookVerificationError(\"Message timestamp too old\");\n if (timestamp > now + TOLERANCE_SECONDS) throw new WebhookVerificationError(\"Message timestamp too new\");\n\n const body = toPayloadString(input.payload);\n const encoder = new TextEncoder();\n const expected = encoder.encode(\n base64Encode(hmacSha256(key, encoder.encode(`${id}.${timestamp}.${body}`))),\n );\n for (const candidate of signature.split(\" \")) {\n const [version, value] = candidate.split(\",\");\n if (version !== \"v1\") continue;\n if (timingSafeEqual(encoder.encode(value ?? \"\"), expected)) {\n return (body === \"\" ? undefined : JSON.parse(body)) as WebhookEvent;\n }\n }\n throw new WebhookVerificationError(\"No matching signature found\");\n}\n","import { Client } from \"./client\";\nimport { makeBatchSend, makeEmailsSend, renderFailure, renderReact } from \"./emails\";\nimport { OPERATIONS, type Operation } from \"./generated/operations\";\nimport type { SmartletterResources } from \"./generated/catalogue\";\nimport { verify } from \"./webhooks/verify\";\nimport type { RequestOptions, Response } from \"./types\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Leaf = (...args: any[]) => unknown;\ntype Tree = { [key: string]: Tree | Leaf };\n\nfunction camel(snake: string): string {\n return snake.replace(/_([a-z0-9])/g, (_, c: string) => c.toUpperCase());\n}\n\n/**\n * Calling convention, the same for every generated operation:\n * - one path param and nothing else: `fn(id, options?)`\n * - otherwise `fn(params?, options?)` (path params are keys of `params`;\n * array bodies and raw bodies are passed as-is).\n * Exceptions imposed by Resend go in this table (operation id -> style):\n * - \"id\": `fn(id, options?)` even if the route accepts a body;\n * - \"params\": `fn(params?, options?)`;\n * - \"idBody\": `fn(id, payload?, options?)`, Resend's style for its `update` methods.\n */\nexport const CALL_STYLE_OVERRIDES: Record<string, \"id\" | \"params\" | \"idBody\"> = {\n \"apiKeys.update\": \"idBody\",\n \"templates.update\": \"idBody\",\n \"webhooks.update\": \"idBody\",\n // Resend : `publish(identifier, requestOptions?)`. Le `versionId` optionnel de Smartletter n'y a pas de place.\n \"templates.publish\": \"id\",\n};\n\nfunction callStyle(op: Operation): \"id\" | \"params\" | \"idBody\" {\n const forced = CALL_STYLE_OVERRIDES[op.id];\n if (forced) return forced;\n return op.pathParams.length === 1 && !op.body && !op.query && !op.rawBody && !op.bodyIsArray ? \"id\" : \"params\";\n}\n\nfunction makeLeaf(client: Client, op: Operation): Leaf {\n const style = callStyle(op);\n if (style === \"id\") {\n const name = camel(op.pathParams[0]!);\n return (id: unknown, options?: RequestOptions) => client.call(op, { [name]: id }, options);\n }\n if (style === \"idBody\") {\n const name = camel(op.pathParams[0]!);\n return (id: unknown, payload?: Record<string, unknown>, options?: RequestOptions) =>\n client.call(op, { ...payload, [name]: id }, options);\n }\n return (args?: unknown, options?: RequestOptions) => {\n const needsObject = op.pathParams.length > 0 && args === undefined;\n return client.call(op, needsObject ? {} : (args as Parameters<Client[\"call\"]>[1]), options);\n };\n}\n\ntype Publish = (id: string, options?: RequestOptions) => Promise<Response<unknown>>;\n\n/** Promesse de création qu'on peut enchaîner avec `.publish()`, comme `ChainableTemplateResult` de Resend. */\nfunction chainable(promise: Promise<Response<unknown>>, publish: Publish) {\n return Object.assign(promise, {\n async publish(options?: RequestOptions): Promise<Response<unknown>> {\n const { data, error } = await promise;\n if (error) return { data: null, error, headers: null };\n return publish((data as { id: string }).id, options);\n },\n });\n}\n\nfunction makeTemplateMethods(templates: Tree) {\n const create = templates.create as Leaf;\n const duplicate = templates.duplicate as Leaf;\n const publish = templates.publish as Publish;\n const createWithReact = async (payload: Record<string, unknown>, options?: RequestOptions) => {\n try {\n const { react, ...rest } = payload ?? {};\n const body = react ? { ...rest, html: await renderReact(react) } : payload;\n return (await create(body, options)) as Response<unknown>;\n } catch (err) {\n const failure = renderFailure(err);\n if (failure) return failure;\n throw err;\n }\n };\n templates.create = ((payload: Record<string, unknown>, options?: RequestOptions) =>\n chainable(createWithReact(payload, options), publish)) as Leaf;\n templates.duplicate = ((id: string, options?: RequestOptions) =>\n chainable(duplicate(id, options) as Promise<Response<unknown>>, publish)) as Leaf;\n}\n\nexport function buildResources(client: Client): SmartletterResources {\n const root: Tree = {};\n for (const op of Object.values(OPERATIONS)) {\n const segments = op.id.split(\".\");\n const leaf = segments.pop()!;\n let node = root;\n for (const segment of segments) {\n const next = node[segment];\n node = node[segment] = typeof next === \"object\" ? next : {};\n }\n node[leaf] = makeLeaf(client, op);\n }\n // Méthodes d'envoi propres à Resend (react, pièces jointes binaires, en-tête de lot).\n (root.emails as Tree).send = makeEmailsSend(client) as unknown as Leaf;\n (root.batch as Tree).send = makeBatchSend(client) as unknown as Leaf;\n // Alias exposés par Resend 6.32.\n (root.emails as Tree).create = (root.emails as Tree).send!;\n (root.batch as Tree).create = (root.batch as Tree).send!;\n // templates.create / duplicate enchaînables avec `.publish()`, et `react` comme chez Resend.\n makeTemplateMethods(root.templates as Tree);\n // Vérification de signature: synchrone, sans réseau (une des deux méthodes qui lèvent).\n (root.webhooks as Tree).verify = verify as unknown as Leaf;\n return root as unknown as SmartletterResources;\n}\n","import { Client } from \"./client\";\nimport type {\n ApiKeysUpdateParams,\n ApiKeysUpdateResponse,\n BatchSendResponse,\n EmailsSendResponse,\n TemplatesCreateParams,\n TemplatesCreateResponse,\n TemplatesDuplicateResponse,\n TemplatesPublishResponse,\n TemplatesUpdateParams,\n TemplatesUpdateResponse,\n WebhooksUpdateParams,\n WebhooksUpdateResponse,\n} from \"./generated/types\";\nimport type { SmartletterResources } from \"./generated/catalogue\";\nimport type { BatchEmailParams, BatchSendOptions, SendEmailParams } from \"./emails\";\nimport { buildResources } from \"./resources\";\nimport type { RequestOptions, Response } from \"./types\";\nimport type { VerifyWebhookInput, WebhookEvent } from \"./webhooks/verify\";\n\n/** Résultat de `templates.create` / `templates.duplicate` : une promesse qu'on peut enchaîner avec `.publish()`. */\nexport type ChainableTemplateResult<T> = Promise<Response<T>> & {\n publish(options?: RequestOptions): Promise<Response<TemplatesPublishResponse>>;\n};\n\n/** Comme Resend : `react` rendu en `html` via `@react-email/render`, l'un ou l'autre. */\nexport type CreateTemplateParams = Omit<TemplatesCreateParams, \"html\"> & { html?: string; react?: unknown };\n\ntype SendEmail = (payload: SendEmailParams, options?: RequestOptions) => Promise<Response<EmailsSendResponse>>;\ntype SendBatch = (emails: BatchEmailParams[], options?: BatchSendOptions) => Promise<Response<BatchSendResponse>>;\n\n/** Méthodes dont Resend 6.32 impose la forme : elles remplacent celles du catalogue. */\nexport interface Smartletter\n extends Omit<SmartletterResources, \"emails\" | \"batch\" | \"apiKeys\" | \"templates\" | \"webhooks\"> {\n emails: Omit<SmartletterResources[\"emails\"], \"send\"> & { send: SendEmail; create: SendEmail };\n batch: { send: SendBatch; create: SendBatch };\n apiKeys: Omit<SmartletterResources[\"apiKeys\"], \"update\"> & {\n update(\n id: string,\n payload: Omit<ApiKeysUpdateParams, \"id\">,\n options?: RequestOptions,\n ): Promise<Response<ApiKeysUpdateResponse>>;\n };\n templates: Omit<SmartletterResources[\"templates\"], \"create\" | \"duplicate\" | \"publish\" | \"update\"> & {\n create(payload: CreateTemplateParams, options?: RequestOptions): ChainableTemplateResult<TemplatesCreateResponse>;\n duplicate(id: string, options?: RequestOptions): ChainableTemplateResult<TemplatesDuplicateResponse>;\n publish(id: string, options?: RequestOptions): Promise<Response<TemplatesPublishResponse>>;\n update(\n id: string,\n payload: Omit<TemplatesUpdateParams, \"id\">,\n options?: RequestOptions,\n ): Promise<Response<TemplatesUpdateResponse>>;\n };\n webhooks: Omit<SmartletterResources[\"webhooks\"], \"update\"> & {\n update(\n id: string,\n payload: Omit<WebhooksUpdateParams, \"id\">,\n options?: RequestOptions,\n ): Promise<Response<WebhooksUpdateResponse>>;\n verify(input: VerifyWebhookInput): WebhookEvent;\n };\n}\n\nexport class Smartletter extends Client {\n constructor(key?: string, options: { baseUrl?: string; userAgent?: string } = {}) {\n super(key, options);\n Object.assign(this, buildResources(this));\n }\n}\n\nexport { Smartletter as Resend };\nexport type { ErrorResponse, RequestOptions, Response } from \"./types\";\nexport type * from \"./generated/types\";\nexport type { BatchEmailParams, BatchSendOptions, SendEmailParams } from \"./emails\";\nexport type * from \"./resend-types\";\nexport { WebhookVerificationError } from \"./webhooks/verify\";\nexport type { VerifyWebhookInput, WebhookEvent } from \"./webhooks/verify\";\n"],"mappings":"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","names":["text","a","b","camel"]}
1
+ {"version":3,"sources":["../src/case.ts","../src/client.ts","../src/generated/operations.ts","../src/emails.ts","../src/webhooks/sha256.ts","../src/webhooks/verify.ts","../src/resources.ts","../src/index.ts"],"sourcesContent":["import type { KeyTree } from \"./generated/operations\";\n\n/**\n * Renomme les clés camelCase en clés du fil (snake_case) en suivant `tree`.\n * Seules les clés présentes dans l'arbre sont renommées : toute autre clé\n * (y compris déjà en snake_case) et le contenu des records libres passent tels quels.\n */\nexport function toWire(value: unknown, tree?: KeyTree): unknown {\n if (!tree || value === null || typeof value !== \"object\") return value;\n if (Array.isArray(value)) return value.map((item) => toWire(item, tree));\n if (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) return value;\n const out: Record<string, unknown> = {};\n for (const [key, v] of Object.entries(value as Record<string, unknown>)) {\n const node = tree[key];\n out[node ? node.wire : key] = node ? toWire(v, node.items ?? node.props) : v;\n }\n return out;\n}\n","import { toWire } from \"./case\";\nimport type { Operation } from \"./generated/operations\";\nimport type { ErrorResponse, RequestOptions, Response as SdkResponse } from \"./types\";\n\ndeclare const __VERSION__: string;\n\nconst UNRESOLVED_MESSAGE = \"Unable to fetch data. The request could not be resolved.\";\nconst DEFAULT_BASE_URL = \"https://api.smartletter.ai\";\n\nfunction env(name: string): string | undefined {\n return typeof process !== \"undefined\" ? process.env?.[name] || undefined : undefined;\n}\n\nfunction camel(snake: string): string {\n return snake.replace(/_([a-z0-9])/g, (_, c: string) => c.toUpperCase());\n}\n\nfunction applicationError(message: string, statusCode: number | null): ErrorResponse {\n return { name: \"application_error\", message, statusCode };\n}\n\nfunction isEmptyObject(value: unknown): boolean {\n return !!value && typeof value === \"object\" && !Array.isArray(value) && Object.keys(value).length === 0;\n}\n\nexport class Client {\n readonly key: string;\n readonly baseUrl: string;\n private readonly userAgent: string;\n\n constructor(key?: string, options: { baseUrl?: string; userAgent?: string } = {}) {\n const resendKey = env(\"RESEND_API_KEY\");\n const resolved =\n key || env(\"SMARTLETTER_API_KEY\") || (resendKey && /^(sl_|re_)/.test(resendKey) ? resendKey : undefined);\n if (!resolved) {\n throw new Error(\n 'Missing API key. Pass it to the constructor `new Smartletter(\"sl_123\")` or set SMARTLETTER_API_KEY.',\n );\n }\n if (resolved.startsWith(\"re_\")) {\n throw new Error(\"This is a Resend key (re_…). Create a Smartletter key (sl_…) in Settings → API keys.\");\n }\n this.key = resolved;\n this.baseUrl = (options.baseUrl || env(\"SMARTLETTER_BASE_URL\") || DEFAULT_BASE_URL).replace(/\\/+$/, \"\");\n this.userAgent = options.userAgent ?? `smartletter-node/${__VERSION__}`;\n }\n\n async call(\n op: Operation,\n args: Record<string, unknown> | unknown[] | BodyInit | undefined,\n options: RequestOptions = {},\n ): Promise<SdkResponse<unknown>> {\n const headers = new Headers(options.headers);\n headers.set(\"Authorization\", `Bearer ${this.key}`);\n headers.set(\"User-Agent\", this.userAgent);\n if (options.idempotencyKey) headers.set(\"Idempotency-Key\", options.idempotencyKey);\n\n let path = op.path;\n let rest = args as Record<string, unknown> | unknown[] | undefined;\n if (op.pathParams.length > 0 && !Array.isArray(args)) {\n const copy = { ...((args ?? {}) as Record<string, unknown>) };\n for (const wireName of op.pathParams) {\n const name = camel(wireName);\n const value = copy[name] ?? copy[wireName];\n if (value === undefined || value === null || value === \"\") {\n return {\n data: null,\n error: { name: \"missing_required_field\", statusCode: null, message: `Missing \\`${name}\\` field.` },\n headers: null,\n };\n }\n path = path.replace(`{${wireName}}`, encodeURIComponent(String(value)));\n delete copy[name];\n delete copy[wireName];\n }\n rest = copy;\n }\n\n let url = `${this.baseUrl}${path}`;\n let body: BodyInit | undefined;\n if (op.rawBody) {\n body = args as BodyInit | undefined;\n if (body !== undefined) headers.set(\"Content-Type\", \"application/octet-stream\");\n } else if (op.method === \"GET\") {\n const params = new URLSearchParams();\n const wire = (toWire(rest, op.query) ?? {}) as Record<string, unknown>;\n for (const [k, v] of Object.entries(wire)) {\n if (v === undefined || v === null) continue;\n params.set(k, String(v));\n }\n const qs = params.toString();\n if (qs) url += `?${qs}`;\n } else if (rest !== undefined && !isEmptyObject(rest)) {\n // Rien à envoyer (cancel, verify, publish…) : pas de corps, comme Resend. L'API lit un corps vide comme `{}`.\n const wire = op.bodyIsArray && Array.isArray(rest) ? rest.map((i) => toWire(i, op.body)) : toWire(rest, op.body);\n body = JSON.stringify(wire);\n headers.set(\"Content-Type\", \"application/json\");\n }\n\n const unresolved: SdkResponse<unknown> = {\n data: null,\n error: applicationError(UNRESOLVED_MESSAGE, null),\n headers: null,\n };\n\n let response: globalThis.Response;\n try {\n response = await fetch(url, { method: op.method, headers, body, signal: options.signal });\n } catch {\n return unresolved;\n }\n\n const responseHeaders = Object.fromEntries(response.headers);\n\n if (!response.ok) {\n let text: string;\n try {\n text = await response.text();\n } catch (err) {\n const message = err instanceof Error ? err.message : response.statusText;\n return { data: null, error: applicationError(message, response.status), headers: responseHeaders };\n }\n try {\n return { data: null, error: JSON.parse(text) as ErrorResponse, headers: responseHeaders };\n } catch {\n return {\n data: null,\n error: applicationError(\n \"Internal server error. We are unable to process your request right now, please try again later.\",\n response.status,\n ),\n headers: responseHeaders,\n };\n }\n }\n\n let text: string;\n try {\n text = await response.text();\n } catch {\n return unresolved;\n }\n if (op.responseType === \"text\") return { data: text, error: null, headers: responseHeaders };\n if (text === \"\") return { data: null, error: null, headers: responseHeaders } as unknown as SdkResponse<unknown>;\n try {\n return { data: JSON.parse(text), error: null, headers: responseHeaders };\n } catch {\n return { ...unresolved, headers: responseHeaders };\n }\n }\n}\n","// Generated by scripts/generate.ts from @smartletter/api-spec. Do not edit by hand.\n\nexport type KeyTree = { [camelKey: string]: { wire: string; props?: KeyTree; items?: KeyTree } };\n\nexport interface Operation {\n id: string;\n method: \"GET\" | \"POST\" | \"PATCH\" | \"DELETE\";\n path: string;\n pathParams: string[];\n body?: KeyTree;\n bodyIsArray?: boolean;\n /** Body is raw bytes (images.create), not JSON. */\n rawBody?: boolean;\n query?: KeyTree;\n paginated: boolean;\n idempotent: boolean;\n /** Response body is returned as text (non-JSON content type, e.g. CSV). */\n responseType?: \"text\";\n}\n\nexport const OPERATIONS: Record<string, Operation> = {\n \"emails.send\": {\n id: \"emails.send\",\n method: \"POST\",\n path: \"/emails\",\n pathParams: [],\n paginated: false,\n idempotent: true,\n body: {\n from: {\n wire: \"from\",\n },\n to: {\n wire: \"to\",\n },\n subject: {\n wire: \"subject\",\n },\n template: {\n wire: \"template\",\n props: {\n id: {\n wire: \"id\",\n },\n variables: {\n wire: \"variables\",\n },\n },\n },\n html: {\n wire: \"html\",\n },\n text: {\n wire: \"text\",\n },\n cc: {\n wire: \"cc\",\n },\n bcc: {\n wire: \"bcc\",\n },\n replyTo: {\n wire: \"reply_to\",\n },\n headers: {\n wire: \"headers\",\n },\n tags: {\n wire: \"tags\",\n items: {\n name: {\n wire: \"name\",\n },\n value: {\n wire: \"value\",\n },\n },\n },\n scheduledAt: {\n wire: \"scheduled_at\",\n },\n topicId: {\n wire: \"topic_id\",\n },\n attachments: {\n wire: \"attachments\",\n items: {\n content: {\n wire: \"content\",\n },\n path: {\n wire: \"path\",\n },\n filename: {\n wire: \"filename\",\n },\n contentType: {\n wire: \"content_type\",\n },\n contentId: {\n wire: \"content_id\",\n },\n },\n },\n },\n },\n \"batch.send\": {\n id: \"batch.send\",\n method: \"POST\",\n path: \"/emails/batch\",\n pathParams: [],\n paginated: false,\n idempotent: true,\n bodyIsArray: true,\n body: {\n from: {\n wire: \"from\",\n },\n to: {\n wire: \"to\",\n },\n subject: {\n wire: \"subject\",\n },\n template: {\n wire: \"template\",\n props: {\n id: {\n wire: \"id\",\n },\n variables: {\n wire: \"variables\",\n },\n },\n },\n html: {\n wire: \"html\",\n },\n text: {\n wire: \"text\",\n },\n cc: {\n wire: \"cc\",\n },\n bcc: {\n wire: \"bcc\",\n },\n replyTo: {\n wire: \"reply_to\",\n },\n headers: {\n wire: \"headers\",\n },\n tags: {\n wire: \"tags\",\n items: {\n name: {\n wire: \"name\",\n },\n value: {\n wire: \"value\",\n },\n },\n },\n scheduledAt: {\n wire: \"scheduled_at\",\n },\n topicId: {\n wire: \"topic_id\",\n },\n },\n },\n \"emails.list\": {\n id: \"emails.list\",\n method: \"GET\",\n path: \"/emails\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"emails.get\": {\n id: \"emails.get\",\n method: \"GET\",\n path: \"/emails/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"emails.update\": {\n id: \"emails.update\",\n method: \"PATCH\",\n path: \"/emails/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n scheduledAt: {\n wire: \"scheduled_at\",\n },\n },\n },\n \"emails.cancel\": {\n id: \"emails.cancel\",\n method: \"POST\",\n path: \"/emails/{id}/cancel\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"templates.create\": {\n id: \"templates.create\",\n method: \"POST\",\n path: \"/templates\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n alias: {\n wire: \"alias\",\n },\n from: {\n wire: \"from\",\n },\n subject: {\n wire: \"subject\",\n },\n replyTo: {\n wire: \"reply_to\",\n },\n html: {\n wire: \"html\",\n },\n text: {\n wire: \"text\",\n },\n variables: {\n wire: \"variables\",\n items: {\n key: {\n wire: \"key\",\n },\n type: {\n wire: \"type\",\n },\n fallbackValue: {\n wire: \"fallback_value\",\n },\n required: {\n wire: \"required\",\n },\n },\n },\n },\n },\n \"templates.list\": {\n id: \"templates.list\",\n method: \"GET\",\n path: \"/templates\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"templates.get\": {\n id: \"templates.get\",\n method: \"GET\",\n path: \"/templates/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"templates.update\": {\n id: \"templates.update\",\n method: \"PATCH\",\n path: \"/templates/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n alias: {\n wire: \"alias\",\n },\n from: {\n wire: \"from\",\n },\n subject: {\n wire: \"subject\",\n },\n replyTo: {\n wire: \"reply_to\",\n },\n html: {\n wire: \"html\",\n },\n text: {\n wire: \"text\",\n },\n variables: {\n wire: \"variables\",\n items: {\n key: {\n wire: \"key\",\n },\n type: {\n wire: \"type\",\n },\n fallbackValue: {\n wire: \"fallback_value\",\n },\n required: {\n wire: \"required\",\n },\n },\n },\n changeNote: {\n wire: \"change_note\",\n },\n },\n },\n \"templates.remove\": {\n id: \"templates.remove\",\n method: \"DELETE\",\n path: \"/templates/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"templates.publish\": {\n id: \"templates.publish\",\n method: \"POST\",\n path: \"/templates/{id}/publish\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n versionId: {\n wire: \"version_id\",\n },\n },\n },\n \"templates.duplicate\": {\n id: \"templates.duplicate\",\n method: \"POST\",\n path: \"/templates/{id}/duplicate\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"templates.versions\": {\n id: \"templates.versions\",\n method: \"GET\",\n path: \"/templates/{id}/versions\",\n pathParams: [\"id\"],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"newsletters.list\": {\n id: \"newsletters.list\",\n method: \"GET\",\n path: \"/newsletters\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n status: {\n wire: \"status\",\n },\n },\n },\n \"newsletters.create\": {\n id: \"newsletters.create\",\n method: \"POST\",\n path: \"/newsletters\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n subject: {\n wire: \"subject\",\n },\n preheader: {\n wire: \"preheader\",\n },\n segmentId: {\n wire: \"segment_id\",\n },\n topicId: {\n wire: \"topic_id\",\n },\n markdown: {\n wire: \"markdown\",\n },\n html: {\n wire: \"html\",\n },\n blocks: {\n wire: \"blocks\",\n items: {\n kind: {\n wire: \"kind\",\n },\n level: {\n wire: \"level\",\n },\n text: {\n wire: \"text\",\n },\n ordered: {\n wire: \"ordered\",\n },\n items: {\n wire: \"items\",\n },\n url: {\n wire: \"url\",\n },\n alt: {\n wire: \"alt\",\n },\n label: {\n wire: \"label\",\n },\n title: {\n wire: \"title\",\n },\n imageUrl: {\n wire: \"imageUrl\",\n },\n price: {\n wire: \"price\",\n },\n description: {\n wire: \"description\",\n },\n ctaLabel: {\n wire: \"ctaLabel\",\n },\n html: {\n wire: \"html\",\n },\n columns: {\n wire: \"columns\",\n },\n },\n },\n audienceFilterId: {\n wire: \"audience_filter_id\",\n },\n abTest: {\n wire: \"ab_test\",\n props: {\n variants: {\n wire: \"variants\",\n items: {\n subject: {\n wire: \"subject\",\n },\n preheader: {\n wire: \"preheader\",\n },\n },\n },\n samplePct: {\n wire: \"sample_pct\",\n },\n metric: {\n wire: \"metric\",\n },\n waitHours: {\n wire: \"wait_hours\",\n },\n winnerMode: {\n wire: \"winner_mode\",\n },\n },\n },\n },\n },\n \"newsletters.get\": {\n id: \"newsletters.get\",\n method: \"GET\",\n path: \"/newsletters/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"newsletters.update\": {\n id: \"newsletters.update\",\n method: \"PATCH\",\n path: \"/newsletters/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n subject: {\n wire: \"subject\",\n },\n preheader: {\n wire: \"preheader\",\n },\n topicId: {\n wire: \"topic_id\",\n },\n markdown: {\n wire: \"markdown\",\n },\n html: {\n wire: \"html\",\n },\n blocks: {\n wire: \"blocks\",\n items: {\n kind: {\n wire: \"kind\",\n },\n level: {\n wire: \"level\",\n },\n text: {\n wire: \"text\",\n },\n ordered: {\n wire: \"ordered\",\n },\n items: {\n wire: \"items\",\n },\n url: {\n wire: \"url\",\n },\n alt: {\n wire: \"alt\",\n },\n label: {\n wire: \"label\",\n },\n title: {\n wire: \"title\",\n },\n imageUrl: {\n wire: \"imageUrl\",\n },\n price: {\n wire: \"price\",\n },\n description: {\n wire: \"description\",\n },\n ctaLabel: {\n wire: \"ctaLabel\",\n },\n html: {\n wire: \"html\",\n },\n columns: {\n wire: \"columns\",\n },\n },\n },\n audienceFilterId: {\n wire: \"audience_filter_id\",\n },\n abTest: {\n wire: \"ab_test\",\n props: {\n variants: {\n wire: \"variants\",\n items: {\n subject: {\n wire: \"subject\",\n },\n preheader: {\n wire: \"preheader\",\n },\n },\n },\n samplePct: {\n wire: \"sample_pct\",\n },\n metric: {\n wire: \"metric\",\n },\n waitHours: {\n wire: \"wait_hours\",\n },\n winnerMode: {\n wire: \"winner_mode\",\n },\n },\n },\n },\n },\n \"newsletters.remove\": {\n id: \"newsletters.remove\",\n method: \"DELETE\",\n path: \"/newsletters/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"newsletters.duplicate\": {\n id: \"newsletters.duplicate\",\n method: \"POST\",\n path: \"/newsletters/{id}/duplicate\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"newsletters.review\": {\n id: \"newsletters.review\",\n method: \"GET\",\n path: \"/newsletters/{id}/review\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"newsletters.test\": {\n id: \"newsletters.test\",\n method: \"POST\",\n path: \"/newsletters/{id}/test\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"newsletters.send\": {\n id: \"newsletters.send\",\n method: \"POST\",\n path: \"/newsletters/{id}/send\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: true,\n body: {\n audienceLimit: {\n wire: \"audience_limit\",\n },\n },\n },\n \"newsletters.schedule\": {\n id: \"newsletters.schedule\",\n method: \"POST\",\n path: \"/newsletters/{id}/schedule\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: true,\n body: {\n scheduledAt: {\n wire: \"scheduled_at\",\n },\n audienceLimit: {\n wire: \"audience_limit\",\n },\n },\n },\n \"newsletters.unschedule\": {\n id: \"newsletters.unschedule\",\n method: \"POST\",\n path: \"/newsletters/{id}/unschedule\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"newsletters.pause\": {\n id: \"newsletters.pause\",\n method: \"POST\",\n path: \"/newsletters/{id}/pause\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"newsletters.resume\": {\n id: \"newsletters.resume\",\n method: \"POST\",\n path: \"/newsletters/{id}/resume\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"newsletters.sendMore\": {\n id: \"newsletters.sendMore\",\n method: \"POST\",\n path: \"/newsletters/{id}/send-more\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: true,\n body: {\n count: {\n wire: \"count\",\n },\n },\n },\n \"newsletters.report\": {\n id: \"newsletters.report\",\n method: \"GET\",\n path: \"/newsletters/{id}/report\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"newsletters.abWinner\": {\n id: \"newsletters.abWinner\",\n method: \"POST\",\n path: \"/newsletters/{id}/ab-winner\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n variant: {\n wire: \"variant\",\n },\n },\n },\n \"contacts.list\": {\n id: \"contacts.list\",\n method: \"GET\",\n path: \"/contacts\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n segmentId: {\n wire: \"segment_id\",\n },\n status: {\n wire: \"status\",\n },\n search: {\n wire: \"search\",\n },\n tag: {\n wire: \"tag\",\n },\n },\n },\n \"contacts.create\": {\n id: \"contacts.create\",\n method: \"POST\",\n path: \"/contacts\",\n pathParams: [],\n paginated: false,\n idempotent: true,\n body: {\n email: {\n wire: \"email\",\n },\n segmentId: {\n wire: \"segment_id\",\n },\n name: {\n wire: \"name\",\n },\n firstName: {\n wire: \"first_name\",\n },\n lastName: {\n wire: \"last_name\",\n },\n language: {\n wire: \"language\",\n },\n customFields: {\n wire: \"custom_fields\",\n },\n tags: {\n wire: \"tags\",\n },\n },\n },\n \"contacts.import\": {\n id: \"contacts.import\",\n method: \"POST\",\n path: \"/contacts/import\",\n pathParams: [],\n paginated: false,\n idempotent: true,\n body: {\n segmentId: {\n wire: \"segment_id\",\n },\n consent: {\n wire: \"consent\",\n },\n contacts: {\n wire: \"contacts\",\n items: {\n email: {\n wire: \"email\",\n },\n name: {\n wire: \"name\",\n },\n firstName: {\n wire: \"first_name\",\n },\n lastName: {\n wire: \"last_name\",\n },\n language: {\n wire: \"language\",\n },\n customFields: {\n wire: \"custom_fields\",\n },\n openRate: {\n wire: \"open_rate\",\n },\n clickRate: {\n wire: \"click_rate\",\n },\n lastActivityAt: {\n wire: \"last_activity_at\",\n },\n tags: {\n wire: \"tags\",\n },\n status: {\n wire: \"status\",\n },\n unsubscribedAt: {\n wire: \"unsubscribed_at\",\n },\n },\n },\n },\n },\n \"contacts.export\": {\n id: \"contacts.export\",\n method: \"GET\",\n path: \"/contacts/export\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n query: {\n segmentId: {\n wire: \"segment_id\",\n },\n status: {\n wire: \"status\",\n },\n },\n responseType: \"text\",\n },\n \"contacts.get\": {\n id: \"contacts.get\",\n method: \"GET\",\n path: \"/contacts/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"contacts.unsubscribe\": {\n id: \"contacts.unsubscribe\",\n method: \"POST\",\n path: \"/contacts/{id}/unsubscribe\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"contacts.reactivate\": {\n id: \"contacts.reactivate\",\n method: \"POST\",\n path: \"/contacts/{id}/reactivate\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"contacts.remove\": {\n id: \"contacts.remove\",\n method: \"DELETE\",\n path: \"/contacts/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"contacts.update\": {\n id: \"contacts.update\",\n method: \"PATCH\",\n path: \"/contacts/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n firstName: {\n wire: \"first_name\",\n },\n lastName: {\n wire: \"last_name\",\n },\n name: {\n wire: \"name\",\n },\n language: {\n wire: \"language\",\n },\n customFields: {\n wire: \"custom_fields\",\n },\n tags: {\n wire: \"tags\",\n },\n addTags: {\n wire: \"add_tags\",\n },\n removeTags: {\n wire: \"remove_tags\",\n },\n },\n },\n \"contactFields.list\": {\n id: \"contactFields.list\",\n method: \"GET\",\n path: \"/contact-fields\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n },\n \"contactFields.create\": {\n id: \"contactFields.create\",\n method: \"POST\",\n path: \"/contact-fields\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n key: {\n wire: \"key\",\n },\n label: {\n wire: \"label\",\n },\n type: {\n wire: \"type\",\n },\n options: {\n wire: \"options\",\n },\n defaultValue: {\n wire: \"default_value\",\n },\n inSignup: {\n wire: \"in_signup\",\n },\n },\n },\n \"contactFields.update\": {\n id: \"contactFields.update\",\n method: \"PATCH\",\n path: \"/contact-fields/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n label: {\n wire: \"label\",\n },\n options: {\n wire: \"options\",\n },\n defaultValue: {\n wire: \"default_value\",\n },\n inSignup: {\n wire: \"in_signup\",\n },\n position: {\n wire: \"position\",\n },\n },\n },\n \"contactFields.remove\": {\n id: \"contactFields.remove\",\n method: \"DELETE\",\n path: \"/contact-fields/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"events.send\": {\n id: \"events.send\",\n method: \"POST\",\n path: \"/events\",\n pathParams: [],\n paginated: false,\n idempotent: true,\n body: {\n email: {\n wire: \"email\",\n },\n contactId: {\n wire: \"contact_id\",\n },\n event: {\n wire: \"event\",\n },\n properties: {\n wire: \"properties\",\n },\n occurredAt: {\n wire: \"occurred_at\",\n },\n createContact: {\n wire: \"create_contact\",\n },\n segmentId: {\n wire: \"segment_id\",\n },\n },\n },\n \"audienceFilters.list\": {\n id: \"audienceFilters.list\",\n method: \"GET\",\n path: \"/audience-filters\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"audienceFilters.create\": {\n id: \"audienceFilters.create\",\n method: \"POST\",\n path: \"/audience-filters\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n description: {\n wire: \"description\",\n },\n rules: {\n wire: \"rules\",\n },\n },\n },\n \"audienceFilters.get\": {\n id: \"audienceFilters.get\",\n method: \"GET\",\n path: \"/audience-filters/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"audienceFilters.update\": {\n id: \"audienceFilters.update\",\n method: \"PATCH\",\n path: \"/audience-filters/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n description: {\n wire: \"description\",\n },\n rules: {\n wire: \"rules\",\n },\n },\n },\n \"audienceFilters.remove\": {\n id: \"audienceFilters.remove\",\n method: \"DELETE\",\n path: \"/audience-filters/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"audienceFilters.count\": {\n id: \"audienceFilters.count\",\n method: \"POST\",\n path: \"/audience-filters/count\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n filterId: {\n wire: \"filter_id\",\n },\n rules: {\n wire: \"rules\",\n },\n segmentId: {\n wire: \"segment_id\",\n },\n },\n },\n \"signups.create\": {\n id: \"signups.create\",\n method: \"POST\",\n path: \"/signups\",\n pathParams: [],\n paginated: false,\n idempotent: true,\n body: {\n email: {\n wire: \"email\",\n },\n name: {\n wire: \"name\",\n },\n firstName: {\n wire: \"first_name\",\n },\n segmentId: {\n wire: \"segment_id\",\n },\n language: {\n wire: \"language\",\n },\n sourceUrl: {\n wire: \"source_url\",\n },\n customFields: {\n wire: \"custom_fields\",\n },\n },\n },\n \"segments.list\": {\n id: \"segments.list\",\n method: \"GET\",\n path: \"/segments\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"segments.create\": {\n id: \"segments.create\",\n method: \"POST\",\n path: \"/segments\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n slug: {\n wire: \"slug\",\n },\n language: {\n wire: \"language\",\n },\n description: {\n wire: \"description\",\n },\n themes: {\n wire: \"themes\",\n },\n },\n },\n \"topics.list\": {\n id: \"topics.list\",\n method: \"GET\",\n path: \"/topics\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n query: {\n segmentId: {\n wire: \"segment_id\",\n },\n },\n },\n \"segments.archive.get\": {\n id: \"segments.archive.get\",\n method: \"GET\",\n path: \"/segments/{id}/archive\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"segments.archive.update\": {\n id: \"segments.archive.update\",\n method: \"PATCH\",\n path: \"/segments/{id}/archive\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n enabled: {\n wire: \"enabled\",\n },\n slug: {\n wire: \"slug\",\n },\n description: {\n wire: \"description\",\n },\n author: {\n wire: \"author\",\n },\n about: {\n wire: \"about\",\n },\n avatarUrl: {\n wire: \"avatar_url\",\n },\n links: {\n wire: \"links\",\n props: {\n website: {\n wire: \"website\",\n },\n x: {\n wire: \"x\",\n },\n linkedin: {\n wire: \"linkedin\",\n },\n youtube: {\n wire: \"youtube\",\n },\n instagram: {\n wire: \"instagram\",\n },\n github: {\n wire: \"github\",\n },\n bluesky: {\n wire: \"bluesky\",\n },\n },\n },\n },\n },\n \"newsletters.archive.update\": {\n id: \"newsletters.archive.update\",\n method: \"PATCH\",\n path: \"/newsletters/{id}/archive\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n pinned: {\n wire: \"pinned\",\n },\n hidden: {\n wire: \"hidden\",\n },\n },\n },\n \"segments.domain.get\": {\n id: \"segments.domain.get\",\n method: \"GET\",\n path: \"/segments/{id}/domain\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"segments.domain.set\": {\n id: \"segments.domain.set\",\n method: \"POST\",\n path: \"/segments/{id}/domain\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n domain: {\n wire: \"domain\",\n },\n },\n },\n \"segments.domain.remove\": {\n id: \"segments.domain.remove\",\n method: \"DELETE\",\n path: \"/segments/{id}/domain\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"suppressions.list\": {\n id: \"suppressions.list\",\n method: \"GET\",\n path: \"/suppressions\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n reason: {\n wire: \"reason\",\n },\n },\n },\n \"suppressions.create\": {\n id: \"suppressions.create\",\n method: \"POST\",\n path: \"/suppressions\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n email: {\n wire: \"email\",\n },\n reason: {\n wire: \"reason\",\n },\n notes: {\n wire: \"notes\",\n },\n },\n },\n \"suppressions.remove\": {\n id: \"suppressions.remove\",\n method: \"DELETE\",\n path: \"/suppressions/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"images.list\": {\n id: \"images.list\",\n method: \"GET\",\n path: \"/images\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"images.create\": {\n id: \"images.create\",\n method: \"POST\",\n path: \"/images\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n rawBody: true,\n },\n \"stats.overview\": {\n id: \"stats.overview\",\n method: \"GET\",\n path: \"/stats/overview\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n },\n \"domains.create\": {\n id: \"domains.create\",\n method: \"POST\",\n path: \"/domains\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n trackingSubdomain: {\n wire: \"tracking_subdomain\",\n },\n },\n },\n \"domains.list\": {\n id: \"domains.list\",\n method: \"GET\",\n path: \"/domains\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"domains.get\": {\n id: \"domains.get\",\n method: \"GET\",\n path: \"/domains/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"domains.verify\": {\n id: \"domains.verify\",\n method: \"POST\",\n path: \"/domains/{id}/verify\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"apiKeys.create\": {\n id: \"apiKeys.create\",\n method: \"POST\",\n path: \"/api-keys\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n permission: {\n wire: \"permission\",\n },\n domainId: {\n wire: \"domain_id\",\n },\n },\n },\n \"apiKeys.list\": {\n id: \"apiKeys.list\",\n method: \"GET\",\n path: \"/api-keys\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"apiKeys.update\": {\n id: \"apiKeys.update\",\n method: \"PATCH\",\n path: \"/api-keys/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n },\n },\n \"apiKeys.remove\": {\n id: \"apiKeys.remove\",\n method: \"DELETE\",\n path: \"/api-keys/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"logs.list\": {\n id: \"logs.list\",\n method: \"GET\",\n path: \"/logs\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"logs.get\": {\n id: \"logs.get\",\n method: \"GET\",\n path: \"/logs/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"usage.get\": {\n id: \"usage.get\",\n method: \"GET\",\n path: \"/usage\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n },\n \"sequences.list\": {\n id: \"sequences.list\",\n method: \"GET\",\n path: \"/sequences\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n query: {\n includeArchived: {\n wire: \"include_archived\",\n },\n },\n },\n \"sequences.create\": {\n id: \"sequences.create\",\n method: \"POST\",\n path: \"/sequences\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n description: {\n wire: \"description\",\n },\n segmentId: {\n wire: \"segment_id\",\n },\n topicId: {\n wire: \"topic_id\",\n },\n trigger: {\n wire: \"trigger\",\n props: {\n type: {\n wire: \"type\",\n },\n includeImports: {\n wire: \"include_imports\",\n },\n topicId: {\n wire: \"topic_id\",\n },\n leadMagnetId: {\n wire: \"lead_magnet_id\",\n },\n event: {\n wire: \"event\",\n },\n newsletterId: {\n wire: \"newsletter_id\",\n },\n filterId: {\n wire: \"filter_id\",\n },\n includeExisting: {\n wire: \"include_existing\",\n },\n },\n },\n reentry: {\n wire: \"reentry\",\n props: {\n mode: {\n wire: \"mode\",\n },\n days: {\n wire: \"days\",\n },\n },\n },\n exit: {\n wire: \"exit\",\n props: {\n events: {\n wire: \"events\",\n },\n filterId: {\n wire: \"filter_id\",\n },\n },\n },\n steps: {\n wire: \"steps\",\n items: {\n id: {\n wire: \"id\",\n },\n type: {\n wire: \"type\",\n },\n subject: {\n wire: \"subject\",\n },\n preheader: {\n wire: \"preheader\",\n },\n markdown: {\n wire: \"markdown\",\n },\n html: {\n wire: \"html\",\n },\n doc: {\n wire: \"doc\",\n },\n templateId: {\n wire: \"template_id\",\n },\n amount: {\n wire: \"amount\",\n },\n unit: {\n wire: \"unit\",\n },\n until: {\n wire: \"until\",\n props: {\n time: {\n wire: \"time\",\n },\n weekdays: {\n wire: \"weekdays\",\n },\n timezone: {\n wire: \"timezone\",\n },\n },\n },\n event: {\n wire: \"event\",\n },\n timeoutHours: {\n wire: \"timeout_hours\",\n },\n onTimeout: {\n wire: \"on_timeout\",\n },\n filterId: {\n wire: \"filter_id\",\n },\n rule: {\n wire: \"rule\",\n },\n yes: {\n wire: \"yes\",\n },\n no: {\n wire: \"no\",\n },\n action: {\n wire: \"action\",\n },\n key: {\n wire: \"key\",\n },\n value: {\n wire: \"value\",\n },\n topicId: {\n wire: \"topic_id\",\n },\n webhookId: {\n wire: \"webhook_id\",\n },\n },\n },\n },\n },\n \"sequences.get\": {\n id: \"sequences.get\",\n method: \"GET\",\n path: \"/sequences/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"sequences.update\": {\n id: \"sequences.update\",\n method: \"PATCH\",\n path: \"/sequences/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n description: {\n wire: \"description\",\n },\n segmentId: {\n wire: \"segment_id\",\n },\n topicId: {\n wire: \"topic_id\",\n },\n trigger: {\n wire: \"trigger\",\n props: {\n type: {\n wire: \"type\",\n },\n includeImports: {\n wire: \"include_imports\",\n },\n topicId: {\n wire: \"topic_id\",\n },\n leadMagnetId: {\n wire: \"lead_magnet_id\",\n },\n event: {\n wire: \"event\",\n },\n newsletterId: {\n wire: \"newsletter_id\",\n },\n filterId: {\n wire: \"filter_id\",\n },\n includeExisting: {\n wire: \"include_existing\",\n },\n },\n },\n reentry: {\n wire: \"reentry\",\n props: {\n mode: {\n wire: \"mode\",\n },\n days: {\n wire: \"days\",\n },\n },\n },\n exit: {\n wire: \"exit\",\n props: {\n events: {\n wire: \"events\",\n },\n filterId: {\n wire: \"filter_id\",\n },\n },\n },\n steps: {\n wire: \"steps\",\n items: {\n id: {\n wire: \"id\",\n },\n type: {\n wire: \"type\",\n },\n subject: {\n wire: \"subject\",\n },\n preheader: {\n wire: \"preheader\",\n },\n markdown: {\n wire: \"markdown\",\n },\n html: {\n wire: \"html\",\n },\n doc: {\n wire: \"doc\",\n },\n templateId: {\n wire: \"template_id\",\n },\n amount: {\n wire: \"amount\",\n },\n unit: {\n wire: \"unit\",\n },\n until: {\n wire: \"until\",\n props: {\n time: {\n wire: \"time\",\n },\n weekdays: {\n wire: \"weekdays\",\n },\n timezone: {\n wire: \"timezone\",\n },\n },\n },\n event: {\n wire: \"event\",\n },\n timeoutHours: {\n wire: \"timeout_hours\",\n },\n onTimeout: {\n wire: \"on_timeout\",\n },\n filterId: {\n wire: \"filter_id\",\n },\n rule: {\n wire: \"rule\",\n },\n yes: {\n wire: \"yes\",\n },\n no: {\n wire: \"no\",\n },\n action: {\n wire: \"action\",\n },\n key: {\n wire: \"key\",\n },\n value: {\n wire: \"value\",\n },\n topicId: {\n wire: \"topic_id\",\n },\n webhookId: {\n wire: \"webhook_id\",\n },\n },\n },\n },\n },\n \"sequences.remove\": {\n id: \"sequences.remove\",\n method: \"DELETE\",\n path: \"/sequences/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"sequences.activate\": {\n id: \"sequences.activate\",\n method: \"POST\",\n path: \"/sequences/{id}/activate\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"sequences.pause\": {\n id: \"sequences.pause\",\n method: \"POST\",\n path: \"/sequences/{id}/pause\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"sequences.archive\": {\n id: \"sequences.archive\",\n method: \"POST\",\n path: \"/sequences/{id}/archive\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"sequences.enrollments\": {\n id: \"sequences.enrollments\",\n method: \"GET\",\n path: \"/sequences/{id}/enrollments\",\n pathParams: [\"id\"],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n status: {\n wire: \"status\",\n },\n },\n },\n \"sequences.enroll\": {\n id: \"sequences.enroll\",\n method: \"POST\",\n path: \"/sequences/{id}/enrollments\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n email: {\n wire: \"email\",\n },\n contactId: {\n wire: \"contact_id\",\n },\n },\n },\n \"sequences.unenroll\": {\n id: \"sequences.unenroll\",\n method: \"DELETE\",\n path: \"/sequences/{id}/enrollments/{enrollment_id}\",\n pathParams: [\"id\", \"enrollment_id\"],\n paginated: false,\n idempotent: false,\n },\n \"sequences.stats\": {\n id: \"sequences.stats\",\n method: \"GET\",\n path: \"/sequences/{id}/stats\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"webhooks.create\": {\n id: \"webhooks.create\",\n method: \"POST\",\n path: \"/webhooks\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n endpoint: {\n wire: \"endpoint\",\n },\n events: {\n wire: \"events\",\n },\n description: {\n wire: \"description\",\n },\n includeNewsletters: {\n wire: \"include_newsletters\",\n },\n segmentIds: {\n wire: \"segment_ids\",\n },\n domains: {\n wire: \"domains\",\n },\n },\n },\n \"webhooks.list\": {\n id: \"webhooks.list\",\n method: \"GET\",\n path: \"/webhooks\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n },\n },\n \"webhooks.get\": {\n id: \"webhooks.get\",\n method: \"GET\",\n path: \"/webhooks/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"webhooks.update\": {\n id: \"webhooks.update\",\n method: \"PATCH\",\n path: \"/webhooks/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n endpoint: {\n wire: \"endpoint\",\n },\n events: {\n wire: \"events\",\n },\n status: {\n wire: \"status\",\n },\n description: {\n wire: \"description\",\n },\n includeNewsletters: {\n wire: \"include_newsletters\",\n },\n segmentIds: {\n wire: \"segment_ids\",\n },\n domains: {\n wire: \"domains\",\n },\n },\n },\n \"webhooks.remove\": {\n id: \"webhooks.remove\",\n method: \"DELETE\",\n path: \"/webhooks/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"webhooks.rotateSigningSecret\": {\n id: \"webhooks.rotateSigningSecret\",\n method: \"POST\",\n path: \"/webhooks/{id}/signing-secret/rotate\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"webhooks.test\": {\n id: \"webhooks.test\",\n method: \"POST\",\n path: \"/webhooks/{id}/test\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n type: {\n wire: \"type\",\n },\n },\n },\n \"webhooks.deliveries\": {\n id: \"webhooks.deliveries\",\n method: \"GET\",\n path: \"/webhooks/{id}/deliveries\",\n pathParams: [\"id\"],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n status: {\n wire: \"status\",\n },\n },\n },\n \"webhooks.retryDelivery\": {\n id: \"webhooks.retryDelivery\",\n method: \"POST\",\n path: \"/webhooks/{id}/deliveries/{delivery_id}/retry\",\n pathParams: [\"id\", \"delivery_id\"],\n paginated: false,\n idempotent: false,\n },\n \"inboxes.list\": {\n id: \"inboxes.list\",\n method: \"GET\",\n path: \"/inboxes\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n },\n \"inboxes.create\": {\n id: \"inboxes.create\",\n method: \"POST\",\n path: \"/inboxes\",\n pathParams: [],\n paginated: false,\n idempotent: false,\n body: {\n name: {\n wire: \"name\",\n },\n displayName: {\n wire: \"display_name\",\n },\n description: {\n wire: \"description\",\n },\n domainId: {\n wire: \"domain_id\",\n },\n replyFrom: {\n wire: \"reply_from\",\n },\n },\n },\n \"inboxes.get\": {\n id: \"inboxes.get\",\n method: \"GET\",\n path: \"/inboxes/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"inboxes.update\": {\n id: \"inboxes.update\",\n method: \"PATCH\",\n path: \"/inboxes/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n displayName: {\n wire: \"display_name\",\n },\n description: {\n wire: \"description\",\n },\n replyFrom: {\n wire: \"reply_from\",\n },\n status: {\n wire: \"status\",\n },\n },\n },\n \"inboxes.remove\": {\n id: \"inboxes.remove\",\n method: \"DELETE\",\n path: \"/inboxes/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"threads.list\": {\n id: \"threads.list\",\n method: \"GET\",\n path: \"/threads\",\n pathParams: [],\n paginated: true,\n idempotent: false,\n query: {\n limit: {\n wire: \"limit\",\n },\n after: {\n wire: \"after\",\n },\n before: {\n wire: \"before\",\n },\n inboxId: {\n wire: \"inbox_id\",\n },\n status: {\n wire: \"status\",\n },\n label: {\n wire: \"label\",\n },\n spam: {\n wire: \"spam\",\n },\n assigneeAgent: {\n wire: \"assignee_agent\",\n },\n unread: {\n wire: \"unread\",\n },\n },\n },\n \"threads.get\": {\n id: \"threads.get\",\n method: \"GET\",\n path: \"/threads/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"threads.update\": {\n id: \"threads.update\",\n method: \"PATCH\",\n path: \"/threads/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n status: {\n wire: \"status\",\n },\n labels: {\n wire: \"labels\",\n },\n addLabels: {\n wire: \"add_labels\",\n },\n removeLabels: {\n wire: \"remove_labels\",\n },\n assigneeAgent: {\n wire: \"assignee_agent\",\n },\n assigneeUserId: {\n wire: \"assignee_user_id\",\n },\n spam: {\n wire: \"spam\",\n },\n unread: {\n wire: \"unread\",\n },\n },\n },\n \"threads.reply\": {\n id: \"threads.reply\",\n method: \"POST\",\n path: \"/threads/{id}/reply\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n text: {\n wire: \"text\",\n },\n html: {\n wire: \"html\",\n },\n messageId: {\n wire: \"message_id\",\n },\n replyAll: {\n wire: \"reply_all\",\n },\n cc: {\n wire: \"cc\",\n },\n quote: {\n wire: \"quote\",\n },\n draft: {\n wire: \"draft\",\n },\n status: {\n wire: \"status\",\n },\n },\n },\n \"messages.get\": {\n id: \"messages.get\",\n method: \"GET\",\n path: \"/messages/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"messages.update\": {\n id: \"messages.update\",\n method: \"PATCH\",\n path: \"/messages/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n text: {\n wire: \"text\",\n },\n html: {\n wire: \"html\",\n },\n cc: {\n wire: \"cc\",\n },\n },\n },\n \"messages.send\": {\n id: \"messages.send\",\n method: \"POST\",\n path: \"/messages/{id}/send\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n body: {\n status: {\n wire: \"status\",\n },\n },\n },\n \"messages.remove\": {\n id: \"messages.remove\",\n method: \"DELETE\",\n path: \"/messages/{id}\",\n pathParams: [\"id\"],\n paginated: false,\n idempotent: false,\n },\n \"messages.attachment\": {\n id: \"messages.attachment\",\n method: \"GET\",\n path: \"/messages/{id}/attachments/{attachment_id}\",\n pathParams: [\"id\", \"attachment_id\"],\n paginated: false,\n idempotent: false,\n },\n};\n\nexport const OPERATION_IDS = Object.keys(OPERATIONS);\n","import type { Client } from \"./client\";\nimport { OPERATIONS } from \"./generated/operations\";\nimport type { BatchSendParams, BatchSendResponse, EmailsSendParams, EmailsSendResponse } from \"./generated/types\";\nimport type { RequestOptions, Response } from \"./types\";\n\ntype SendAttachment = Omit<NonNullable<EmailsSendParams[\"attachments\"]>[number], \"content\" | \"filename\"> & {\n content?: string | Uint8Array;\n /** `false` (Resend 6.32) : pas de nom de fichier ; la clé est omise de la requête. Utile avec `path`. */\n filename?: string | false | undefined;\n};\n\ntype ContentKeys = \"from\" | \"subject\" | \"template\" | \"html\" | \"text\";\ntype EmailTemplate = NonNullable<EmailsSendParams[\"template\"]>;\n\n/**\n * Comme `CreateEmailOptions` de Resend 6.32 : soit un contenu (`html`, `text` ou `react`) avec `from` et\n * `subject` obligatoires, soit un `template` publié qui fournit `from` et `subject` s'ils manquent.\n */\ntype WithContent<Base> =\n | (Base & { from: string; subject: string; html?: string; text?: string; react?: unknown; template?: never })\n | (Base & { from?: string; subject?: string; template: EmailTemplate; html?: never; text?: never; react?: never });\n\n/** Même charge utile que `emails.send` de Resend : `react`, contenu binaire et envoi par template. */\nexport type SendEmailParams = WithContent<Omit<EmailsSendParams, ContentKeys | \"attachments\"> & { attachments?: SendAttachment[] }>;\n\n/** Un email de `batch.send` : comme `emails.send`, sans pièces jointes. */\nexport type BatchEmailParams = WithContent<Omit<BatchSendParams[number], ContentKeys>>;\n\nexport type BatchSendOptions = RequestOptions & { batchValidation?: \"strict\" | \"permissive\" };\n\nconst RENDER_ERROR =\n \"Failed to render React component. Make sure to install `@react-email/render` or `@react-email/components`.\";\n\nclass RenderError extends Error {}\n\n/**\n * Rend un élément React en HTML. Toute panne (module absent, module sans `render`,\n * composant qui lève) devient une `RenderError`, convertie en `application_error` :\n * le SDK ne lève jamais sur un envoi.\n */\nexport async function renderReact(node: unknown): Promise<string> {\n let renderFn: unknown;\n try {\n ({ render: renderFn } = await import(\"@react-email/render\"));\n } catch {\n throw new RenderError(RENDER_ERROR);\n }\n if (typeof renderFn !== \"function\") throw new RenderError(RENDER_ERROR);\n try {\n return await (renderFn as (node: unknown) => string | Promise<string>)(node);\n } catch (err) {\n throw new RenderError(err instanceof Error ? err.message : String(err));\n }\n}\n\nfunction toBase64(bytes: Uint8Array): string {\n if (typeof Buffer !== \"undefined\") return Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString(\"base64\");\n let binary = \"\";\n for (let i = 0; i < bytes.length; i += 0x8000) {\n binary += String.fromCharCode(...bytes.subarray(i, i + 0x8000));\n }\n return btoa(binary);\n}\n\n/** Rend `react` en `html` et encode les pièces jointes binaires, sans modifier l'objet de l'appelant. */\nasync function prepare<T extends { react?: unknown; attachments?: SendAttachment[] }>(email: T) {\n const { react, attachments, ...rest } = email;\n const out: Record<string, unknown> = { ...rest };\n if (react) out.html = await renderReact(react);\n if (attachments) {\n out.attachments = attachments.map((a) => {\n const { filename, ...file } = a;\n return {\n ...file,\n ...(filename === false ? {} : { filename }),\n ...(a.content instanceof Uint8Array ? { content: toBase64(a.content) } : {}),\n };\n });\n }\n return out;\n}\n\nexport function renderFailure(err: unknown): Response<never> | undefined {\n if (!(err instanceof RenderError)) return undefined;\n return { data: null, error: { name: \"application_error\", statusCode: null, message: err.message }, headers: null };\n}\n\nexport function makeEmailsSend(client: Client) {\n return async (payload: SendEmailParams, options?: RequestOptions): Promise<Response<EmailsSendResponse>> => {\n try {\n const body = await prepare(payload);\n return (await client.call(OPERATIONS[\"emails.send\"]!, body, options)) as Response<EmailsSendResponse>;\n } catch (err) {\n const failure = renderFailure(err);\n if (failure) return failure;\n throw err;\n }\n };\n}\n\nexport function makeBatchSend(client: Client) {\n return async (emails: BatchEmailParams[], options: BatchSendOptions = {}): Promise<Response<BatchSendResponse>> => {\n try {\n const body = [];\n for (const email of emails) body.push(await prepare(email));\n const { batchValidation, ...requestOptions } = options;\n const headers = new Headers({ \"x-batch-validation\": batchValidation ?? \"strict\" });\n for (const [key, value] of new Headers(requestOptions.headers)) headers.set(key, value);\n return (await client.call(OPERATIONS[\"batch.send\"]!, body, { ...requestOptions, headers })) as Response<BatchSendResponse>;\n } catch (err) {\n const failure = renderFailure(err);\n if (failure) return failure;\n throw err;\n }\n };\n}\n","// SHA-256 (FIPS 180-4) et HMAC (RFC 2104) synchrones, sans dépendance ni API de la plateforme.\n\nconst K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n]);\n\nconst rotr = (x: number, n: number) => (x >>> n) | (x << (32 - n));\n\nexport function sha256(data: Uint8Array): Uint8Array {\n const h = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n ]);\n const padded = new Uint8Array((((data.length + 9 + 63) >> 6) << 6));\n padded.set(data);\n padded[data.length] = 0x80;\n const view = new DataView(padded.buffer);\n view.setUint32(padded.length - 8, Math.floor(data.length / 0x20000000));\n view.setUint32(padded.length - 4, (data.length << 3) >>> 0);\n\n const w = new Uint32Array(64);\n for (let off = 0; off < padded.length; off += 64) {\n for (let i = 0; i < 16; i++) w[i] = view.getUint32(off + i * 4);\n for (let i = 16; i < 64; i++) {\n const a = w[i - 15]!;\n const b = w[i - 2]!;\n const s0 = rotr(a, 7) ^ rotr(a, 18) ^ (a >>> 3);\n const s1 = rotr(b, 17) ^ rotr(b, 19) ^ (b >>> 10);\n w[i] = (w[i - 16]! + s0 + w[i - 7]! + s1) | 0;\n }\n let [a, b, c, d, e, f, g, hh] = h as unknown as number[] as [number, number, number, number, number, number, number, number];\n for (let i = 0; i < 64; i++) {\n const t1 = (hh + (rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25)) + ((e & f) ^ (~e & g)) + K[i]! + w[i]!) | 0;\n const t2 = ((rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22)) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n hh = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n h[0] = (h[0]! + a) | 0;\n h[1] = (h[1]! + b) | 0;\n h[2] = (h[2]! + c) | 0;\n h[3] = (h[3]! + d) | 0;\n h[4] = (h[4]! + e) | 0;\n h[5] = (h[5]! + f) | 0;\n h[6] = (h[6]! + g) | 0;\n h[7] = (h[7]! + hh) | 0;\n }\n const out = new Uint8Array(32);\n const outView = new DataView(out.buffer);\n for (let i = 0; i < 8; i++) outView.setUint32(i * 4, h[i]!);\n return out;\n}\n\nexport function hmacSha256(key: Uint8Array, message: Uint8Array): Uint8Array {\n const block = new Uint8Array(64);\n block.set(key.length > 64 ? sha256(key) : key);\n const inner = new Uint8Array(64 + message.length);\n const outer = new Uint8Array(64 + 32);\n for (let i = 0; i < 64; i++) {\n inner[i] = block[i]! ^ 0x36;\n outer[i] = block[i]! ^ 0x5c;\n }\n inner.set(message, 64);\n outer.set(sha256(inner), 64);\n return sha256(outer);\n}\n","import { hmacSha256 } from \"./sha256\";\n\nconst TOLERANCE_SECONDS = 5 * 60;\nconst PREFIX = \"whsec_\";\nconst B64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\nexport class WebhookVerificationError extends Error {\n constructor(message: string) {\n super(message);\n Object.setPrototypeOf(this, WebhookVerificationError.prototype);\n this.name = \"WebhookVerificationError\";\n }\n}\n\nexport type WebhookEvent = { type: string; created_at: string; data: Record<string, unknown> };\n\nexport interface VerifyWebhookInput {\n payload: string;\n headers: { id: string; timestamp: string; signature: string };\n webhookSecret: string;\n}\n\nfunction base64Decode(input: string): Uint8Array {\n // Mêmes règles que @stablelib/base64 (utilisé par standardwebhooks 1.1.1).\n const clean = input.replace(/=+$/, \"\");\n if (input.length < 4 || input.length - clean.length > 2) throw new Error(\"Base64Coder: incorrect padding\");\n if (clean.length % 4 === 1) throw new Error(\"Base64Coder: incorrect characters for decoding\");\n const out = new Uint8Array(Math.floor((clean.length * 3) / 4));\n let acc = 0;\n let bits = 0;\n let n = 0;\n for (let i = 0; i < clean.length; i++) {\n const v = B64.indexOf(clean[i]!);\n if (v < 0) throw new Error(\"Base64Coder: incorrect characters for decoding\");\n acc = (acc << 6) | v;\n bits += 6;\n if (bits >= 8) {\n bits -= 8;\n out[n++] = (acc >> bits) & 0xff;\n acc &= (1 << bits) - 1;\n }\n }\n return out;\n}\n\nfunction base64Encode(bytes: Uint8Array): string {\n let out = \"\";\n for (let i = 0; i < bytes.length; i += 3) {\n const n = (bytes[i]! << 16) | ((bytes[i + 1] ?? 0) << 8) | (bytes[i + 2] ?? 0);\n out += B64[(n >> 18) & 63]! + B64[(n >> 12) & 63]!;\n out += i + 1 < bytes.length ? B64[(n >> 6) & 63]! : \"=\";\n out += i + 2 < bytes.length ? B64[n & 63]! : \"=\";\n }\n return out;\n}\n\n/** Comparaison en temps constant (la longueur seule peut fuiter, comme chez standardwebhooks). */\nfunction timingSafeEqual(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++) diff |= a[i]! ^ b[i]!;\n return diff === 0;\n}\n\nfunction toPayloadString(payload: unknown): string {\n if (typeof payload === \"string\") return payload;\n if ((payload as { constructor?: { name?: string } } | null)?.constructor?.name === \"Buffer\") return String(payload);\n throw new Error(\"Expected payload to be of type string or Buffer.\");\n}\n\n/** Même contrat que `resend.webhooks.verify` (Standard Webhooks, synchrone). */\nexport function verify(input: VerifyWebhookInput): WebhookEvent {\n const secret = input.webhookSecret;\n if (typeof secret !== \"string\") throw new Error(\"Expected secret to be of type string\");\n const key = base64Decode(secret.startsWith(PREFIX) ? secret.slice(PREFIX.length) : secret);\n if (key.length === 0) throw new Error(\"Secret can't be empty.\");\n\n const { id, timestamp: timestampHeader, signature } = input.headers ?? ({} as VerifyWebhookInput[\"headers\"]);\n if (!signature || !id || !timestampHeader) throw new WebhookVerificationError(\"Missing required headers\");\n\n const now = Math.floor(Date.now() / 1000);\n const timestamp = parseInt(timestampHeader, 10);\n if (Number.isNaN(timestamp)) throw new WebhookVerificationError(\"Invalid Signature Headers\");\n if (now - timestamp > TOLERANCE_SECONDS) throw new WebhookVerificationError(\"Message timestamp too old\");\n if (timestamp > now + TOLERANCE_SECONDS) throw new WebhookVerificationError(\"Message timestamp too new\");\n\n const body = toPayloadString(input.payload);\n const encoder = new TextEncoder();\n const expected = encoder.encode(\n base64Encode(hmacSha256(key, encoder.encode(`${id}.${timestamp}.${body}`))),\n );\n for (const candidate of signature.split(\" \")) {\n const [version, value] = candidate.split(\",\");\n if (version !== \"v1\") continue;\n if (timingSafeEqual(encoder.encode(value ?? \"\"), expected)) {\n return (body === \"\" ? undefined : JSON.parse(body)) as WebhookEvent;\n }\n }\n throw new WebhookVerificationError(\"No matching signature found\");\n}\n","import { Client } from \"./client\";\nimport { makeBatchSend, makeEmailsSend, renderFailure, renderReact } from \"./emails\";\nimport { OPERATIONS, type Operation } from \"./generated/operations\";\nimport type { SmartletterResources } from \"./generated/catalogue\";\nimport { verify } from \"./webhooks/verify\";\nimport type { RequestOptions, Response } from \"./types\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Leaf = (...args: any[]) => unknown;\ntype Tree = { [key: string]: Tree | Leaf };\n\nfunction camel(snake: string): string {\n return snake.replace(/_([a-z0-9])/g, (_, c: string) => c.toUpperCase());\n}\n\n/**\n * Calling convention, the same for every generated operation:\n * - one path param and nothing else: `fn(id, options?)`\n * - otherwise `fn(params?, options?)` (path params are keys of `params`;\n * array bodies and raw bodies are passed as-is).\n * Exceptions imposed by Resend go in this table (operation id -> style):\n * - \"id\": `fn(id, options?)` even if the route accepts a body;\n * - \"params\": `fn(params?, options?)`;\n * - \"idBody\": `fn(id, payload?, options?)`, Resend's style for its `update` methods.\n */\nexport const CALL_STYLE_OVERRIDES: Record<string, \"id\" | \"params\" | \"idBody\"> = {\n \"apiKeys.update\": \"idBody\",\n \"templates.update\": \"idBody\",\n \"webhooks.update\": \"idBody\",\n // Resend : `publish(identifier, requestOptions?)`. Le `versionId` optionnel de Smartletter n'y a pas de place.\n \"templates.publish\": \"id\",\n};\n\nfunction callStyle(op: Operation): \"id\" | \"params\" | \"idBody\" {\n const forced = CALL_STYLE_OVERRIDES[op.id];\n if (forced) return forced;\n return op.pathParams.length === 1 && !op.body && !op.query && !op.rawBody && !op.bodyIsArray ? \"id\" : \"params\";\n}\n\nfunction makeLeaf(client: Client, op: Operation): Leaf {\n const style = callStyle(op);\n if (style === \"id\") {\n const name = camel(op.pathParams[0]!);\n return (id: unknown, options?: RequestOptions) => client.call(op, { [name]: id }, options);\n }\n if (style === \"idBody\") {\n const name = camel(op.pathParams[0]!);\n return (id: unknown, payload?: Record<string, unknown>, options?: RequestOptions) =>\n client.call(op, { ...payload, [name]: id }, options);\n }\n return (args?: unknown, options?: RequestOptions) => {\n const needsObject = op.pathParams.length > 0 && args === undefined;\n return client.call(op, needsObject ? {} : (args as Parameters<Client[\"call\"]>[1]), options);\n };\n}\n\ntype Publish = (id: string, options?: RequestOptions) => Promise<Response<unknown>>;\n\n/** Promesse de création qu'on peut enchaîner avec `.publish()`, comme `ChainableTemplateResult` de Resend. */\nfunction chainable(promise: Promise<Response<unknown>>, publish: Publish) {\n return Object.assign(promise, {\n async publish(options?: RequestOptions): Promise<Response<unknown>> {\n const { data, error } = await promise;\n if (error) return { data: null, error, headers: null };\n return publish((data as { id: string }).id, options);\n },\n });\n}\n\nfunction makeTemplateMethods(templates: Tree) {\n const create = templates.create as Leaf;\n const duplicate = templates.duplicate as Leaf;\n const publish = templates.publish as Publish;\n const createWithReact = async (payload: Record<string, unknown>, options?: RequestOptions) => {\n try {\n const { react, ...rest } = payload ?? {};\n const body = react ? { ...rest, html: await renderReact(react) } : payload;\n return (await create(body, options)) as Response<unknown>;\n } catch (err) {\n const failure = renderFailure(err);\n if (failure) return failure;\n throw err;\n }\n };\n templates.create = ((payload: Record<string, unknown>, options?: RequestOptions) =>\n chainable(createWithReact(payload, options), publish)) as Leaf;\n templates.duplicate = ((id: string, options?: RequestOptions) =>\n chainable(duplicate(id, options) as Promise<Response<unknown>>, publish)) as Leaf;\n}\n\nexport function buildResources(client: Client): SmartletterResources {\n const root: Tree = {};\n for (const op of Object.values(OPERATIONS)) {\n const segments = op.id.split(\".\");\n const leaf = segments.pop()!;\n let node = root;\n for (const segment of segments) {\n const next = node[segment];\n node = node[segment] = typeof next === \"object\" ? next : {};\n }\n node[leaf] = makeLeaf(client, op);\n }\n // Méthodes d'envoi propres à Resend (react, pièces jointes binaires, en-tête de lot).\n (root.emails as Tree).send = makeEmailsSend(client) as unknown as Leaf;\n (root.batch as Tree).send = makeBatchSend(client) as unknown as Leaf;\n // Alias exposés par Resend 6.32.\n (root.emails as Tree).create = (root.emails as Tree).send!;\n (root.batch as Tree).create = (root.batch as Tree).send!;\n // templates.create / duplicate enchaînables avec `.publish()`, et `react` comme chez Resend.\n makeTemplateMethods(root.templates as Tree);\n // Vérification de signature: synchrone, sans réseau (une des deux méthodes qui lèvent).\n (root.webhooks as Tree).verify = verify as unknown as Leaf;\n return root as unknown as SmartletterResources;\n}\n","import { Client } from \"./client\";\nimport type {\n ApiKeysUpdateParams,\n ApiKeysUpdateResponse,\n BatchSendResponse,\n EmailsSendResponse,\n TemplatesCreateParams,\n TemplatesCreateResponse,\n TemplatesDuplicateResponse,\n TemplatesPublishResponse,\n TemplatesUpdateParams,\n TemplatesUpdateResponse,\n WebhooksUpdateParams,\n WebhooksUpdateResponse,\n} from \"./generated/types\";\nimport type { SmartletterResources } from \"./generated/catalogue\";\nimport type { BatchEmailParams, BatchSendOptions, SendEmailParams } from \"./emails\";\nimport { buildResources } from \"./resources\";\nimport type { RequestOptions, Response } from \"./types\";\nimport type { VerifyWebhookInput, WebhookEvent } from \"./webhooks/verify\";\n\n/** Résultat de `templates.create` / `templates.duplicate` : une promesse qu'on peut enchaîner avec `.publish()`. */\nexport type ChainableTemplateResult<T> = Promise<Response<T>> & {\n publish(options?: RequestOptions): Promise<Response<TemplatesPublishResponse>>;\n};\n\n/** Comme Resend : `react` rendu en `html` via `@react-email/render`, l'un ou l'autre. */\nexport type CreateTemplateParams = Omit<TemplatesCreateParams, \"html\"> & { html?: string; react?: unknown };\n\ntype SendEmail = (payload: SendEmailParams, options?: RequestOptions) => Promise<Response<EmailsSendResponse>>;\ntype SendBatch = (emails: BatchEmailParams[], options?: BatchSendOptions) => Promise<Response<BatchSendResponse>>;\n\n/** Méthodes dont Resend 6.32 impose la forme : elles remplacent celles du catalogue. */\nexport interface Smartletter\n extends Omit<SmartletterResources, \"emails\" | \"batch\" | \"apiKeys\" | \"templates\" | \"webhooks\"> {\n emails: Omit<SmartletterResources[\"emails\"], \"send\"> & { send: SendEmail; create: SendEmail };\n batch: { send: SendBatch; create: SendBatch };\n apiKeys: Omit<SmartletterResources[\"apiKeys\"], \"update\"> & {\n update(\n id: string,\n payload: Omit<ApiKeysUpdateParams, \"id\">,\n options?: RequestOptions,\n ): Promise<Response<ApiKeysUpdateResponse>>;\n };\n templates: Omit<SmartletterResources[\"templates\"], \"create\" | \"duplicate\" | \"publish\" | \"update\"> & {\n create(payload: CreateTemplateParams, options?: RequestOptions): ChainableTemplateResult<TemplatesCreateResponse>;\n duplicate(id: string, options?: RequestOptions): ChainableTemplateResult<TemplatesDuplicateResponse>;\n publish(id: string, options?: RequestOptions): Promise<Response<TemplatesPublishResponse>>;\n update(\n id: string,\n payload: Omit<TemplatesUpdateParams, \"id\">,\n options?: RequestOptions,\n ): Promise<Response<TemplatesUpdateResponse>>;\n };\n webhooks: Omit<SmartletterResources[\"webhooks\"], \"update\"> & {\n update(\n id: string,\n payload: Omit<WebhooksUpdateParams, \"id\">,\n options?: RequestOptions,\n ): Promise<Response<WebhooksUpdateResponse>>;\n verify(input: VerifyWebhookInput): WebhookEvent;\n };\n}\n\nexport class Smartletter extends Client {\n constructor(key?: string, options: { baseUrl?: string; userAgent?: string } = {}) {\n super(key, options);\n Object.assign(this, buildResources(this));\n }\n}\n\nexport { Smartletter as Resend };\nexport type { ErrorResponse, RequestOptions, Response } from \"./types\";\nexport type * from \"./generated/types\";\nexport type { BatchEmailParams, BatchSendOptions, SendEmailParams } from \"./emails\";\nexport type * from \"./resend-types\";\nexport { WebhookVerificationError } from \"./webhooks/verify\";\nexport type { VerifyWebhookInput, WebhookEvent } from \"./webhooks/verify\";\n"],"mappings":"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","names":["text","a","b","camel"]}