shipmail 0.4.21 → 0.4.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-key-scopes.cjs +2 -0
- package/dist/api-key-scopes.cjs.map +1 -1
- package/dist/api-key-scopes.d.cts +1 -1
- package/dist/api-key-scopes.d.ts +1 -1
- package/dist/api-key-scopes.js +2 -0
- package/dist/api-key-scopes.js.map +1 -1
- package/dist/index.cjs +44 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +61 -1
- package/dist/index.d.ts +61 -1
- package/dist/index.js +44 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/api-key-scopes.ts","../src/errors.ts","../src/pagination.ts","../src/resource.ts","../src/resources/audiences.ts","../src/resources/automations.ts","../src/resources/booking-pages.ts","../src/resources/calendar.ts","../src/resources/capabilities.ts","../src/resources/domains.ts","../src/resources/mailboxes.ts","../src/resources/messages.ts","../src/resources/newsletters.ts","../src/resources/partner.ts","../src/resources/reply-scans.ts","../src/resources/scheduled-messages.ts","../src/resources/status.ts","../src/resources/suppressions.ts","../src/resources/threads.ts","../src/resources/webhooks.ts","../src/version.ts","../src/client.ts","../src/types/booking-page.ts","../src/types/common.ts","../src/webhook-verification.ts"],"names":["path","base"],"mappings":"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","file":"index.js","sourcesContent":["export const API_KEY_SCOPES = [\n \"*\",\n \"audiences:read\",\n \"audiences:write\",\n \"automations:read\",\n \"automations:write\",\n \"booking_pages:read\",\n \"booking_pages:write\",\n \"calendar:read\",\n \"calendar:write\",\n \"domains:read\",\n \"domains:write\",\n \"mailboxes:read\",\n \"mailboxes:export\",\n \"mailboxes:write\",\n \"mailbox_credentials:read\",\n \"mailbox_credentials:write\",\n \"mailbox_forwarding:read\",\n \"mailbox_forwarding:write\",\n \"mailbox_rules:read\",\n \"mailbox_rules:write\",\n \"messages:read\",\n \"messages:write\",\n \"drafts:write\",\n \"messages:send\",\n \"newsletters:read\",\n \"newsletters:write\",\n \"threads:read\",\n \"webhooks:read\",\n \"webhooks:write\",\n \"suppressions:read\",\n \"suppressions:write\",\n \"partner:organizations:read\",\n \"partner:organizations:write\",\n \"partner:organizations:access\",\n \"partner:mailbox_credentials:issue\",\n \"partner:usage:read\",\n] as const;\n\nexport type ApiKeyScope = (typeof API_KEY_SCOPES)[number];\n\nexport const API_KEY_SCOPE_DESCRIPTIONS: Readonly<Record<ApiKeyScope, string>> = {\n \"*\": \"All non-partner API endpoints in this organization.\",\n \"audiences:read\": \"List and retrieve newsletter audiences and their subscribers.\",\n \"audiences:write\": \"Create audiences and add, update, or remove their subscribers.\",\n \"automations:read\": \"List and retrieve assistant automations.\",\n \"automations:write\": \"Create, update, and manually run assistant automations.\",\n \"booking_pages:read\": \"List and retrieve booking pages.\",\n \"booking_pages:write\": \"Create, update, and delete booking pages.\",\n \"calendar:read\": \"List and retrieve calendar events and open availability.\",\n \"calendar:write\": \"Create, update, and delete calendar events.\",\n \"domains:read\": \"List, retrieve, and verify domains.\",\n \"domains:write\": \"Create, update, and delete domains.\",\n \"mailboxes:read\": \"List and retrieve mailboxes.\",\n \"mailboxes:export\": \"Create and download mailbox content exports.\",\n \"mailboxes:write\": \"Create, update, suspend, resume, and delete mailboxes.\",\n \"mailbox_credentials:read\": \"List revocable app passwords for allowed mailboxes.\",\n \"mailbox_credentials:write\": \"Create and revoke app passwords for allowed mailboxes.\",\n \"mailbox_forwarding:read\": \"List forwarding destinations for allowed mailboxes.\",\n \"mailbox_forwarding:write\": \"Create and remove forwarding destinations for allowed mailboxes.\",\n \"mailbox_rules:read\": \"List deterministic server-side rules for allowed mailboxes.\",\n \"mailbox_rules:write\": \"Create, replace, and remove deterministic rules for allowed mailboxes.\",\n \"messages:read\": \"List and retrieve messages.\",\n \"messages:write\": \"Update, move, delete, and inject sandbox messages.\",\n \"drafts:write\": \"Create agent-safe reply drafts with server-derived recipients.\",\n \"messages:send\": \"Send messages, replies, and approved reply drafts.\",\n \"newsletters:read\": \"List and retrieve newsletter drafts and campaigns.\",\n \"newsletters:write\": \"Create, update, test, schedule, cancel, and resume newsletters.\",\n \"threads:read\": \"List threads and retrieve thread messages.\",\n \"webhooks:read\": \"List webhooks, retrieve webhooks, and list deliveries.\",\n \"webhooks:write\": \"Create, update, delete, test, and rotate webhooks.\",\n \"suppressions:read\": \"List suppressed recipient addresses.\",\n \"suppressions:write\": \"Remove addresses from the suppression list.\",\n \"partner:organizations:read\": \"List and retrieve this partner's child organizations.\",\n \"partner:organizations:write\": \"Create and manage this partner's child organizations.\",\n \"partner:organizations:access\": \"Act on an active child using the delegated organization header.\",\n \"partner:mailbox_credentials:issue\":\n \"List and consume operator-approved grants for embedded-webmail credentials.\",\n \"partner:usage:read\": \"Read consolidated child and mailbox usage for this partner.\",\n};\n\nexport function isApiKeyScope(value: string): value is ApiKeyScope {\n return API_KEY_SCOPES.some((scope) => scope === value);\n}\n\nexport function apiKeyScopesGrant(\n grantedScopes: readonly string[],\n requiredScope: ApiKeyScope | \"public\",\n): boolean {\n if (requiredScope === \"public\") return true;\n if (requiredScope.startsWith(\"partner:\")) return grantedScopes.includes(requiredScope);\n return grantedScopes.includes(\"*\") || grantedScopes.includes(requiredScope);\n}\n","import type { ApiErrorBody, ErrorType } from \"./types/common.js\";\n\nexport class ShipmailError extends Error {\n readonly status: number | undefined;\n readonly type: ErrorType | undefined;\n readonly requestId: string | undefined;\n readonly retryable: boolean;\n\n constructor(\n message: string,\n options?: {\n readonly status?: number | undefined;\n readonly type?: ErrorType | undefined;\n readonly requestId?: string | undefined;\n readonly retryable?: boolean | undefined;\n },\n ) {\n super(message);\n this.name = \"ShipmailError\";\n this.status = options?.status;\n this.type = options?.type;\n this.requestId = options?.requestId;\n this.retryable = options?.retryable ?? false;\n }\n}\n\nexport class AuthenticationError extends ShipmailError {\n constructor(message: string, requestId?: string) {\n super(message, { status: 401, type: \"authentication_error\", requestId, retryable: false });\n this.name = \"AuthenticationError\";\n }\n}\n\nexport class AuthorizationError extends ShipmailError {\n constructor(message: string, requestId?: string) {\n super(message, { status: 403, type: \"authorization_error\", requestId, retryable: false });\n this.name = \"AuthorizationError\";\n }\n}\n\nexport class ValidationError extends ShipmailError {\n readonly details:\n | readonly {\n readonly field: string;\n readonly message: string;\n readonly code?: string | undefined;\n }[]\n | undefined;\n\n constructor(\n message: string,\n options?: {\n readonly requestId?: string | undefined;\n readonly details?:\n | readonly {\n readonly field: string;\n readonly message: string;\n readonly code?: string | undefined;\n }[]\n | undefined;\n },\n ) {\n super(message, {\n status: 422,\n type: \"validation_error\",\n requestId: options?.requestId,\n retryable: false,\n });\n this.name = \"ValidationError\";\n this.details = options?.details;\n }\n}\n\nexport class QuotaExceededError extends ShipmailError {\n constructor(message: string, requestId?: string) {\n super(message, { status: 403, type: \"quota_exceeded\", requestId, retryable: false });\n this.name = \"QuotaExceededError\";\n }\n}\n\nexport class NotFoundError extends ShipmailError {\n constructor(message: string, requestId?: string) {\n super(message, { status: 404, type: \"not_found\", requestId, retryable: false });\n this.name = \"NotFoundError\";\n }\n}\n\nexport class RateLimitError extends ShipmailError {\n readonly retryAfter: number | undefined;\n\n constructor(\n message: string,\n options?: { readonly requestId?: string | undefined; readonly retryAfter?: number | undefined },\n ) {\n super(message, {\n status: 429,\n type: \"rate_limit_error\",\n requestId: options?.requestId,\n retryable: true,\n });\n this.name = \"RateLimitError\";\n this.retryAfter = options?.retryAfter;\n }\n}\n\nexport class ConflictError extends ShipmailError {\n constructor(message: string, requestId?: string) {\n super(message, { status: 409, type: \"conflict\", requestId, retryable: false });\n this.name = \"ConflictError\";\n }\n}\n\nexport class InternalServerError extends ShipmailError {\n constructor(message: string, requestId?: string) {\n super(message, { status: 500, type: \"internal_error\", requestId, retryable: true });\n this.name = \"InternalServerError\";\n }\n}\n\nexport class ConnectionError extends ShipmailError {\n constructor(message: string) {\n super(message, { retryable: true });\n this.name = \"ConnectionError\";\n }\n}\n\nexport class WebhookVerificationError extends ShipmailError {\n constructor(message: string) {\n super(message, { retryable: false });\n this.name = \"WebhookVerificationError\";\n }\n}\n\nexport function mapErrorFromResponse(\n status: number,\n body: ApiErrorBody,\n requestId?: string,\n): ShipmailError {\n const error = body.error;\n const rid = requestId ?? error.request_id;\n\n switch (error.type) {\n case \"authentication_error\":\n return new AuthenticationError(error.message, rid);\n case \"authorization_error\":\n return new AuthorizationError(error.message, rid);\n case \"quota_exceeded\":\n return new QuotaExceededError(error.message, rid);\n case \"validation_error\":\n return new ValidationError(error.message, { requestId: rid, details: error.details });\n case \"not_found\":\n return new NotFoundError(error.message, rid);\n case \"rate_limit_error\":\n return new RateLimitError(error.message, { requestId: rid, retryAfter: error.retry_after });\n case \"conflict\":\n return new ConflictError(error.message, rid);\n case \"internal_error\":\n return new InternalServerError(error.message, rid);\n default:\n return new ShipmailError(error.message, {\n status,\n type: error.type,\n requestId: rid,\n retryable: status >= 500,\n });\n }\n}\n","import type { ShipmailClient } from \"./client.js\";\nimport type { PaginatedResponse } from \"./types/common.js\";\n\nexport class Page<T> implements AsyncIterable<T> {\n private readonly client: ShipmailClient;\n private readonly path: string;\n private readonly query: Record<string, string | number | boolean | undefined>;\n\n constructor(\n client: ShipmailClient,\n path: string,\n query: Record<string, string | number | boolean | undefined>,\n ) {\n this.client = client;\n this.path = path;\n this.query = query;\n }\n\n async *[Symbol.asyncIterator](): AsyncIterator<T> {\n let cursor: string | undefined;\n\n do {\n const response = await this.client.request<PaginatedResponse<T>>({\n method: \"GET\",\n path: this.path,\n query: { ...this.query, cursor },\n });\n\n for (const item of response.data) {\n yield item;\n }\n\n cursor = response.pagination.next_cursor ?? undefined;\n if (!response.pagination.has_more) break;\n } while (cursor);\n }\n}\n","import type { ShipmailClient } from \"./client.js\";\n\nexport abstract class ApiResource {\n protected readonly client: ShipmailClient;\n\n constructor(client: ShipmailClient) {\n this.client = client;\n }\n}\n","import type { ShipmailClient } from \"../client.js\";\nimport { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type {\n AddSubscriberParams,\n AddSubscribersBatchParams,\n AddSubscribersBatchResult,\n Audience,\n AudienceFeed,\n CreateAudienceParams,\n ListAudiencesParams,\n ListSubscribersParams,\n ResubscribeSubscriberParams,\n Subscriber,\n SubscriberResult,\n UpdateAudienceFeedParams,\n UpdateAudienceParams,\n UpdateSubscriberParams,\n} from \"../types/audience.js\";\nimport type { MethodOptions, PaginatedResponse } from \"../types/common.js\";\n\nfunction base(audienceId: string): string {\n return `/audiences/${encodeURIComponent(audienceId)}/subscribers`;\n}\n\nfunction feedBase(audienceId: string): string {\n return `/audiences/${encodeURIComponent(audienceId)}/feed`;\n}\n\nclass AudienceFeeds extends ApiResource {\n get(audienceId: string, options?: MethodOptions): Promise<AudienceFeed> {\n return this.client.request<AudienceFeed>({\n method: \"GET\",\n path: feedBase(audienceId),\n methodOptions: options,\n });\n }\n\n update(\n audienceId: string,\n params: UpdateAudienceFeedParams,\n options?: MethodOptions,\n ): Promise<AudienceFeed> {\n return this.client.request<AudienceFeed>({\n method: \"PATCH\",\n path: feedBase(audienceId),\n body: params,\n methodOptions: options,\n });\n }\n\n rotate(audienceId: string, options?: MethodOptions): Promise<AudienceFeed> {\n return this.client.request<AudienceFeed>({\n method: \"POST\",\n path: `${feedBase(audienceId)}/rotate`,\n methodOptions: options,\n });\n }\n\n revoke(audienceId: string, options?: MethodOptions): Promise<AudienceFeed> {\n return this.client.request<AudienceFeed>({\n method: \"POST\",\n path: `${feedBase(audienceId)}/revoke`,\n methodOptions: options,\n });\n }\n}\n\nclass Subscribers extends ApiResource {\n add(\n audienceId: string,\n params: AddSubscriberParams,\n options?: MethodOptions,\n ): Promise<SubscriberResult> {\n return this.client.request<SubscriberResult>({\n method: \"POST\",\n path: base(audienceId),\n body: params,\n methodOptions: options,\n });\n }\n\n addBatch(\n audienceId: string,\n params: AddSubscribersBatchParams,\n options?: MethodOptions,\n ): Promise<AddSubscribersBatchResult> {\n return this.client.request<AddSubscribersBatchResult>({\n method: \"POST\",\n path: `${base(audienceId)}/batch`,\n body: params,\n methodOptions: options,\n });\n }\n\n list(\n audienceId: string,\n params?: ListSubscribersParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<Subscriber>> {\n return this.client.request<PaginatedResponse<Subscriber>>({\n method: \"GET\",\n path: base(audienceId),\n query: {\n cursor: params?.cursor,\n limit: params?.limit,\n status: params?.status,\n email: params?.email,\n },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(\n audienceId: string,\n params?: Omit<ListSubscribersParams, \"cursor\">,\n ): Page<Subscriber> {\n return new Page<Subscriber>(this.client, base(audienceId), {\n limit: params?.limit,\n status: params?.status,\n email: params?.email,\n });\n }\n\n get(audienceId: string, subscriberId: string, options?: MethodOptions): Promise<Subscriber> {\n return this.client.request<Subscriber>({\n method: \"GET\",\n path: `${base(audienceId)}/${encodeURIComponent(subscriberId)}`,\n methodOptions: options,\n });\n }\n\n getByEmail(audienceId: string, email: string, options?: MethodOptions): Promise<Subscriber> {\n return this.client.request<Subscriber>({\n method: \"GET\",\n path: `${base(audienceId)}/by-email/${encodeURIComponent(email)}`,\n methodOptions: options,\n });\n }\n\n update(\n audienceId: string,\n subscriberId: string,\n params: UpdateSubscriberParams,\n options?: MethodOptions,\n ): Promise<Subscriber> {\n return this.client.request<Subscriber>({\n method: \"PATCH\",\n path: `${base(audienceId)}/${encodeURIComponent(subscriberId)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n unsubscribe(\n audienceId: string,\n subscriberId: string,\n options?: MethodOptions,\n ): Promise<Subscriber> {\n return this.client.request<Subscriber>({\n method: \"POST\",\n path: `${base(audienceId)}/${encodeURIComponent(subscriberId)}/unsubscribe`,\n methodOptions: options,\n });\n }\n\n resubscribe(\n audienceId: string,\n subscriberId: string,\n params: ResubscribeSubscriberParams,\n options?: MethodOptions,\n ): Promise<Subscriber> {\n return this.client.request<Subscriber>({\n method: \"POST\",\n path: `${base(audienceId)}/${encodeURIComponent(subscriberId)}/resubscribe`,\n body: params,\n methodOptions: options,\n });\n }\n\n remove(audienceId: string, subscriberId: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `${base(audienceId)}/${encodeURIComponent(subscriberId)}`,\n methodOptions: options,\n });\n }\n}\n\nexport class Audiences extends ApiResource {\n readonly feeds: AudienceFeeds;\n readonly subscribers: Subscribers;\n\n constructor(client: ShipmailClient) {\n super(client);\n this.feeds = new AudienceFeeds(client);\n this.subscribers = new Subscribers(client);\n }\n\n create(params: CreateAudienceParams, options?: MethodOptions): Promise<Audience> {\n return this.client.request<Audience>({\n method: \"POST\",\n path: \"/audiences\",\n body: params,\n methodOptions: options,\n });\n }\n\n list(\n params?: ListAudiencesParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<Audience>> {\n return this.client.request<PaginatedResponse<Audience>>({\n method: \"GET\",\n path: \"/audiences\",\n query: { cursor: params?.cursor, limit: params?.limit },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params?: Omit<ListAudiencesParams, \"cursor\">): Page<Audience> {\n return new Page<Audience>(this.client, \"/audiences\", { limit: params?.limit });\n }\n\n get(id: string, options?: MethodOptions): Promise<Audience> {\n return this.client.request<Audience>({\n method: \"GET\",\n path: `/audiences/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n update(id: string, params: UpdateAudienceParams, options?: MethodOptions): Promise<Audience> {\n return this.client.request<Audience>({\n method: \"PATCH\",\n path: `/audiences/${encodeURIComponent(id)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n delete(id: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/audiences/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n}\n","import { ApiResource } from \"../resource.js\";\nimport type {\n Automation,\n AutomationRun,\n CreateAutomationParams,\n ListAutomationsResponse,\n UpdateAutomationParams,\n} from \"../types/automation.js\";\nimport type { MethodOptions } from \"../types/common.js\";\n\nexport class Automations extends ApiResource {\n list(options?: MethodOptions): Promise<ListAutomationsResponse> {\n return this.client.request<ListAutomationsResponse>({\n method: \"GET\",\n path: \"/automations\",\n methodOptions: options,\n });\n }\n\n create(params: CreateAutomationParams, options?: MethodOptions): Promise<Automation> {\n return this.client.request<Automation>({\n method: \"POST\",\n path: \"/automations\",\n body: params,\n methodOptions: options,\n });\n }\n\n get(id: string, options?: MethodOptions): Promise<Automation> {\n return this.client.request<Automation>({\n method: \"GET\",\n path: `/automations/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n update(id: string, params: UpdateAutomationParams, options?: MethodOptions): Promise<Automation> {\n return this.client.request<Automation>({\n method: \"PATCH\",\n path: `/automations/${encodeURIComponent(id)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n run(id: string, options?: MethodOptions): Promise<AutomationRun> {\n return this.client.request<AutomationRun>({\n method: \"POST\",\n path: `/automations/${encodeURIComponent(id)}/run`,\n methodOptions: options,\n });\n }\n}\n","import { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type {\n BookingPage,\n CreateBookingPageParams,\n ListBookingPagesParams,\n UpdateBookingPageParams,\n} from \"../types/booking-page.js\";\nimport type { MethodOptions, PaginatedResponse } from \"../types/common.js\";\n\nexport class BookingPages extends ApiResource {\n create(params: CreateBookingPageParams, options?: MethodOptions): Promise<BookingPage> {\n return this.client.request<BookingPage>({\n method: \"POST\",\n path: \"/booking-pages\",\n body: params,\n methodOptions: options,\n });\n }\n\n list(\n params?: ListBookingPagesParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<BookingPage>> {\n return this.client.request<PaginatedResponse<BookingPage>>({\n method: \"GET\",\n path: \"/booking-pages\",\n query: { cursor: params?.cursor, limit: params?.limit },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params?: Omit<ListBookingPagesParams, \"cursor\">): Page<BookingPage> {\n return new Page<BookingPage>(this.client, \"/booking-pages\", { limit: params?.limit });\n }\n\n get(id: string, options?: MethodOptions): Promise<BookingPage> {\n return this.client.request<BookingPage>({\n method: \"GET\",\n path: `/booking-pages/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n update(\n id: string,\n params: UpdateBookingPageParams,\n options?: MethodOptions,\n ): Promise<BookingPage> {\n return this.client.request<BookingPage>({\n method: \"PATCH\",\n path: `/booking-pages/${encodeURIComponent(id)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n delete(id: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/booking-pages/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n}\n","import type { ShipmailClient } from \"../client.js\";\nimport { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type {\n CalendarAvailability,\n CalendarAvailabilityParams,\n CalendarEvent,\n CreateCalendarEventParams,\n DeleteCalendarEventParams,\n GetCalendarEventParams,\n ListCalendarEventsParams,\n UpdateCalendarEventParams,\n} from \"../types/calendar.js\";\nimport type { MethodOptions, PaginatedResponse } from \"../types/common.js\";\n\nclass CalendarEvents extends ApiResource {\n create(params: CreateCalendarEventParams, options?: MethodOptions): Promise<CalendarEvent> {\n return this.client.request<CalendarEvent>({\n method: \"POST\",\n path: \"/calendar/events\",\n body: params,\n methodOptions: options,\n });\n }\n\n list(\n params: ListCalendarEventsParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<CalendarEvent>> {\n return this.client.request<PaginatedResponse<CalendarEvent>>({\n method: \"GET\",\n path: \"/calendar/events\",\n query: {\n mailbox: params.mailbox,\n from: params.from,\n to: params.to,\n expand: params.expand,\n calendar_id: params.calendar_id,\n cursor: params.cursor,\n limit: params.limit,\n },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params: Omit<ListCalendarEventsParams, \"cursor\">): Page<CalendarEvent> {\n return new Page<CalendarEvent>(this.client, \"/calendar/events\", {\n mailbox: params.mailbox,\n from: params.from,\n to: params.to,\n expand: params.expand,\n calendar_id: params.calendar_id,\n limit: params.limit,\n });\n }\n\n get(id: string, params: GetCalendarEventParams, options?: MethodOptions): Promise<CalendarEvent> {\n return this.client.request<CalendarEvent>({\n method: \"GET\",\n path: `/calendar/events/${encodeURIComponent(id)}`,\n query: { mailbox: params.mailbox },\n methodOptions: options,\n });\n }\n\n update(\n id: string,\n params: UpdateCalendarEventParams,\n options?: MethodOptions,\n ): Promise<CalendarEvent> {\n return this.client.request<CalendarEvent>({\n method: \"PATCH\",\n path: `/calendar/events/${encodeURIComponent(id)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n delete(id: string, params: DeleteCalendarEventParams, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/calendar/events/${encodeURIComponent(id)}`,\n query: { mailbox: params.mailbox },\n methodOptions: options,\n });\n }\n}\n\nexport class Calendar extends ApiResource {\n readonly events: CalendarEvents;\n\n constructor(client: ShipmailClient) {\n super(client);\n this.events = new CalendarEvents(client);\n }\n\n availability(\n params: CalendarAvailabilityParams,\n options?: MethodOptions,\n ): Promise<CalendarAvailability> {\n return this.client.request<CalendarAvailability>({\n method: \"GET\",\n path: \"/calendar/availability\",\n query: {\n mailbox: params.mailbox,\n from: params.from,\n to: params.to,\n duration: params.duration,\n interval: params.interval,\n timezone: params.timezone,\n days: params.days ? params.days.join(\",\") : undefined,\n window_start: params.window_start,\n window_end: params.window_end,\n buffer: params.buffer,\n minimum_notice: params.minimum_notice,\n },\n methodOptions: options,\n });\n }\n}\n","import { ApiResource } from \"../resource.js\";\nimport type { CapabilitiesResponse } from \"../types/capabilities.js\";\nimport type { MethodOptions } from \"../types/common.js\";\n\nexport class Capabilities extends ApiResource {\n get(options?: MethodOptions): Promise<CapabilitiesResponse> {\n return this.client.request<CapabilitiesResponse>({\n method: \"GET\",\n path: \"/capabilities\",\n methodOptions: options,\n });\n }\n}\n","import { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type { MethodOptions, PaginatedResponse } from \"../types/common.js\";\nimport type {\n CreateDomainParams,\n Domain,\n DomainDnsRecordSet,\n DomainSearchResult,\n DomainVerificationResult,\n ListDomainsParams,\n RegisterDomainParams,\n SearchDomainsParams,\n UpdateDomainParams,\n} from \"../types/domain.js\";\n\nexport class Domains extends ApiResource {\n create(params: CreateDomainParams, options?: MethodOptions): Promise<Domain> {\n return this.client.request<Domain>({\n method: \"POST\",\n path: \"/domains\",\n body: params,\n methodOptions: options,\n });\n }\n\n list(params?: ListDomainsParams, options?: MethodOptions): Promise<PaginatedResponse<Domain>> {\n return this.client.request<PaginatedResponse<Domain>>({\n method: \"GET\",\n path: \"/domains\",\n query: {\n cursor: params?.cursor,\n limit: params?.limit,\n },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params?: Omit<ListDomainsParams, \"cursor\">): Page<Domain> {\n return new Page<Domain>(this.client, \"/domains\", {\n limit: params?.limit,\n });\n }\n\n get(id: string, options?: MethodOptions): Promise<Domain> {\n return this.client.request<Domain>({\n method: \"GET\",\n path: `/domains/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n getDnsRecords(id: string, options?: MethodOptions): Promise<DomainDnsRecordSet> {\n return this.client.request<DomainDnsRecordSet>({\n method: \"GET\",\n path: `/domains/${encodeURIComponent(id)}/dns-records`,\n methodOptions: options,\n });\n }\n\n update(id: string, params: UpdateDomainParams, options?: MethodOptions): Promise<Domain> {\n return this.client.request<Domain>({\n method: \"PATCH\",\n path: `/domains/${encodeURIComponent(id)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n delete(id: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/domains/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n verify(id: string, options?: MethodOptions): Promise<DomainVerificationResult> {\n return this.client.request<DomainVerificationResult>({\n method: \"POST\",\n path: `/domains/${encodeURIComponent(id)}/verification`,\n methodOptions: options,\n });\n }\n\n search(\n params: SearchDomainsParams,\n options?: MethodOptions,\n ): Promise<{ readonly results: readonly DomainSearchResult[] }> {\n return this.client.request<{ readonly results: readonly DomainSearchResult[] }>({\n method: \"POST\",\n path: \"/domains/search\",\n body: params,\n methodOptions: options,\n });\n }\n\n register(params: RegisterDomainParams, options?: MethodOptions): Promise<Domain> {\n return this.client.request<Domain>({\n method: \"POST\",\n path: \"/domains/register\",\n body: params,\n methodOptions: options,\n });\n }\n}\n","import { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type {\n MethodOptions,\n OneTimeSecretMethodOptions,\n PaginatedResponse,\n} from \"../types/common.js\";\nimport type {\n CompleteImportUploadParams,\n CreateImportUploadParams,\n CreateMailboxImportParams,\n ImportUpload,\n MailboxImport,\n MailboxImports,\n RestoreMailboxImportParams,\n} from \"../types/import.js\";\nimport type {\n CreatedMailboxAppPassword,\n CreateInboxReplyDraftParams,\n CreateMailboxAppPasswordParams,\n CreateMailboxFolderParams,\n CreateMailboxForwardingParams,\n CreateMailboxParams,\n DownloadInboxAttachmentParams,\n InboxMessageAction,\n InboxMessages,\n InboxReplyDraft,\n InboxReplyDraftSend,\n InboxThread,\n InboxThreadAttentionResult,\n InboxThreads,\n ListInboxMessagesParams,\n ListInboxThreadsParams,\n ListMailboxesParams,\n Mailbox,\n MailboxAppPasswordList,\n MailboxExport,\n MailboxFolder,\n MailboxFolders,\n MailboxForwarding,\n MailboxForwardingList,\n MailboxIdentities,\n MailboxRules,\n MoveInboxMessageParams,\n ResetMailboxPasswordParams,\n UpdateAutoReplyParams,\n UpdateInboxMessageParams,\n UpdateInboxThreadAttentionParams,\n UpdateMailboxFolderParams,\n UpdateMailboxParams,\n UpdateMailboxRulesParams,\n UpdateSpamFilterParams,\n} from \"../types/mailbox.js\";\nimport type {\n InjectSandboxInboundParams,\n Message,\n PrepareStagedAttachmentUploadParams,\n ReplyToMessageParams,\n StageAttachmentParams,\n StagedAttachment,\n StagedAttachmentUpload,\n} from \"../types/message.js\";\n\nexport class Mailboxes extends ApiResource {\n prepareStagedAttachmentUpload(\n id: string,\n params: PrepareStagedAttachmentUploadParams,\n options?: OneTimeSecretMethodOptions,\n ): Promise<StagedAttachmentUpload> {\n return this.client.request<StagedAttachmentUpload>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/staged-attachment-upload-tokens`,\n body: params,\n methodOptions: options,\n });\n }\n\n stageAttachment(\n id: string,\n params: StageAttachmentParams,\n options?: MethodOptions,\n ): Promise<StagedAttachment> {\n return this.client.request<StagedAttachment>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/staged-attachments`,\n query: { filename: params.filename },\n rawBody: params.data,\n contentType: params.content_type,\n methodOptions: options,\n });\n }\n\n injectSandboxInbound(\n id: string,\n params: InjectSandboxInboundParams,\n options?: MethodOptions,\n ): Promise<Message> {\n return this.client.request<Message>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/sandbox/inbound`,\n body: params,\n methodOptions: options,\n });\n }\n\n create(params: CreateMailboxParams, options?: MethodOptions): Promise<Mailbox> {\n return this.client.request<Mailbox>({\n method: \"POST\",\n path: \"/mailboxes\",\n body: params,\n methodOptions: options,\n });\n }\n\n list(params?: ListMailboxesParams, options?: MethodOptions): Promise<PaginatedResponse<Mailbox>> {\n return this.client.request<PaginatedResponse<Mailbox>>({\n method: \"GET\",\n path: \"/mailboxes\",\n query: {\n domain_id: params?.domain_id,\n cursor: params?.cursor,\n limit: params?.limit,\n },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params?: Omit<ListMailboxesParams, \"cursor\">): Page<Mailbox> {\n return new Page<Mailbox>(this.client, \"/mailboxes\", {\n domain_id: params?.domain_id,\n limit: params?.limit,\n });\n }\n\n get(id: string, options?: MethodOptions): Promise<Mailbox> {\n return this.client.request<Mailbox>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n update(id: string, params: UpdateMailboxParams, options?: MethodOptions): Promise<Mailbox> {\n return this.client.request<Mailbox>({\n method: \"PATCH\",\n path: `/mailboxes/${encodeURIComponent(id)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n delete(id: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/mailboxes/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n suspend(id: string, options?: MethodOptions): Promise<Mailbox> {\n return this.client.request<Mailbox>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/suspend`,\n methodOptions: options,\n });\n }\n\n resume(id: string, options?: MethodOptions): Promise<Mailbox> {\n return this.client.request<Mailbox>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/resume`,\n methodOptions: options,\n });\n }\n\n createExport(id: string, options?: MethodOptions): Promise<MailboxExport> {\n return this.client.request<MailboxExport>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/exports`,\n methodOptions: options,\n });\n }\n\n getExport(id: string, exportId: string, options?: MethodOptions): Promise<MailboxExport> {\n return this.client.request<MailboxExport>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/exports/${encodeURIComponent(exportId)}`,\n methodOptions: options,\n });\n }\n\n listFolders(id: string, options?: MethodOptions): Promise<MailboxFolders> {\n return this.client.request<MailboxFolders>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/folders`,\n methodOptions: options,\n });\n }\n\n createFolder(\n id: string,\n params: CreateMailboxFolderParams,\n options?: MethodOptions,\n ): Promise<MailboxFolder> {\n return this.client.request<MailboxFolder>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/folders`,\n body: params,\n methodOptions: options,\n });\n }\n\n updateFolder(\n id: string,\n folderId: string,\n params: UpdateMailboxFolderParams,\n options?: MethodOptions,\n ): Promise<MailboxFolder> {\n return this.client.request<MailboxFolder>({\n method: \"PATCH\",\n path: `/mailboxes/${encodeURIComponent(id)}/folders/${encodeURIComponent(folderId)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n deleteFolder(id: string, folderId: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/mailboxes/${encodeURIComponent(id)}/folders/${encodeURIComponent(folderId)}`,\n methodOptions: options,\n });\n }\n\n listIdentities(id: string, options?: MethodOptions): Promise<MailboxIdentities> {\n return this.client.request<MailboxIdentities>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/identities`,\n methodOptions: options,\n });\n }\n\n listInboxMessages(\n id: string,\n params?: ListInboxMessagesParams,\n options?: MethodOptions,\n ): Promise<InboxMessages> {\n return this.client.request<InboxMessages>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/messages`,\n query: {\n folder_id: params?.folder_id,\n folder_role: params?.folder_role,\n search_text: params?.search_text,\n cursor: params?.cursor,\n after: params?.after,\n before: params?.before,\n limit: params?.limit,\n has_keyword: params?.has_keyword,\n not_keyword: params?.not_keyword,\n },\n methodOptions: options,\n });\n }\n\n getInboxMessage(id: string, messageId: string, options?: MethodOptions) {\n return this.client.request<import(\"../types/mailbox.js\").InboxFullMessage>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/messages/${encodeURIComponent(messageId)}`,\n methodOptions: options,\n });\n }\n\n listInboxThreads(\n id: string,\n params?: ListInboxThreadsParams,\n options?: MethodOptions,\n ): Promise<InboxThreads> {\n return this.client.request<InboxThreads>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/threads`,\n query: {\n attention_state: params?.attention_state,\n sort_by: params?.sort_by,\n order: params?.order,\n after: params?.after,\n before: params?.before,\n cursor: params?.cursor,\n limit: params?.limit,\n },\n methodOptions: options,\n });\n }\n\n getInboxThread(id: string, threadId: string, options?: MethodOptions): Promise<InboxThread> {\n return this.client.request<InboxThread>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/threads/${encodeURIComponent(threadId)}`,\n methodOptions: options,\n });\n }\n\n updateInboxThreadAttention(\n id: string,\n threadId: string,\n params: UpdateInboxThreadAttentionParams,\n options?: MethodOptions,\n ): Promise<InboxThreadAttentionResult> {\n return this.client.request<InboxThreadAttentionResult>({\n method: \"PATCH\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/threads/${encodeURIComponent(threadId)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n createInboxReplyDraft(\n id: string,\n threadId: string,\n params: CreateInboxReplyDraftParams,\n options?: MethodOptions,\n ): Promise<InboxReplyDraft> {\n return this.client.request<InboxReplyDraft>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/threads/${encodeURIComponent(threadId)}/drafts`,\n body: params,\n methodOptions: options,\n });\n }\n\n sendInboxReplyDraft(\n id: string,\n threadId: string,\n draftId: string,\n options?: MethodOptions,\n ): Promise<InboxReplyDraftSend> {\n return this.client.request<InboxReplyDraftSend>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/threads/${encodeURIComponent(threadId)}/drafts/${encodeURIComponent(draftId)}/send`,\n methodOptions: options,\n });\n }\n\n replyToInboxMessage(\n id: string,\n messageId: string,\n params: ReplyToMessageParams,\n options?: MethodOptions,\n ): Promise<Message> {\n return this.client.request<Message>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/messages/${encodeURIComponent(messageId)}/reply`,\n body: params,\n methodOptions: options,\n });\n }\n\n replyToInboxThread(\n id: string,\n threadId: string,\n params: ReplyToMessageParams,\n options?: MethodOptions,\n ): Promise<Message> {\n return this.client.request<Message>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/threads/${encodeURIComponent(threadId)}/reply`,\n body: params,\n methodOptions: options,\n });\n }\n\n updateInboxMessage(\n id: string,\n messageId: string,\n params: UpdateInboxMessageParams,\n options?: MethodOptions,\n ): Promise<InboxMessageAction> {\n return this.client.request<InboxMessageAction>({\n method: \"PATCH\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/messages/${encodeURIComponent(messageId)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n moveInboxMessage(\n id: string,\n messageId: string,\n params: MoveInboxMessageParams,\n options?: MethodOptions,\n ): Promise<InboxMessageAction> {\n return this.client.request<InboxMessageAction>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/messages/${encodeURIComponent(messageId)}/move`,\n body: params,\n methodOptions: options,\n });\n }\n\n deleteInboxMessage(id: string, messageId: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/messages/${encodeURIComponent(messageId)}`,\n methodOptions: options,\n });\n }\n\n downloadInboxAttachment(\n id: string,\n params: DownloadInboxAttachmentParams,\n options?: MethodOptions,\n ): Promise<Uint8Array> {\n return this.client.requestBytes({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/attachments`,\n query: {\n blob_id: params.blob_id,\n name: params.name,\n },\n methodOptions: options,\n });\n }\n\n resetPassword(\n id: string,\n params: ResetMailboxPasswordParams,\n options?: MethodOptions,\n ): Promise<Mailbox> {\n return this.client.request<Mailbox>({\n method: \"PATCH\",\n path: `/mailboxes/${encodeURIComponent(id)}/password`,\n body: params,\n methodOptions: options,\n });\n }\n\n listAppPasswords(id: string, options?: MethodOptions): Promise<MailboxAppPasswordList> {\n return this.client.request<MailboxAppPasswordList>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/app-passwords`,\n methodOptions: options,\n });\n }\n\n createAppPassword(\n id: string,\n params: CreateMailboxAppPasswordParams,\n options?: OneTimeSecretMethodOptions,\n ): Promise<CreatedMailboxAppPassword> {\n return this.client.request<CreatedMailboxAppPassword>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/app-passwords`,\n body: params,\n methodOptions: options,\n });\n }\n\n revokeAppPassword(id: string, appPasswordId: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/mailboxes/${encodeURIComponent(id)}/app-passwords/${encodeURIComponent(appPasswordId)}`,\n methodOptions: options,\n });\n }\n\n getRules(id: string, options?: MethodOptions): Promise<MailboxRules> {\n return this.client.request<MailboxRules>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/rules`,\n methodOptions: options,\n });\n }\n\n updateRules(\n id: string,\n params: UpdateMailboxRulesParams,\n options?: MethodOptions,\n ): Promise<MailboxRules> {\n return this.client.request<MailboxRules>({\n method: \"PUT\",\n path: `/mailboxes/${encodeURIComponent(id)}/rules`,\n body: params,\n methodOptions: options,\n });\n }\n\n listForwarding(id: string, options?: MethodOptions): Promise<MailboxForwardingList> {\n return this.client.request<MailboxForwardingList>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/forwarding`,\n methodOptions: options,\n });\n }\n\n createForwarding(\n id: string,\n params: CreateMailboxForwardingParams,\n options?: MethodOptions,\n ): Promise<MailboxForwarding> {\n return this.client.request<MailboxForwarding>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/forwarding`,\n body: params,\n methodOptions: options,\n });\n }\n\n deleteForwarding(id: string, forwardingId: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/mailboxes/${encodeURIComponent(id)}/forwarding/${encodeURIComponent(forwardingId)}`,\n methodOptions: options,\n });\n }\n\n updateAutoReply(\n id: string,\n params: UpdateAutoReplyParams,\n options?: MethodOptions,\n ): Promise<Mailbox> {\n return this.client.request<Mailbox>({\n method: \"PATCH\",\n path: `/mailboxes/${encodeURIComponent(id)}/auto-reply`,\n body: params,\n methodOptions: options,\n });\n }\n\n updateSpamFilter(\n id: string,\n params: UpdateSpamFilterParams,\n options?: MethodOptions,\n ): Promise<Mailbox> {\n return this.client.request<Mailbox>({\n method: \"PATCH\",\n path: `/mailboxes/${encodeURIComponent(id)}/spam-filter`,\n body: params,\n methodOptions: options,\n });\n }\n\n createImport(\n id: string,\n params: CreateMailboxImportParams,\n options?: MethodOptions,\n ): Promise<MailboxImport> {\n return this.client.request<MailboxImport>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports`,\n body: params,\n methodOptions: options,\n });\n }\n\n listImports(id: string, options?: MethodOptions): Promise<MailboxImports> {\n return this.client.request<MailboxImports>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports`,\n methodOptions: options,\n });\n }\n\n getImport(id: string, importId: string, options?: MethodOptions): Promise<MailboxImport> {\n return this.client.request<MailboxImport>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports/${encodeURIComponent(importId)}`,\n methodOptions: options,\n });\n }\n\n cancelImport(id: string, importId: string, options?: MethodOptions): Promise<MailboxImport> {\n return this.client.request<MailboxImport>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports/${encodeURIComponent(importId)}/cancel`,\n methodOptions: options,\n });\n }\n\n resumeImport(id: string, importId: string, options?: MethodOptions): Promise<MailboxImport> {\n return this.client.request<MailboxImport>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports/${encodeURIComponent(importId)}/resume`,\n methodOptions: options,\n });\n }\n\n restoreImport(\n id: string,\n importId: string,\n params: RestoreMailboxImportParams,\n options?: MethodOptions,\n ): Promise<MailboxImport> {\n return this.client.request<MailboxImport>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports/${encodeURIComponent(importId)}/restore`,\n body: params,\n methodOptions: options,\n });\n }\n\n undoImport(id: string, importId: string, options?: MethodOptions): Promise<MailboxImport> {\n return this.client.request<MailboxImport>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports/${encodeURIComponent(importId)}/undo`,\n methodOptions: options,\n });\n }\n\n createImportUpload(\n id: string,\n params: CreateImportUploadParams,\n options?: MethodOptions,\n ): Promise<ImportUpload> {\n return this.client.request<ImportUpload>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports/files`,\n body: params,\n methodOptions: options,\n });\n }\n\n completeImportUpload(\n id: string,\n fileId: string,\n params: CompleteImportUploadParams,\n options?: MethodOptions,\n ): Promise<void> {\n return this.client.request<void>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports/files/${encodeURIComponent(fileId)}/complete`,\n body: params,\n methodOptions: options,\n });\n }\n\n abortImportUpload(id: string, fileId: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports/files/${encodeURIComponent(fileId)}`,\n methodOptions: options,\n });\n }\n}\n","import { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type { MethodOptions, PaginatedResponse } from \"../types/common.js\";\nimport type {\n ListMessageAnalyticsParams,\n ListMessagesParams,\n Message,\n MessageAnalyticsPage,\n ReplyToMessageParams,\n SendMessageParams,\n} from \"../types/message.js\";\n\nexport class Messages extends ApiResource {\n send(params: SendMessageParams, options?: MethodOptions): Promise<Message> {\n return this.client.request<Message>({\n method: \"POST\",\n path: \"/messages\",\n body: params,\n methodOptions: options,\n });\n }\n\n list(params: ListMessagesParams, options?: MethodOptions): Promise<PaginatedResponse<Message>> {\n return this.client.request<PaginatedResponse<Message>>({\n method: \"GET\",\n path: \"/messages\",\n query: {\n mailbox_id: params.mailbox_id,\n client_reference: params.client_reference,\n cursor: params.cursor,\n limit: params.limit,\n },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params: Omit<ListMessagesParams, \"cursor\">): Page<Message> {\n return new Page<Message>(this.client, \"/messages\", {\n mailbox_id: params.mailbox_id,\n client_reference: params.client_reference,\n limit: params.limit,\n });\n }\n\n listAnalytics(\n params: ListMessageAnalyticsParams = {},\n options?: MethodOptions,\n ): Promise<MessageAnalyticsPage> {\n return this.client.request<MessageAnalyticsPage>({\n method: \"GET\",\n path: \"/messages/analytics\",\n query: {\n updated_after: params.updated_after,\n updated_before: params.updated_before,\n cursor: params.cursor,\n limit: params.limit,\n },\n methodOptions: options,\n });\n }\n\n get(id: string, options?: MethodOptions): Promise<Message> {\n return this.client.request<Message>({\n method: \"GET\",\n path: `/messages/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n reply(id: string, params: ReplyToMessageParams, options?: MethodOptions): Promise<Message> {\n return this.client.request<Message>({\n method: \"POST\",\n path: `/messages/${encodeURIComponent(id)}/reply`,\n body: params,\n methodOptions: options,\n });\n }\n}\n","import type { ShipmailClient } from \"../client.js\";\nimport { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type { MethodOptions, PaginatedResponse } from \"../types/common.js\";\nimport type {\n CreateNewsletterFromChangelogParams,\n CreateNewsletterParams,\n ListNewsletterAssetsParams,\n ListNewsletterDomainsParams,\n ListNewsletterSenderIdentitiesParams,\n ListNewslettersParams,\n Newsletter,\n NewsletterAsset,\n NewsletterAssetListResponse,\n NewsletterAssetUpload,\n NewsletterDomain,\n NewsletterPreflight,\n NewsletterPreview,\n NewsletterSenderIdentity,\n NewsletterTestSend,\n PrepareNewsletterAssetUploadParams,\n RegisterNewsletterAssetFromUrlParams,\n ScheduleNewsletterParams,\n SendNewsletterTestParams,\n UpdateNewsletterParams,\n UploadNewsletterAssetParams,\n} from \"../types/newsletter.js\";\n\nfunction path(id: string): string {\n return `/newsletters/${encodeURIComponent(id)}`;\n}\n\nclass NewsletterDomains extends ApiResource {\n list(\n params?: ListNewsletterDomainsParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<NewsletterDomain>> {\n return this.client.request<PaginatedResponse<NewsletterDomain>>({\n method: \"GET\",\n path: \"/newsletter-domains\",\n query: { cursor: params?.cursor, limit: params?.limit },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params?: Omit<ListNewsletterDomainsParams, \"cursor\">): Page<NewsletterDomain> {\n return new Page<NewsletterDomain>(this.client, \"/newsletter-domains\", { limit: params?.limit });\n }\n}\n\nclass NewsletterSenderIdentities extends ApiResource {\n list(\n params?: ListNewsletterSenderIdentitiesParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<NewsletterSenderIdentity>> {\n return this.client.request<PaginatedResponse<NewsletterSenderIdentity>>({\n method: \"GET\",\n path: \"/newsletter-sender-identities\",\n query: { cursor: params?.cursor, limit: params?.limit },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(\n params?: Omit<ListNewsletterSenderIdentitiesParams, \"cursor\">,\n ): Page<NewsletterSenderIdentity> {\n return new Page<NewsletterSenderIdentity>(this.client, \"/newsletter-sender-identities\", {\n limit: params?.limit,\n });\n }\n}\n\nclass NewsletterAssets extends ApiResource {\n list(\n params?: ListNewsletterAssetsParams,\n options?: MethodOptions,\n ): Promise<NewsletterAssetListResponse> {\n return this.client.request<NewsletterAssetListResponse>({\n method: \"GET\",\n path: \"/newsletter-assets\",\n query: {\n cursor: params?.cursor,\n limit: params?.limit,\n kind: params?.kind,\n q: params?.q,\n },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params?: Omit<ListNewsletterAssetsParams, \"cursor\">): Page<NewsletterAsset> {\n return new Page<NewsletterAsset>(this.client, \"/newsletter-assets\", {\n limit: params?.limit,\n kind: params?.kind,\n q: params?.q,\n });\n }\n\n upload(params: UploadNewsletterAssetParams, options?: MethodOptions): Promise<NewsletterAsset> {\n return this.client.request<NewsletterAsset>({\n method: \"POST\",\n path: \"/newsletter-assets\",\n query: { filename: params.filename },\n rawBody: params.data,\n contentType: params.content_type,\n methodOptions: options,\n });\n }\n\n prepareUpload(\n params: PrepareNewsletterAssetUploadParams,\n options?: MethodOptions,\n ): Promise<NewsletterAssetUpload> {\n return this.client.request<NewsletterAssetUpload>({\n method: \"POST\",\n path: \"/newsletter-assets/upload-tokens\",\n body: params,\n methodOptions: options,\n });\n }\n\n registerFromUrl(\n params: RegisterNewsletterAssetFromUrlParams,\n options?: MethodOptions,\n ): Promise<NewsletterAsset> {\n return this.client.request<NewsletterAsset>({\n method: \"POST\",\n path: \"/newsletter-assets\",\n body: params,\n methodOptions: options,\n });\n }\n}\n\nexport class Newsletters extends ApiResource {\n readonly domains: NewsletterDomains;\n readonly senderIdentities: NewsletterSenderIdentities;\n readonly assets: NewsletterAssets;\n\n constructor(client: ShipmailClient) {\n super(client);\n this.domains = new NewsletterDomains(client);\n this.senderIdentities = new NewsletterSenderIdentities(client);\n this.assets = new NewsletterAssets(client);\n }\n\n create(params: CreateNewsletterParams, options?: MethodOptions): Promise<Newsletter> {\n return this.client.request<Newsletter>({\n method: \"POST\",\n path: \"/newsletters\",\n body: params,\n methodOptions: options,\n });\n }\n\n createFromChangelog(\n params: CreateNewsletterFromChangelogParams,\n options?: MethodOptions,\n ): Promise<Newsletter> {\n return this.client.request<Newsletter>({\n method: \"POST\",\n path: \"/newsletters/from-changelog\",\n body: params,\n methodOptions: options,\n });\n }\n\n list(\n params?: ListNewslettersParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<Newsletter>> {\n return this.client.request<PaginatedResponse<Newsletter>>({\n method: \"GET\",\n path: \"/newsletters\",\n query: { cursor: params?.cursor, limit: params?.limit },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params?: Omit<ListNewslettersParams, \"cursor\">): Page<Newsletter> {\n return new Page<Newsletter>(this.client, \"/newsletters\", { limit: params?.limit });\n }\n\n get(id: string, options?: MethodOptions): Promise<Newsletter> {\n return this.client.request<Newsletter>({\n method: \"GET\",\n path: path(id),\n methodOptions: options,\n });\n }\n\n update(id: string, params: UpdateNewsletterParams, options?: MethodOptions): Promise<Newsletter> {\n return this.client.request<Newsletter>({\n method: \"PATCH\",\n path: path(id),\n body: params,\n methodOptions: options,\n });\n }\n\n preflight(id: string, options?: MethodOptions): Promise<NewsletterPreflight> {\n return this.client.request<NewsletterPreflight>({\n method: \"POST\",\n path: `${path(id)}/preflight`,\n methodOptions: options,\n });\n }\n\n preview(id: string, options?: MethodOptions): Promise<NewsletterPreview> {\n return this.client.request<NewsletterPreview>({\n method: \"POST\",\n path: `${path(id)}/preview`,\n methodOptions: options,\n });\n }\n\n sendTest(\n id: string,\n params: SendNewsletterTestParams,\n options?: MethodOptions,\n ): Promise<NewsletterTestSend> {\n return this.client.request<NewsletterTestSend>({\n method: \"POST\",\n path: `${path(id)}/test-send`,\n body: params,\n methodOptions: options,\n });\n }\n\n schedule(\n id: string,\n params: ScheduleNewsletterParams,\n options?: MethodOptions,\n ): Promise<Newsletter> {\n return this.client.request<Newsletter>({\n method: \"POST\",\n path: `${path(id)}/schedule`,\n body: params,\n methodOptions: options,\n });\n }\n\n cancel(id: string, options?: MethodOptions): Promise<Newsletter> {\n return this.client.request<Newsletter>({\n method: \"POST\",\n path: `${path(id)}/cancel`,\n methodOptions: options,\n });\n }\n\n resume(id: string, options?: MethodOptions): Promise<Newsletter> {\n return this.client.request<Newsletter>({\n method: \"POST\",\n path: `${path(id)}/resume`,\n methodOptions: options,\n });\n }\n}\n","import { ApiResource } from \"../resource.js\";\nimport type { MethodOptions, OneTimeSecretMethodOptions } from \"../types/common.js\";\nimport type {\n ConsumePartnerMailboxCredentialGrantParams,\n CreatedPartnerOrganization,\n CreatePartnerOrganizationParams,\n PartnerMailboxCredential,\n PartnerMailboxCredentialGrantList,\n PartnerOrganization,\n PartnerOrganizationList,\n PartnerOwnershipInvitation,\n PartnerUsage,\n UpdatePartnerOrganizationParams,\n} from \"../types/partner.js\";\n\nexport class Partner extends ApiResource {\n listOrganizations(options?: MethodOptions): Promise<PartnerOrganizationList> {\n return this.client.request({\n method: \"GET\",\n path: \"/partner/organizations\",\n methodOptions: options,\n });\n }\n\n createOrganization(\n params: CreatePartnerOrganizationParams,\n options?: MethodOptions,\n ): Promise<CreatedPartnerOrganization> {\n return this.client.request({\n method: \"POST\",\n path: \"/partner/organizations\",\n body: params,\n methodOptions: options,\n });\n }\n\n getOrganization(id: string, options?: MethodOptions): Promise<PartnerOrganization> {\n return this.client.request({\n method: \"GET\",\n path: `/partner/organizations/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n updateOrganization(\n id: string,\n params: UpdatePartnerOrganizationParams,\n options?: MethodOptions,\n ): Promise<PartnerOrganization> {\n return this.client.request({\n method: \"PATCH\",\n path: `/partner/organizations/${encodeURIComponent(id)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n resendOwnershipInvitation(\n id: string,\n params: { readonly owner_email?: string | undefined } = {},\n options?: MethodOptions,\n ): Promise<PartnerOwnershipInvitation> {\n return this.client.request({\n method: \"POST\",\n path: `/partner/organizations/${encodeURIComponent(id)}/ownership-invitations`,\n body: params,\n methodOptions: options,\n });\n }\n\n suspendOrganization(id: string, options?: MethodOptions): Promise<PartnerOrganization> {\n return this.client.request({\n method: \"POST\",\n path: `/partner/organizations/${encodeURIComponent(id)}/suspend`,\n methodOptions: options,\n });\n }\n\n resumeOrganization(id: string, options?: MethodOptions): Promise<PartnerOrganization> {\n return this.client.request({\n method: \"POST\",\n path: `/partner/organizations/${encodeURIComponent(id)}/resume`,\n methodOptions: options,\n });\n }\n\n offboardOrganization(id: string, options?: MethodOptions): Promise<PartnerOrganization> {\n return this.client.request({\n method: \"DELETE\",\n path: `/partner/organizations/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n listMailboxCredentialGrants(options?: MethodOptions): Promise<PartnerMailboxCredentialGrantList> {\n return this.client.request({\n method: \"GET\",\n path: \"/partner/mailbox-credential-grants\",\n methodOptions: options,\n });\n }\n\n consumeMailboxCredentialGrant(\n grantId: string,\n params: ConsumePartnerMailboxCredentialGrantParams = {},\n options?: OneTimeSecretMethodOptions,\n ): Promise<PartnerMailboxCredential> {\n return this.client.request({\n method: \"POST\",\n path: `/partner/mailbox-credential-grants/${encodeURIComponent(grantId)}/consume`,\n body: params,\n methodOptions: options,\n });\n }\n\n usage(options?: MethodOptions): Promise<PartnerUsage> {\n return this.client.request({ method: \"GET\", path: \"/partner/usage\", methodOptions: options });\n }\n}\n","import { ApiResource } from \"../resource.js\";\nimport type { MethodOptions } from \"../types/common.js\";\nimport type {\n CreateReplyScanParams,\n ListReplyScanResultsParams,\n ReplyScan,\n ReplyScanResults,\n} from \"../types/reply-scan.js\";\n\nexport class ReplyScans extends ApiResource {\n create(params: CreateReplyScanParams, options?: MethodOptions): Promise<ReplyScan> {\n return this.client.request<ReplyScan>({\n method: \"POST\",\n path: \"/reply-scans\",\n body: params,\n methodOptions: options,\n });\n }\n\n get(id: string, options?: MethodOptions): Promise<ReplyScan> {\n return this.client.request<ReplyScan>({\n method: \"GET\",\n path: `/reply-scans/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n listResults(\n id: string,\n params?: ListReplyScanResultsParams,\n options?: MethodOptions,\n ): Promise<ReplyScanResults> {\n return this.client.request<ReplyScanResults>({\n method: \"GET\",\n path: `/reply-scans/${encodeURIComponent(id)}/results`,\n query: { cursor: params?.cursor, limit: params?.limit },\n methodOptions: options,\n });\n }\n}\n","import { ApiResource } from \"../resource.js\";\nimport type { MethodOptions } from \"../types/common.js\";\nimport type {\n ListScheduledMessagesParams,\n ScheduledMessage,\n ScheduledMessageList,\n UpdateScheduledMessageParams,\n} from \"../types/message.js\";\n\nexport class ScheduledMessages extends ApiResource {\n list(\n params?: ListScheduledMessagesParams,\n options?: MethodOptions,\n ): Promise<ScheduledMessageList> {\n return this.client.request<ScheduledMessageList>({\n method: \"GET\",\n path: \"/scheduled-messages\",\n query: {\n include_held: params?.include_held,\n search: params?.search,\n limit: params?.limit,\n },\n methodOptions: options,\n });\n }\n\n get(id: string, options?: MethodOptions): Promise<ScheduledMessage> {\n return this.client.request<ScheduledMessage>({\n method: \"GET\",\n path: `/scheduled-messages/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n update(\n id: string,\n params: UpdateScheduledMessageParams,\n options?: MethodOptions,\n ): Promise<ScheduledMessage> {\n return this.client.request<ScheduledMessage>({\n method: \"PATCH\",\n path: `/scheduled-messages/${encodeURIComponent(id)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n cancel(id: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/scheduled-messages/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n}\n","import { ApiResource } from \"../resource.js\";\nimport type { MethodOptions, StatusResponse } from \"../types/common.js\";\n\nexport class Status extends ApiResource {\n get(options?: MethodOptions): Promise<StatusResponse> {\n return this.client.request<StatusResponse>({\n method: \"GET\",\n path: \"/status\",\n methodOptions: options,\n });\n }\n}\n","import { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type { MethodOptions, PaginatedResponse } from \"../types/common.js\";\nimport type { ListSuppressionsParams, Suppression } from \"../types/suppression.js\";\n\nexport class Suppressions extends ApiResource {\n list(\n params?: ListSuppressionsParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<Suppression>> {\n return this.client.request<PaginatedResponse<Suppression>>({\n method: \"GET\",\n path: \"/suppressions\",\n query: {\n cursor: params?.cursor,\n limit: params?.limit,\n },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params?: Omit<ListSuppressionsParams, \"cursor\">): Page<Suppression> {\n return new Page<Suppression>(this.client, \"/suppressions\", {\n limit: params?.limit,\n });\n }\n\n remove(email: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/suppressions/${encodeURIComponent(email)}`,\n methodOptions: options,\n });\n }\n}\n","import { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type { MethodOptions, PaginatedResponse } from \"../types/common.js\";\nimport type { Message } from \"../types/message.js\";\nimport type {\n GetThreadParams,\n ListThreadsParams,\n ReplyToThreadParams,\n Thread,\n} from \"../types/thread.js\";\n\nexport class Threads extends ApiResource {\n list(params: ListThreadsParams, options?: MethodOptions): Promise<PaginatedResponse<Thread>> {\n return this.client.request<PaginatedResponse<Thread>>({\n method: \"GET\",\n path: \"/threads\",\n query: {\n mailbox_id: params.mailbox_id,\n cursor: params.cursor,\n limit: params.limit,\n },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params: Omit<ListThreadsParams, \"cursor\">): Page<Thread> {\n return new Page<Thread>(this.client, \"/threads\", {\n mailbox_id: params.mailbox_id,\n limit: params.limit,\n });\n }\n\n get(\n id: string,\n params: GetThreadParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<Message>> {\n return this.client.request<PaginatedResponse<Message>>({\n method: \"GET\",\n path: `/threads/${encodeURIComponent(id)}`,\n query: {\n mailbox_id: params.mailbox_id,\n cursor: params.cursor,\n limit: params.limit,\n },\n methodOptions: options,\n });\n }\n\n reply(id: string, params: ReplyToThreadParams, options?: MethodOptions): Promise<Message> {\n return this.client.request<Message>({\n method: \"POST\",\n path: `/threads/${encodeURIComponent(id)}/reply`,\n body: params,\n methodOptions: options,\n });\n }\n}\n","import { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type { MethodOptions, PaginatedResponse } from \"../types/common.js\";\nimport type {\n CreateWebhookParams,\n ListDeliveriesParams,\n ListWebhooksParams,\n RotateSecretResponse,\n TestWebhookResponse,\n UpdateWebhookParams,\n Webhook,\n WebhookDelivery,\n WebhookDeliveryDetail,\n WebhookWithSecret,\n} from \"../types/webhook.js\";\n\nexport class Webhooks extends ApiResource {\n create(params: CreateWebhookParams, options?: MethodOptions): Promise<WebhookWithSecret> {\n return this.client.request<WebhookWithSecret>({\n method: \"POST\",\n path: \"/webhooks\",\n body: params,\n methodOptions: options,\n });\n }\n\n list(params?: ListWebhooksParams, options?: MethodOptions): Promise<PaginatedResponse<Webhook>> {\n return this.client.request<PaginatedResponse<Webhook>>({\n method: \"GET\",\n path: \"/webhooks\",\n query: {\n cursor: params?.cursor,\n limit: params?.limit,\n },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params?: Omit<ListWebhooksParams, \"cursor\">): Page<Webhook> {\n return new Page<Webhook>(this.client, \"/webhooks\", {\n limit: params?.limit,\n });\n }\n\n get(id: string, options?: MethodOptions): Promise<Webhook> {\n return this.client.request<Webhook>({\n method: \"GET\",\n path: `/webhooks/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n update(id: string, params: UpdateWebhookParams, options?: MethodOptions): Promise<Webhook> {\n return this.client.request<Webhook>({\n method: \"PATCH\",\n path: `/webhooks/${encodeURIComponent(id)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n delete(id: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/webhooks/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n rotateSecret(id: string, options?: MethodOptions): Promise<RotateSecretResponse> {\n return this.client.request<RotateSecretResponse>({\n method: \"POST\",\n path: `/webhooks/${encodeURIComponent(id)}/rotate-secret`,\n methodOptions: options,\n });\n }\n\n test(id: string, options?: MethodOptions): Promise<TestWebhookResponse> {\n return this.client.request<TestWebhookResponse>({\n method: \"POST\",\n path: `/webhooks/${encodeURIComponent(id)}/test`,\n methodOptions: options,\n });\n }\n\n listDeliveries(\n id: string,\n params?: ListDeliveriesParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<WebhookDelivery>> {\n return this.client.request<PaginatedResponse<WebhookDelivery>>({\n method: \"GET\",\n path: `/webhooks/${encodeURIComponent(id)}/deliveries`,\n query: {\n status: params?.status,\n event_type: params?.event_type,\n cursor: params?.cursor,\n limit: params?.limit,\n },\n methodOptions: options,\n });\n }\n\n listDeliveriesAutoPaginating(\n id: string,\n params?: Omit<ListDeliveriesParams, \"cursor\">,\n ): Page<WebhookDelivery> {\n return new Page<WebhookDelivery>(\n this.client,\n `/webhooks/${encodeURIComponent(id)}/deliveries`,\n {\n status: params?.status,\n event_type: params?.event_type,\n limit: params?.limit,\n },\n );\n }\n\n getDelivery(\n id: string,\n deliveryId: string,\n options?: MethodOptions,\n ): Promise<WebhookDeliveryDetail> {\n return this.client.request<WebhookDeliveryDetail>({\n method: \"GET\",\n path: `/webhooks/${encodeURIComponent(id)}/deliveries/${encodeURIComponent(deliveryId)}`,\n methodOptions: options,\n });\n }\n\n replayDelivery(\n id: string,\n deliveryId: string,\n options?: MethodOptions,\n ): Promise<WebhookDeliveryDetail> {\n return this.client.request<WebhookDeliveryDetail>({\n method: \"POST\",\n path: `/webhooks/${encodeURIComponent(id)}/deliveries/${encodeURIComponent(deliveryId)}/replay`,\n methodOptions: options,\n });\n }\n}\n","export const VERSION = \"0.4.21\"; // x-release-please-version\n","import { ConnectionError, mapErrorFromResponse, RateLimitError, ShipmailError } from \"./errors.js\";\nimport { Audiences } from \"./resources/audiences.js\";\nimport { Automations } from \"./resources/automations.js\";\nimport { BookingPages } from \"./resources/booking-pages.js\";\nimport { Calendar } from \"./resources/calendar.js\";\nimport { Capabilities } from \"./resources/capabilities.js\";\nimport { Domains } from \"./resources/domains.js\";\nimport { Mailboxes } from \"./resources/mailboxes.js\";\nimport { Messages } from \"./resources/messages.js\";\nimport { Newsletters } from \"./resources/newsletters.js\";\nimport { Partner } from \"./resources/partner.js\";\nimport { ReplyScans } from \"./resources/reply-scans.js\";\nimport { ScheduledMessages } from \"./resources/scheduled-messages.js\";\nimport { Status } from \"./resources/status.js\";\nimport { Suppressions } from \"./resources/suppressions.js\";\nimport { Threads } from \"./resources/threads.js\";\nimport { Webhooks } from \"./resources/webhooks.js\";\nimport type { ApiErrorBody, MethodOptions, ShipmailConfig } from \"./types/common.js\";\nimport { VERSION } from \"./version.js\";\n\nconst DEFAULT_BASE_URL = \"https://shipmail.to/api/v1\";\nconst DEFAULT_MAX_RETRIES = 2;\nconst DEFAULT_TIMEOUT = 30_000;\n\nfunction isRetryableStatus(status: number): boolean {\n return status === 429 || status >= 500;\n}\n\nfunction calculateBackoff(attempt: number, retryAfterMs?: number): number {\n if (retryAfterMs !== undefined && retryAfterMs > 0) {\n return retryAfterMs;\n }\n const base = Math.min(2 ** attempt * 500, 8000);\n const jitter = Math.random() * base * 0.5;\n return base + jitter;\n}\n\nfunction isApiErrorBody(value: unknown): value is ApiErrorBody {\n if (typeof value !== \"object\" || value === null) return false;\n const obj = value as Record<string, unknown>;\n if (typeof obj[\"error\"] !== \"object\" || obj[\"error\"] === null) return false;\n const error = obj[\"error\"] as Record<string, unknown>;\n return typeof error[\"type\"] === \"string\" && typeof error[\"message\"] === \"string\";\n}\n\nfunction rawBodyToBlobPart(rawBody: ArrayBuffer | Uint8Array): BlobPart {\n if (rawBody instanceof ArrayBuffer) return rawBody;\n const buffer = new ArrayBuffer(rawBody.byteLength);\n new Uint8Array(buffer).set(rawBody);\n return buffer;\n}\n\nexport type RequestOptions = {\n readonly method: string;\n readonly path: string;\n readonly body?: unknown | undefined;\n readonly query?: Record<string, string | number | boolean | undefined> | undefined;\n readonly rawBody?: ArrayBuffer | Uint8Array | undefined;\n readonly contentType?: string | undefined;\n readonly methodOptions?: MethodOptions | undefined;\n};\n\n/**\n * Client for the Shipmail API. Handles authentication, retries, and resource access.\n */\nexport class ShipmailClient {\n private readonly apiKey: string;\n private readonly baseUrl: string;\n private readonly maxRetries: number;\n private readonly timeout: number;\n private readonly fetchFn: typeof fetch;\n private readonly defaultHeaders: Record<string, string>;\n private readonly organizationId: string | undefined;\n\n readonly audiences: Audiences;\n readonly automations: Automations;\n readonly bookingPages: BookingPages;\n readonly capabilities: Capabilities;\n readonly calendar: Calendar;\n readonly domains: Domains;\n readonly mailboxes: Mailboxes;\n readonly messages: Messages;\n readonly newsletters: Newsletters;\n readonly partner: Partner;\n readonly replyScans: ReplyScans;\n readonly scheduledMessages: ScheduledMessages;\n readonly suppressions: Suppressions;\n readonly threads: Threads;\n readonly webhooks: Webhooks;\n readonly status: Status;\n\n /**\n * Create a new Shipmail client.\n * @param config - API key string or full configuration object.\n */\n constructor(config: string | ShipmailConfig) {\n if (typeof config === \"string\") {\n this.apiKey = config;\n this.baseUrl = DEFAULT_BASE_URL;\n this.maxRetries = DEFAULT_MAX_RETRIES;\n this.timeout = DEFAULT_TIMEOUT;\n this.fetchFn = globalThis.fetch;\n this.defaultHeaders = {};\n this.organizationId = undefined;\n } else {\n this.apiKey = config.apiKey;\n this.baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;\n this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES;\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT;\n this.fetchFn = config.fetch ?? globalThis.fetch;\n this.defaultHeaders = config.defaultHeaders ? { ...config.defaultHeaders } : {};\n this.organizationId = config.organizationId;\n }\n\n this.audiences = new Audiences(this);\n this.automations = new Automations(this);\n this.bookingPages = new BookingPages(this);\n this.capabilities = new Capabilities(this);\n this.calendar = new Calendar(this);\n this.domains = new Domains(this);\n this.mailboxes = new Mailboxes(this);\n this.messages = new Messages(this);\n this.newsletters = new Newsletters(this);\n this.partner = new Partner(this);\n this.replyScans = new ReplyScans(this);\n this.scheduledMessages = new ScheduledMessages(this);\n this.suppressions = new Suppressions(this);\n this.threads = new Threads(this);\n this.webhooks = new Webhooks(this);\n this.status = new Status(this);\n }\n\n async request<T>(options: RequestOptions): Promise<T> {\n return this.requestWithParser(options, \"application/json\", async (response) => {\n if (response.status === 204) {\n return undefined as T;\n }\n return (await response.json()) as T;\n });\n }\n\n async requestBytes(options: RequestOptions): Promise<Uint8Array> {\n return this.requestWithParser(options, \"application/octet-stream\", async (response) => {\n return new Uint8Array(await response.arrayBuffer());\n });\n }\n\n private async requestWithParser<T>(\n options: RequestOptions,\n accept: string,\n parseSuccess: (response: Response) => Promise<T>,\n ): Promise<T> {\n const url = this.buildUrl(options.path, options.query);\n let lastError: ShipmailError | undefined;\n const methodOpts = options.methodOptions;\n\n for (let attempt = 0; attempt <= this.maxRetries; attempt++) {\n if (attempt > 0) {\n const retryAfterMs =\n lastError instanceof RateLimitError && lastError.retryAfter !== undefined\n ? lastError.retryAfter * 1000\n : undefined;\n const delay = calculateBackoff(attempt - 1, retryAfterMs);\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n\n let response: Response;\n try {\n const headers: Record<string, string> = {\n ...this.defaultHeaders,\n Authorization: `Bearer ${this.apiKey}`,\n \"User-Agent\": `shipmail-node/${VERSION}`,\n Accept: accept,\n ...methodOpts?.headers,\n };\n\n if (methodOpts?.idempotencyKey) {\n headers[\"Idempotency-Key\"] = methodOpts.idempotencyKey;\n }\n\n const targetOrganizationId = methodOpts?.organizationId ?? this.organizationId;\n if (targetOrganizationId) {\n headers[\"X-Shipmail-Organization-Id\"] = targetOrganizationId;\n }\n\n let body: BodyInit | null = null;\n if (options.rawBody !== undefined) {\n headers[\"Content-Type\"] = options.contentType ?? \"application/octet-stream\";\n body = new Blob([rawBodyToBlobPart(options.rawBody)]);\n } else if (options.body !== undefined) {\n headers[\"Content-Type\"] = \"application/json\";\n body = JSON.stringify(options.body);\n }\n\n const effectiveTimeout = methodOpts?.timeout ?? this.timeout;\n\n response = await this.fetchFn(url, {\n method: options.method,\n headers,\n body,\n signal: methodOpts?.signal ?? AbortSignal.timeout(effectiveTimeout),\n });\n } catch (err) {\n lastError = new ConnectionError(err instanceof Error ? err.message : \"Request failed\");\n if (attempt < this.maxRetries) continue;\n throw lastError;\n }\n\n if (response.ok) {\n return parseSuccess(response);\n }\n\n let errorBody: unknown;\n try {\n errorBody = await response.json();\n } catch {\n errorBody = null;\n }\n\n if (isApiErrorBody(errorBody)) {\n lastError = mapErrorFromResponse(response.status, errorBody);\n } else {\n lastError = new ShipmailError(`Request failed with status ${response.status}`, {\n status: response.status,\n retryable: isRetryableStatus(response.status),\n });\n }\n\n if (!lastError.retryable || attempt >= this.maxRetries) {\n throw lastError;\n }\n }\n\n throw lastError ?? new ShipmailError(\"Request failed after retries\");\n }\n\n private buildUrl(\n path: string,\n query?: Record<string, string | number | boolean | undefined>,\n ): string {\n const url = new URL(`${this.baseUrl}${path}`);\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n return url.toString();\n }\n}\n","import type { PaginationParams } from \"./common.js\";\n\nexport const CONFERENCING_PROVIDER_IDS = [\"zoom\", \"google_meet\"] as const;\nexport type ConferencingProviderId = (typeof CONFERENCING_PROVIDER_IDS)[number];\n\nexport type BookingPage = {\n readonly object: \"booking_page\";\n readonly id: string;\n readonly mailbox: string;\n readonly slug: string;\n readonly url: string | null;\n readonly name: string;\n readonly description: string | null;\n readonly duration_minutes: number;\n readonly availability_days: readonly number[];\n readonly window_start_minutes: number;\n readonly window_end_minutes: number;\n readonly timezone: string;\n readonly buffer_minutes: number;\n readonly minimum_notice_minutes: number;\n readonly max_advance_days: number;\n readonly conferencing_provider: ConferencingProviderId | null;\n readonly active: boolean;\n readonly created_at: string;\n readonly updated_at: string;\n};\n\nexport type ListBookingPagesParams = PaginationParams;\n\nexport type CreateBookingPageParams = {\n readonly name: string;\n readonly mailbox: string;\n readonly slug: string;\n readonly duration_minutes: number;\n readonly availability_days: readonly number[];\n readonly window_start_minutes: number;\n readonly window_end_minutes: number;\n readonly timezone: string;\n readonly description?: string | null | undefined;\n readonly buffer_minutes?: number | undefined;\n readonly minimum_notice_minutes?: number | undefined;\n readonly max_advance_days?: number | undefined;\n readonly conferencing_provider?: ConferencingProviderId | null | undefined;\n readonly active?: boolean | undefined;\n};\n\nexport type UpdateBookingPageParams = {\n readonly name?: string | undefined;\n readonly mailbox?: string | undefined;\n readonly slug?: string | undefined;\n readonly duration_minutes?: number | undefined;\n readonly availability_days?: readonly number[] | undefined;\n readonly window_start_minutes?: number | undefined;\n readonly window_end_minutes?: number | undefined;\n readonly timezone?: string | undefined;\n readonly description?: string | null | undefined;\n readonly buffer_minutes?: number | undefined;\n readonly minimum_notice_minutes?: number | undefined;\n readonly max_advance_days?: number | undefined;\n readonly conferencing_provider?: ConferencingProviderId | null | undefined;\n readonly active?: boolean | undefined;\n};\n","export type ShipmailConfig = {\n readonly apiKey: string;\n readonly baseUrl?: string | undefined;\n readonly maxRetries?: number | undefined;\n readonly timeout?: number | undefined;\n readonly fetch?: typeof fetch | undefined;\n readonly defaultHeaders?: Record<string, string> | undefined;\n readonly organizationId?: string | undefined;\n};\n\nexport type PaginationParams = {\n readonly cursor?: string | undefined;\n readonly limit?: number | undefined;\n};\n\nexport type PaginatedResponse<T> = {\n readonly data: readonly T[];\n readonly pagination: {\n readonly next_cursor: string | null;\n readonly has_more: boolean;\n readonly limit: number;\n };\n};\n\nexport type DataMode = \"live\" | \"test\";\nexport type SandboxOutcome = \"delivered\" | \"bounced\" | \"complained\";\n\nexport type ErrorType =\n | \"validation_error\"\n | \"authentication_error\"\n | \"authorization_error\"\n | \"quota_exceeded\"\n | \"not_found\"\n | \"rate_limit_error\"\n | \"conflict\"\n | \"internal_error\";\n\nexport type ApiErrorBody = {\n readonly error: {\n readonly type: ErrorType;\n readonly message: string;\n readonly request_id?: string | undefined;\n readonly details?:\n | readonly {\n readonly field: string;\n readonly message: string;\n readonly code?: string | undefined;\n }[]\n | undefined;\n readonly retry_after?: number | undefined;\n };\n};\n\nexport type EmailRecipient = {\n readonly address: string;\n readonly name?: string | null | undefined;\n};\n\nexport type EmailRecipientInput = EmailRecipient | string;\n\nexport const WEBHOOK_EVENT_TYPES = [\n \"message.received\",\n \"message.sent\",\n \"message.delivered\",\n \"message.bounced\",\n \"message.complained\",\n \"mailbox.rule_matched\",\n \"domain.verified\",\n \"domain.verification_failed\",\n \"domain.degraded\",\n \"org.reputation_warning\",\n \"org.sending_throttled\",\n \"org.sending_suspended\",\n \"org.reputation_recovered\",\n] as const;\n\nexport type WebhookEventType = (typeof WEBHOOK_EVENT_TYPES)[number];\nexport const WEBHOOK_DELIVERY_EVENT_TYPES = [\"webhook.test\", ...WEBHOOK_EVENT_TYPES] as const;\nexport type WebhookDeliveryEventType = (typeof WEBHOOK_DELIVERY_EVENT_TYPES)[number];\n\nexport type StatusResponse = {\n readonly status: string;\n readonly version: string;\n readonly time: string;\n readonly request_id: string;\n};\n\nexport const DOMAIN_STATUSES = [\"pending\", \"verifying\", \"verified\", \"degraded\", \"failed\"] as const;\nexport type DomainStatus = (typeof DOMAIN_STATUSES)[number];\n\nexport const MESSAGE_STATUSES = [\n \"scheduled\",\n \"queued\",\n \"sent\",\n \"delivered\",\n \"bounced\",\n \"complained\",\n \"failed\",\n \"suppressed\",\n \"cancelled\",\n] as const;\nexport type MessageStatus = (typeof MESSAGE_STATUSES)[number];\n\nexport const MESSAGE_SOURCES = [\n \"api\",\n \"newsletter\",\n \"dashboard\",\n \"inbound\",\n \"smtp\",\n \"assistant\",\n] as const;\nexport type MessageSource = (typeof MESSAGE_SOURCES)[number];\n\nexport const WEBHOOK_DELIVERY_STATUSES = [\"pending\", \"delivered\", \"failed\"] as const;\nexport type WebhookDeliveryStatus = (typeof WEBHOOK_DELIVERY_STATUSES)[number];\n\nexport type MethodOptions = {\n readonly timeout?: number | undefined;\n readonly signal?: AbortSignal | undefined;\n readonly headers?: Record<string, string> | undefined;\n readonly idempotencyKey?: string | undefined;\n readonly organizationId?: string | undefined;\n};\n\nexport type OneTimeSecretMethodOptions = Omit<MethodOptions, \"idempotencyKey\">;\n","import { WebhookVerificationError } from \"./errors.js\";\nimport type { WebhookEvent } from \"./types/webhook.js\";\n\nconst DEFAULT_TOLERANCE_SECONDS = 300; // 5 minutes\n\ntype WebhookHeaders = {\n readonly \"x-shipmail-signature\"?: string;\n readonly \"x-shipmail-timestamp\"?: string;\n readonly \"x-shipmail-event-id\"?: string;\n readonly [key: string]: string | undefined;\n};\n\nfunction getHeader(headers: WebhookHeaders | Headers, name: string): string | undefined {\n if (headers instanceof Headers) {\n return headers.get(name) ?? undefined;\n }\n return headers[name] ?? headers[name.toLowerCase()];\n}\n\nasync function signPayload(secret: string, timestamp: number, body: string): Promise<string> {\n const { createHmac } = await import(\"crypto\");\n const payload = `v1=${timestamp}\\n${body}`;\n return createHmac(\"sha256\", secret).update(payload).digest(\"hex\");\n}\n\n/**\n * Verify an incoming webhook signature. Throws `WebhookVerificationError` on failure.\n * Returns the parsed webhook event on success.\n */\nexport async function verifyWebhook(\n body: string,\n headers: WebhookHeaders | Headers,\n secret: string,\n options?: { readonly toleranceInSeconds?: number | undefined },\n): Promise<WebhookEvent> {\n const signature = getHeader(headers, \"x-shipmail-signature\");\n const timestampStr = getHeader(headers, \"x-shipmail-timestamp\");\n\n if (!signature) {\n throw new WebhookVerificationError(\"Missing X-Shipmail-Signature header\");\n }\n if (!timestampStr) {\n throw new WebhookVerificationError(\"Missing X-Shipmail-Timestamp header\");\n }\n\n const timestamp = parseInt(timestampStr, 10);\n if (isNaN(timestamp)) {\n throw new WebhookVerificationError(\"Invalid X-Shipmail-Timestamp header\");\n }\n\n const tolerance = options?.toleranceInSeconds ?? DEFAULT_TOLERANCE_SECONDS;\n const now = Math.floor(Date.now() / 1000);\n if (Math.abs(now - timestamp) > tolerance) {\n throw new WebhookVerificationError(\"Webhook timestamp is outside tolerance window\");\n }\n\n const expected = await signPayload(secret, timestamp, body);\n\n const { timingSafeEqual } = await import(\"crypto\");\n const sigBuffer = Buffer.from(signature, \"hex\");\n const expectedBuffer = Buffer.from(expected, \"hex\");\n\n if (sigBuffer.length !== expectedBuffer.length || !timingSafeEqual(sigBuffer, expectedBuffer)) {\n throw new WebhookVerificationError(\"Webhook signature verification failed\");\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(body);\n } catch {\n throw new WebhookVerificationError(\"Invalid webhook payload: not valid JSON\");\n }\n\n return parsed as WebhookEvent;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/api-key-scopes.ts","../src/errors.ts","../src/pagination.ts","../src/resource.ts","../src/resources/audiences.ts","../src/resources/automations.ts","../src/resources/booking-pages.ts","../src/resources/calendar.ts","../src/resources/capabilities.ts","../src/resources/domains.ts","../src/resources/mailboxes.ts","../src/resources/members.ts","../src/resources/messages.ts","../src/resources/newsletters.ts","../src/resources/partner.ts","../src/resources/reply-scans.ts","../src/resources/scheduled-messages.ts","../src/resources/status.ts","../src/resources/suppressions.ts","../src/resources/threads.ts","../src/resources/webhooks.ts","../src/version.ts","../src/client.ts","../src/types/booking-page.ts","../src/types/common.ts","../src/webhook-verification.ts"],"names":["path","base"],"mappings":"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","file":"index.js","sourcesContent":["export const API_KEY_SCOPES = [\n \"*\",\n \"audiences:read\",\n \"audiences:write\",\n \"automations:read\",\n \"automations:write\",\n \"booking_pages:read\",\n \"booking_pages:write\",\n \"calendar:read\",\n \"calendar:write\",\n \"domains:read\",\n \"domains:write\",\n \"mailboxes:read\",\n \"mailboxes:export\",\n \"mailboxes:write\",\n \"mailbox_credentials:read\",\n \"mailbox_credentials:write\",\n \"mailbox_forwarding:read\",\n \"mailbox_forwarding:write\",\n \"mailbox_rules:read\",\n \"mailbox_rules:write\",\n \"members:read\",\n \"messages:read\",\n \"messages:write\",\n \"drafts:write\",\n \"messages:send\",\n \"newsletters:read\",\n \"newsletters:write\",\n \"threads:read\",\n \"webhooks:read\",\n \"webhooks:write\",\n \"suppressions:read\",\n \"suppressions:write\",\n \"partner:organizations:read\",\n \"partner:organizations:write\",\n \"partner:organizations:access\",\n \"partner:mailbox_credentials:issue\",\n \"partner:usage:read\",\n] as const;\n\nexport type ApiKeyScope = (typeof API_KEY_SCOPES)[number];\n\nexport const API_KEY_SCOPE_DESCRIPTIONS: Readonly<Record<ApiKeyScope, string>> = {\n \"*\": \"All non-partner API endpoints in this organization.\",\n \"audiences:read\": \"List and retrieve newsletter audiences and their subscribers.\",\n \"audiences:write\": \"Create audiences and add, update, or remove their subscribers.\",\n \"automations:read\": \"List and retrieve assistant automations.\",\n \"automations:write\": \"Create, update, and manually run assistant automations.\",\n \"booking_pages:read\": \"List and retrieve booking pages.\",\n \"booking_pages:write\": \"Create, update, and delete booking pages.\",\n \"calendar:read\": \"List and retrieve calendar events and open availability.\",\n \"calendar:write\": \"Create, update, and delete calendar events.\",\n \"domains:read\": \"List, retrieve, and verify domains.\",\n \"domains:write\": \"Create, update, and delete domains.\",\n \"mailboxes:read\": \"List and retrieve mailboxes.\",\n \"mailboxes:export\": \"Create and download mailbox content exports.\",\n \"mailboxes:write\": \"Create, update, suspend, resume, and delete mailboxes.\",\n \"mailbox_credentials:read\": \"List revocable app passwords for allowed mailboxes.\",\n \"mailbox_credentials:write\": \"Create and revoke app passwords for allowed mailboxes.\",\n \"mailbox_forwarding:read\": \"List forwarding destinations for allowed mailboxes.\",\n \"mailbox_forwarding:write\": \"Create and remove forwarding destinations for allowed mailboxes.\",\n \"mailbox_rules:read\": \"List deterministic server-side rules for allowed mailboxes.\",\n \"mailbox_rules:write\": \"Create, replace, and remove deterministic rules for allowed mailboxes.\",\n \"members:read\": \"List and retrieve organization members.\",\n \"messages:read\": \"List and retrieve messages.\",\n \"messages:write\": \"Update, move, delete, and inject sandbox messages.\",\n \"drafts:write\": \"Create agent-safe reply drafts with server-derived recipients.\",\n \"messages:send\": \"Send messages, replies, and approved reply drafts.\",\n \"newsletters:read\": \"List and retrieve newsletter drafts and campaigns.\",\n \"newsletters:write\": \"Create, update, test, schedule, cancel, and resume newsletters.\",\n \"threads:read\": \"List threads and retrieve thread messages.\",\n \"webhooks:read\": \"List webhooks, retrieve webhooks, and list deliveries.\",\n \"webhooks:write\": \"Create, update, delete, test, and rotate webhooks.\",\n \"suppressions:read\": \"List suppressed recipient addresses.\",\n \"suppressions:write\": \"Remove addresses from the suppression list.\",\n \"partner:organizations:read\": \"List and retrieve this partner's child organizations.\",\n \"partner:organizations:write\": \"Create and manage this partner's child organizations.\",\n \"partner:organizations:access\": \"Act on an active child using the delegated organization header.\",\n \"partner:mailbox_credentials:issue\":\n \"List and consume operator-approved grants for embedded-webmail credentials.\",\n \"partner:usage:read\": \"Read consolidated child and mailbox usage for this partner.\",\n};\n\nexport function isApiKeyScope(value: string): value is ApiKeyScope {\n return API_KEY_SCOPES.some((scope) => scope === value);\n}\n\nexport function apiKeyScopesGrant(\n grantedScopes: readonly string[],\n requiredScope: ApiKeyScope | \"public\",\n): boolean {\n if (requiredScope === \"public\") return true;\n if (requiredScope.startsWith(\"partner:\")) return grantedScopes.includes(requiredScope);\n return grantedScopes.includes(\"*\") || grantedScopes.includes(requiredScope);\n}\n","import type { ApiErrorBody, ErrorType } from \"./types/common.js\";\n\nexport class ShipmailError extends Error {\n readonly status: number | undefined;\n readonly type: ErrorType | undefined;\n readonly requestId: string | undefined;\n readonly retryable: boolean;\n\n constructor(\n message: string,\n options?: {\n readonly status?: number | undefined;\n readonly type?: ErrorType | undefined;\n readonly requestId?: string | undefined;\n readonly retryable?: boolean | undefined;\n },\n ) {\n super(message);\n this.name = \"ShipmailError\";\n this.status = options?.status;\n this.type = options?.type;\n this.requestId = options?.requestId;\n this.retryable = options?.retryable ?? false;\n }\n}\n\nexport class AuthenticationError extends ShipmailError {\n constructor(message: string, requestId?: string) {\n super(message, { status: 401, type: \"authentication_error\", requestId, retryable: false });\n this.name = \"AuthenticationError\";\n }\n}\n\nexport class AuthorizationError extends ShipmailError {\n constructor(message: string, requestId?: string) {\n super(message, { status: 403, type: \"authorization_error\", requestId, retryable: false });\n this.name = \"AuthorizationError\";\n }\n}\n\nexport class ValidationError extends ShipmailError {\n readonly details:\n | readonly {\n readonly field: string;\n readonly message: string;\n readonly code?: string | undefined;\n }[]\n | undefined;\n\n constructor(\n message: string,\n options?: {\n readonly requestId?: string | undefined;\n readonly details?:\n | readonly {\n readonly field: string;\n readonly message: string;\n readonly code?: string | undefined;\n }[]\n | undefined;\n },\n ) {\n super(message, {\n status: 422,\n type: \"validation_error\",\n requestId: options?.requestId,\n retryable: false,\n });\n this.name = \"ValidationError\";\n this.details = options?.details;\n }\n}\n\nexport class QuotaExceededError extends ShipmailError {\n constructor(message: string, requestId?: string) {\n super(message, { status: 403, type: \"quota_exceeded\", requestId, retryable: false });\n this.name = \"QuotaExceededError\";\n }\n}\n\nexport class NotFoundError extends ShipmailError {\n constructor(message: string, requestId?: string) {\n super(message, { status: 404, type: \"not_found\", requestId, retryable: false });\n this.name = \"NotFoundError\";\n }\n}\n\nexport class RateLimitError extends ShipmailError {\n readonly retryAfter: number | undefined;\n\n constructor(\n message: string,\n options?: { readonly requestId?: string | undefined; readonly retryAfter?: number | undefined },\n ) {\n super(message, {\n status: 429,\n type: \"rate_limit_error\",\n requestId: options?.requestId,\n retryable: true,\n });\n this.name = \"RateLimitError\";\n this.retryAfter = options?.retryAfter;\n }\n}\n\nexport class ConflictError extends ShipmailError {\n constructor(message: string, requestId?: string) {\n super(message, { status: 409, type: \"conflict\", requestId, retryable: false });\n this.name = \"ConflictError\";\n }\n}\n\nexport class InternalServerError extends ShipmailError {\n constructor(message: string, requestId?: string) {\n super(message, { status: 500, type: \"internal_error\", requestId, retryable: true });\n this.name = \"InternalServerError\";\n }\n}\n\nexport class ConnectionError extends ShipmailError {\n constructor(message: string) {\n super(message, { retryable: true });\n this.name = \"ConnectionError\";\n }\n}\n\nexport class WebhookVerificationError extends ShipmailError {\n constructor(message: string) {\n super(message, { retryable: false });\n this.name = \"WebhookVerificationError\";\n }\n}\n\nexport function mapErrorFromResponse(\n status: number,\n body: ApiErrorBody,\n requestId?: string,\n): ShipmailError {\n const error = body.error;\n const rid = requestId ?? error.request_id;\n\n switch (error.type) {\n case \"authentication_error\":\n return new AuthenticationError(error.message, rid);\n case \"authorization_error\":\n return new AuthorizationError(error.message, rid);\n case \"quota_exceeded\":\n return new QuotaExceededError(error.message, rid);\n case \"validation_error\":\n return new ValidationError(error.message, { requestId: rid, details: error.details });\n case \"not_found\":\n return new NotFoundError(error.message, rid);\n case \"rate_limit_error\":\n return new RateLimitError(error.message, { requestId: rid, retryAfter: error.retry_after });\n case \"conflict\":\n return new ConflictError(error.message, rid);\n case \"internal_error\":\n return new InternalServerError(error.message, rid);\n default:\n return new ShipmailError(error.message, {\n status,\n type: error.type,\n requestId: rid,\n retryable: status >= 500,\n });\n }\n}\n","import type { ShipmailClient } from \"./client.js\";\nimport type { PaginatedResponse } from \"./types/common.js\";\n\nexport class Page<T> implements AsyncIterable<T> {\n private readonly client: ShipmailClient;\n private readonly path: string;\n private readonly query: Record<string, string | number | boolean | undefined>;\n\n constructor(\n client: ShipmailClient,\n path: string,\n query: Record<string, string | number | boolean | undefined>,\n ) {\n this.client = client;\n this.path = path;\n this.query = query;\n }\n\n async *[Symbol.asyncIterator](): AsyncIterator<T> {\n let cursor: string | undefined;\n\n do {\n const response = await this.client.request<PaginatedResponse<T>>({\n method: \"GET\",\n path: this.path,\n query: { ...this.query, cursor },\n });\n\n for (const item of response.data) {\n yield item;\n }\n\n cursor = response.pagination.next_cursor ?? undefined;\n if (!response.pagination.has_more) break;\n } while (cursor);\n }\n}\n","import type { ShipmailClient } from \"./client.js\";\n\nexport abstract class ApiResource {\n protected readonly client: ShipmailClient;\n\n constructor(client: ShipmailClient) {\n this.client = client;\n }\n}\n","import type { ShipmailClient } from \"../client.js\";\nimport { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type {\n AddSubscriberParams,\n AddSubscribersBatchParams,\n AddSubscribersBatchResult,\n Audience,\n AudienceFeed,\n CreateAudienceParams,\n ListAudiencesParams,\n ListSubscribersParams,\n ResubscribeSubscriberParams,\n Subscriber,\n SubscriberResult,\n UpdateAudienceFeedParams,\n UpdateAudienceParams,\n UpdateSubscriberParams,\n} from \"../types/audience.js\";\nimport type { MethodOptions, PaginatedResponse } from \"../types/common.js\";\n\nfunction base(audienceId: string): string {\n return `/audiences/${encodeURIComponent(audienceId)}/subscribers`;\n}\n\nfunction feedBase(audienceId: string): string {\n return `/audiences/${encodeURIComponent(audienceId)}/feed`;\n}\n\nclass AudienceFeeds extends ApiResource {\n get(audienceId: string, options?: MethodOptions): Promise<AudienceFeed> {\n return this.client.request<AudienceFeed>({\n method: \"GET\",\n path: feedBase(audienceId),\n methodOptions: options,\n });\n }\n\n update(\n audienceId: string,\n params: UpdateAudienceFeedParams,\n options?: MethodOptions,\n ): Promise<AudienceFeed> {\n return this.client.request<AudienceFeed>({\n method: \"PATCH\",\n path: feedBase(audienceId),\n body: params,\n methodOptions: options,\n });\n }\n\n rotate(audienceId: string, options?: MethodOptions): Promise<AudienceFeed> {\n return this.client.request<AudienceFeed>({\n method: \"POST\",\n path: `${feedBase(audienceId)}/rotate`,\n methodOptions: options,\n });\n }\n\n revoke(audienceId: string, options?: MethodOptions): Promise<AudienceFeed> {\n return this.client.request<AudienceFeed>({\n method: \"POST\",\n path: `${feedBase(audienceId)}/revoke`,\n methodOptions: options,\n });\n }\n}\n\nclass Subscribers extends ApiResource {\n add(\n audienceId: string,\n params: AddSubscriberParams,\n options?: MethodOptions,\n ): Promise<SubscriberResult> {\n return this.client.request<SubscriberResult>({\n method: \"POST\",\n path: base(audienceId),\n body: params,\n methodOptions: options,\n });\n }\n\n addBatch(\n audienceId: string,\n params: AddSubscribersBatchParams,\n options?: MethodOptions,\n ): Promise<AddSubscribersBatchResult> {\n return this.client.request<AddSubscribersBatchResult>({\n method: \"POST\",\n path: `${base(audienceId)}/batch`,\n body: params,\n methodOptions: options,\n });\n }\n\n list(\n audienceId: string,\n params?: ListSubscribersParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<Subscriber>> {\n return this.client.request<PaginatedResponse<Subscriber>>({\n method: \"GET\",\n path: base(audienceId),\n query: {\n cursor: params?.cursor,\n limit: params?.limit,\n status: params?.status,\n email: params?.email,\n },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(\n audienceId: string,\n params?: Omit<ListSubscribersParams, \"cursor\">,\n ): Page<Subscriber> {\n return new Page<Subscriber>(this.client, base(audienceId), {\n limit: params?.limit,\n status: params?.status,\n email: params?.email,\n });\n }\n\n get(audienceId: string, subscriberId: string, options?: MethodOptions): Promise<Subscriber> {\n return this.client.request<Subscriber>({\n method: \"GET\",\n path: `${base(audienceId)}/${encodeURIComponent(subscriberId)}`,\n methodOptions: options,\n });\n }\n\n getByEmail(audienceId: string, email: string, options?: MethodOptions): Promise<Subscriber> {\n return this.client.request<Subscriber>({\n method: \"GET\",\n path: `${base(audienceId)}/by-email/${encodeURIComponent(email)}`,\n methodOptions: options,\n });\n }\n\n update(\n audienceId: string,\n subscriberId: string,\n params: UpdateSubscriberParams,\n options?: MethodOptions,\n ): Promise<Subscriber> {\n return this.client.request<Subscriber>({\n method: \"PATCH\",\n path: `${base(audienceId)}/${encodeURIComponent(subscriberId)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n unsubscribe(\n audienceId: string,\n subscriberId: string,\n options?: MethodOptions,\n ): Promise<Subscriber> {\n return this.client.request<Subscriber>({\n method: \"POST\",\n path: `${base(audienceId)}/${encodeURIComponent(subscriberId)}/unsubscribe`,\n methodOptions: options,\n });\n }\n\n resubscribe(\n audienceId: string,\n subscriberId: string,\n params: ResubscribeSubscriberParams,\n options?: MethodOptions,\n ): Promise<Subscriber> {\n return this.client.request<Subscriber>({\n method: \"POST\",\n path: `${base(audienceId)}/${encodeURIComponent(subscriberId)}/resubscribe`,\n body: params,\n methodOptions: options,\n });\n }\n\n remove(audienceId: string, subscriberId: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `${base(audienceId)}/${encodeURIComponent(subscriberId)}`,\n methodOptions: options,\n });\n }\n}\n\nexport class Audiences extends ApiResource {\n readonly feeds: AudienceFeeds;\n readonly subscribers: Subscribers;\n\n constructor(client: ShipmailClient) {\n super(client);\n this.feeds = new AudienceFeeds(client);\n this.subscribers = new Subscribers(client);\n }\n\n create(params: CreateAudienceParams, options?: MethodOptions): Promise<Audience> {\n return this.client.request<Audience>({\n method: \"POST\",\n path: \"/audiences\",\n body: params,\n methodOptions: options,\n });\n }\n\n list(\n params?: ListAudiencesParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<Audience>> {\n return this.client.request<PaginatedResponse<Audience>>({\n method: \"GET\",\n path: \"/audiences\",\n query: { cursor: params?.cursor, limit: params?.limit },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params?: Omit<ListAudiencesParams, \"cursor\">): Page<Audience> {\n return new Page<Audience>(this.client, \"/audiences\", { limit: params?.limit });\n }\n\n get(id: string, options?: MethodOptions): Promise<Audience> {\n return this.client.request<Audience>({\n method: \"GET\",\n path: `/audiences/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n update(id: string, params: UpdateAudienceParams, options?: MethodOptions): Promise<Audience> {\n return this.client.request<Audience>({\n method: \"PATCH\",\n path: `/audiences/${encodeURIComponent(id)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n delete(id: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/audiences/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n}\n","import { ApiResource } from \"../resource.js\";\nimport type {\n Automation,\n AutomationRun,\n CreateAutomationParams,\n ListAutomationsResponse,\n UpdateAutomationParams,\n} from \"../types/automation.js\";\nimport type { MethodOptions } from \"../types/common.js\";\n\nexport class Automations extends ApiResource {\n list(options?: MethodOptions): Promise<ListAutomationsResponse> {\n return this.client.request<ListAutomationsResponse>({\n method: \"GET\",\n path: \"/automations\",\n methodOptions: options,\n });\n }\n\n create(params: CreateAutomationParams, options?: MethodOptions): Promise<Automation> {\n return this.client.request<Automation>({\n method: \"POST\",\n path: \"/automations\",\n body: params,\n methodOptions: options,\n });\n }\n\n get(id: string, options?: MethodOptions): Promise<Automation> {\n return this.client.request<Automation>({\n method: \"GET\",\n path: `/automations/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n update(id: string, params: UpdateAutomationParams, options?: MethodOptions): Promise<Automation> {\n return this.client.request<Automation>({\n method: \"PATCH\",\n path: `/automations/${encodeURIComponent(id)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n run(id: string, options?: MethodOptions): Promise<AutomationRun> {\n return this.client.request<AutomationRun>({\n method: \"POST\",\n path: `/automations/${encodeURIComponent(id)}/run`,\n methodOptions: options,\n });\n }\n}\n","import { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type {\n BookingPage,\n CreateBookingPageParams,\n ListBookingPagesParams,\n UpdateBookingPageParams,\n} from \"../types/booking-page.js\";\nimport type { MethodOptions, PaginatedResponse } from \"../types/common.js\";\n\nexport class BookingPages extends ApiResource {\n create(params: CreateBookingPageParams, options?: MethodOptions): Promise<BookingPage> {\n return this.client.request<BookingPage>({\n method: \"POST\",\n path: \"/booking-pages\",\n body: params,\n methodOptions: options,\n });\n }\n\n list(\n params?: ListBookingPagesParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<BookingPage>> {\n return this.client.request<PaginatedResponse<BookingPage>>({\n method: \"GET\",\n path: \"/booking-pages\",\n query: { cursor: params?.cursor, limit: params?.limit },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params?: Omit<ListBookingPagesParams, \"cursor\">): Page<BookingPage> {\n return new Page<BookingPage>(this.client, \"/booking-pages\", { limit: params?.limit });\n }\n\n get(id: string, options?: MethodOptions): Promise<BookingPage> {\n return this.client.request<BookingPage>({\n method: \"GET\",\n path: `/booking-pages/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n update(\n id: string,\n params: UpdateBookingPageParams,\n options?: MethodOptions,\n ): Promise<BookingPage> {\n return this.client.request<BookingPage>({\n method: \"PATCH\",\n path: `/booking-pages/${encodeURIComponent(id)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n delete(id: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/booking-pages/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n}\n","import type { ShipmailClient } from \"../client.js\";\nimport { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type {\n CalendarAvailability,\n CalendarAvailabilityParams,\n CalendarEvent,\n CreateCalendarEventParams,\n DeleteCalendarEventParams,\n GetCalendarEventParams,\n ListCalendarEventsParams,\n UpdateCalendarEventParams,\n} from \"../types/calendar.js\";\nimport type { MethodOptions, PaginatedResponse } from \"../types/common.js\";\n\nclass CalendarEvents extends ApiResource {\n create(params: CreateCalendarEventParams, options?: MethodOptions): Promise<CalendarEvent> {\n return this.client.request<CalendarEvent>({\n method: \"POST\",\n path: \"/calendar/events\",\n body: params,\n methodOptions: options,\n });\n }\n\n list(\n params: ListCalendarEventsParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<CalendarEvent>> {\n return this.client.request<PaginatedResponse<CalendarEvent>>({\n method: \"GET\",\n path: \"/calendar/events\",\n query: {\n mailbox: params.mailbox,\n from: params.from,\n to: params.to,\n expand: params.expand,\n calendar_id: params.calendar_id,\n cursor: params.cursor,\n limit: params.limit,\n },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params: Omit<ListCalendarEventsParams, \"cursor\">): Page<CalendarEvent> {\n return new Page<CalendarEvent>(this.client, \"/calendar/events\", {\n mailbox: params.mailbox,\n from: params.from,\n to: params.to,\n expand: params.expand,\n calendar_id: params.calendar_id,\n limit: params.limit,\n });\n }\n\n get(id: string, params: GetCalendarEventParams, options?: MethodOptions): Promise<CalendarEvent> {\n return this.client.request<CalendarEvent>({\n method: \"GET\",\n path: `/calendar/events/${encodeURIComponent(id)}`,\n query: { mailbox: params.mailbox },\n methodOptions: options,\n });\n }\n\n update(\n id: string,\n params: UpdateCalendarEventParams,\n options?: MethodOptions,\n ): Promise<CalendarEvent> {\n return this.client.request<CalendarEvent>({\n method: \"PATCH\",\n path: `/calendar/events/${encodeURIComponent(id)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n delete(id: string, params: DeleteCalendarEventParams, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/calendar/events/${encodeURIComponent(id)}`,\n query: { mailbox: params.mailbox },\n methodOptions: options,\n });\n }\n}\n\nexport class Calendar extends ApiResource {\n readonly events: CalendarEvents;\n\n constructor(client: ShipmailClient) {\n super(client);\n this.events = new CalendarEvents(client);\n }\n\n availability(\n params: CalendarAvailabilityParams,\n options?: MethodOptions,\n ): Promise<CalendarAvailability> {\n return this.client.request<CalendarAvailability>({\n method: \"GET\",\n path: \"/calendar/availability\",\n query: {\n mailbox: params.mailbox,\n from: params.from,\n to: params.to,\n duration: params.duration,\n interval: params.interval,\n timezone: params.timezone,\n days: params.days ? params.days.join(\",\") : undefined,\n window_start: params.window_start,\n window_end: params.window_end,\n buffer: params.buffer,\n minimum_notice: params.minimum_notice,\n },\n methodOptions: options,\n });\n }\n}\n","import { ApiResource } from \"../resource.js\";\nimport type { CapabilitiesResponse } from \"../types/capabilities.js\";\nimport type { MethodOptions } from \"../types/common.js\";\n\nexport class Capabilities extends ApiResource {\n get(options?: MethodOptions): Promise<CapabilitiesResponse> {\n return this.client.request<CapabilitiesResponse>({\n method: \"GET\",\n path: \"/capabilities\",\n methodOptions: options,\n });\n }\n}\n","import { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type { MethodOptions, PaginatedResponse } from \"../types/common.js\";\nimport type {\n CreateDomainParams,\n Domain,\n DomainDnsRecordSet,\n DomainSearchResult,\n DomainVerificationResult,\n ListDomainsParams,\n RegisterDomainParams,\n SearchDomainsParams,\n UpdateDomainParams,\n} from \"../types/domain.js\";\n\nexport class Domains extends ApiResource {\n create(params: CreateDomainParams, options?: MethodOptions): Promise<Domain> {\n return this.client.request<Domain>({\n method: \"POST\",\n path: \"/domains\",\n body: params,\n methodOptions: options,\n });\n }\n\n list(params?: ListDomainsParams, options?: MethodOptions): Promise<PaginatedResponse<Domain>> {\n return this.client.request<PaginatedResponse<Domain>>({\n method: \"GET\",\n path: \"/domains\",\n query: {\n cursor: params?.cursor,\n limit: params?.limit,\n },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params?: Omit<ListDomainsParams, \"cursor\">): Page<Domain> {\n return new Page<Domain>(this.client, \"/domains\", {\n limit: params?.limit,\n });\n }\n\n get(id: string, options?: MethodOptions): Promise<Domain> {\n return this.client.request<Domain>({\n method: \"GET\",\n path: `/domains/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n getDnsRecords(id: string, options?: MethodOptions): Promise<DomainDnsRecordSet> {\n return this.client.request<DomainDnsRecordSet>({\n method: \"GET\",\n path: `/domains/${encodeURIComponent(id)}/dns-records`,\n methodOptions: options,\n });\n }\n\n update(id: string, params: UpdateDomainParams, options?: MethodOptions): Promise<Domain> {\n return this.client.request<Domain>({\n method: \"PATCH\",\n path: `/domains/${encodeURIComponent(id)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n delete(id: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/domains/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n verify(id: string, options?: MethodOptions): Promise<DomainVerificationResult> {\n return this.client.request<DomainVerificationResult>({\n method: \"POST\",\n path: `/domains/${encodeURIComponent(id)}/verification`,\n methodOptions: options,\n });\n }\n\n search(\n params: SearchDomainsParams,\n options?: MethodOptions,\n ): Promise<{ readonly results: readonly DomainSearchResult[] }> {\n return this.client.request<{ readonly results: readonly DomainSearchResult[] }>({\n method: \"POST\",\n path: \"/domains/search\",\n body: params,\n methodOptions: options,\n });\n }\n\n register(params: RegisterDomainParams, options?: MethodOptions): Promise<Domain> {\n return this.client.request<Domain>({\n method: \"POST\",\n path: \"/domains/register\",\n body: params,\n methodOptions: options,\n });\n }\n}\n","import { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type {\n MethodOptions,\n OneTimeSecretMethodOptions,\n PaginatedResponse,\n} from \"../types/common.js\";\nimport type {\n CompleteImportUploadParams,\n CreateImportUploadParams,\n CreateMailboxImportParams,\n ImportUpload,\n MailboxImport,\n MailboxImports,\n RestoreMailboxImportParams,\n} from \"../types/import.js\";\nimport type {\n CreatedMailboxAppPassword,\n CreateInboxReplyDraftParams,\n CreateMailboxAppPasswordParams,\n CreateMailboxFolderParams,\n CreateMailboxForwardingParams,\n CreateMailboxParams,\n DownloadInboxAttachmentParams,\n InboxMessageAction,\n InboxMessages,\n InboxReplyDraft,\n InboxReplyDraftSend,\n InboxThread,\n InboxThreadAttentionResult,\n InboxThreads,\n ListInboxMessagesParams,\n ListInboxThreadsParams,\n ListMailboxesParams,\n Mailbox,\n MailboxAppPasswordList,\n MailboxDeliveryRouting,\n MailboxExport,\n MailboxFolder,\n MailboxFolders,\n MailboxForwarding,\n MailboxForwardingList,\n MailboxIdentities,\n MailboxRules,\n MoveInboxMessageParams,\n ResetMailboxPasswordParams,\n UpdateAutoReplyParams,\n UpdateInboxMessageParams,\n UpdateInboxThreadAttentionParams,\n UpdateMailboxDeliveryRoutingParams,\n UpdateMailboxFolderParams,\n UpdateMailboxParams,\n UpdateMailboxRulesParams,\n UpdateSpamFilterParams,\n} from \"../types/mailbox.js\";\nimport type {\n InjectSandboxInboundParams,\n Message,\n PrepareStagedAttachmentUploadParams,\n ReplyToMessageParams,\n StageAttachmentParams,\n StagedAttachment,\n StagedAttachmentUpload,\n} from \"../types/message.js\";\n\nexport class Mailboxes extends ApiResource {\n prepareStagedAttachmentUpload(\n id: string,\n params: PrepareStagedAttachmentUploadParams,\n options?: OneTimeSecretMethodOptions,\n ): Promise<StagedAttachmentUpload> {\n return this.client.request<StagedAttachmentUpload>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/staged-attachment-upload-tokens`,\n body: params,\n methodOptions: options,\n });\n }\n\n stageAttachment(\n id: string,\n params: StageAttachmentParams,\n options?: MethodOptions,\n ): Promise<StagedAttachment> {\n return this.client.request<StagedAttachment>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/staged-attachments`,\n query: { filename: params.filename },\n rawBody: params.data,\n contentType: params.content_type,\n methodOptions: options,\n });\n }\n\n injectSandboxInbound(\n id: string,\n params: InjectSandboxInboundParams,\n options?: MethodOptions,\n ): Promise<Message> {\n return this.client.request<Message>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/sandbox/inbound`,\n body: params,\n methodOptions: options,\n });\n }\n\n create(params: CreateMailboxParams, options?: MethodOptions): Promise<Mailbox> {\n return this.client.request<Mailbox>({\n method: \"POST\",\n path: \"/mailboxes\",\n body: params,\n methodOptions: options,\n });\n }\n\n list(params?: ListMailboxesParams, options?: MethodOptions): Promise<PaginatedResponse<Mailbox>> {\n return this.client.request<PaginatedResponse<Mailbox>>({\n method: \"GET\",\n path: \"/mailboxes\",\n query: {\n domain_id: params?.domain_id,\n cursor: params?.cursor,\n limit: params?.limit,\n },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params?: Omit<ListMailboxesParams, \"cursor\">): Page<Mailbox> {\n return new Page<Mailbox>(this.client, \"/mailboxes\", {\n domain_id: params?.domain_id,\n limit: params?.limit,\n });\n }\n\n get(id: string, options?: MethodOptions): Promise<Mailbox> {\n return this.client.request<Mailbox>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n update(id: string, params: UpdateMailboxParams, options?: MethodOptions): Promise<Mailbox> {\n return this.client.request<Mailbox>({\n method: \"PATCH\",\n path: `/mailboxes/${encodeURIComponent(id)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n delete(id: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/mailboxes/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n suspend(id: string, options?: MethodOptions): Promise<Mailbox> {\n return this.client.request<Mailbox>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/suspend`,\n methodOptions: options,\n });\n }\n\n resume(id: string, options?: MethodOptions): Promise<Mailbox> {\n return this.client.request<Mailbox>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/resume`,\n methodOptions: options,\n });\n }\n\n createExport(id: string, options?: MethodOptions): Promise<MailboxExport> {\n return this.client.request<MailboxExport>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/exports`,\n methodOptions: options,\n });\n }\n\n getExport(id: string, exportId: string, options?: MethodOptions): Promise<MailboxExport> {\n return this.client.request<MailboxExport>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/exports/${encodeURIComponent(exportId)}`,\n methodOptions: options,\n });\n }\n\n listFolders(id: string, options?: MethodOptions): Promise<MailboxFolders> {\n return this.client.request<MailboxFolders>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/folders`,\n methodOptions: options,\n });\n }\n\n createFolder(\n id: string,\n params: CreateMailboxFolderParams,\n options?: MethodOptions,\n ): Promise<MailboxFolder> {\n return this.client.request<MailboxFolder>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/folders`,\n body: params,\n methodOptions: options,\n });\n }\n\n updateFolder(\n id: string,\n folderId: string,\n params: UpdateMailboxFolderParams,\n options?: MethodOptions,\n ): Promise<MailboxFolder> {\n return this.client.request<MailboxFolder>({\n method: \"PATCH\",\n path: `/mailboxes/${encodeURIComponent(id)}/folders/${encodeURIComponent(folderId)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n deleteFolder(id: string, folderId: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/mailboxes/${encodeURIComponent(id)}/folders/${encodeURIComponent(folderId)}`,\n methodOptions: options,\n });\n }\n\n listIdentities(id: string, options?: MethodOptions): Promise<MailboxIdentities> {\n return this.client.request<MailboxIdentities>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/identities`,\n methodOptions: options,\n });\n }\n\n listInboxMessages(\n id: string,\n params?: ListInboxMessagesParams,\n options?: MethodOptions,\n ): Promise<InboxMessages> {\n return this.client.request<InboxMessages>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/messages`,\n query: {\n folder_id: params?.folder_id,\n folder_role: params?.folder_role,\n search_text: params?.search_text,\n cursor: params?.cursor,\n after: params?.after,\n before: params?.before,\n limit: params?.limit,\n has_keyword: params?.has_keyword,\n not_keyword: params?.not_keyword,\n },\n methodOptions: options,\n });\n }\n\n getInboxMessage(id: string, messageId: string, options?: MethodOptions) {\n return this.client.request<import(\"../types/mailbox.js\").InboxFullMessage>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/messages/${encodeURIComponent(messageId)}`,\n methodOptions: options,\n });\n }\n\n listInboxThreads(\n id: string,\n params?: ListInboxThreadsParams,\n options?: MethodOptions,\n ): Promise<InboxThreads> {\n return this.client.request<InboxThreads>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/threads`,\n query: {\n attention_state: params?.attention_state,\n sort_by: params?.sort_by,\n order: params?.order,\n after: params?.after,\n before: params?.before,\n cursor: params?.cursor,\n limit: params?.limit,\n },\n methodOptions: options,\n });\n }\n\n getInboxThread(id: string, threadId: string, options?: MethodOptions): Promise<InboxThread> {\n return this.client.request<InboxThread>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/threads/${encodeURIComponent(threadId)}`,\n methodOptions: options,\n });\n }\n\n updateInboxThreadAttention(\n id: string,\n threadId: string,\n params: UpdateInboxThreadAttentionParams,\n options?: MethodOptions,\n ): Promise<InboxThreadAttentionResult> {\n return this.client.request<InboxThreadAttentionResult>({\n method: \"PATCH\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/threads/${encodeURIComponent(threadId)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n createInboxReplyDraft(\n id: string,\n threadId: string,\n params: CreateInboxReplyDraftParams,\n options?: MethodOptions,\n ): Promise<InboxReplyDraft> {\n return this.client.request<InboxReplyDraft>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/threads/${encodeURIComponent(threadId)}/drafts`,\n body: params,\n methodOptions: options,\n });\n }\n\n sendInboxReplyDraft(\n id: string,\n threadId: string,\n draftId: string,\n options?: MethodOptions,\n ): Promise<InboxReplyDraftSend> {\n return this.client.request<InboxReplyDraftSend>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/threads/${encodeURIComponent(threadId)}/drafts/${encodeURIComponent(draftId)}/send`,\n methodOptions: options,\n });\n }\n\n replyToInboxMessage(\n id: string,\n messageId: string,\n params: ReplyToMessageParams,\n options?: MethodOptions,\n ): Promise<Message> {\n return this.client.request<Message>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/messages/${encodeURIComponent(messageId)}/reply`,\n body: params,\n methodOptions: options,\n });\n }\n\n replyToInboxThread(\n id: string,\n threadId: string,\n params: ReplyToMessageParams,\n options?: MethodOptions,\n ): Promise<Message> {\n return this.client.request<Message>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/threads/${encodeURIComponent(threadId)}/reply`,\n body: params,\n methodOptions: options,\n });\n }\n\n updateInboxMessage(\n id: string,\n messageId: string,\n params: UpdateInboxMessageParams,\n options?: MethodOptions,\n ): Promise<InboxMessageAction> {\n return this.client.request<InboxMessageAction>({\n method: \"PATCH\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/messages/${encodeURIComponent(messageId)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n moveInboxMessage(\n id: string,\n messageId: string,\n params: MoveInboxMessageParams,\n options?: MethodOptions,\n ): Promise<InboxMessageAction> {\n return this.client.request<InboxMessageAction>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/messages/${encodeURIComponent(messageId)}/move`,\n body: params,\n methodOptions: options,\n });\n }\n\n deleteInboxMessage(id: string, messageId: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/messages/${encodeURIComponent(messageId)}`,\n methodOptions: options,\n });\n }\n\n downloadInboxAttachment(\n id: string,\n params: DownloadInboxAttachmentParams,\n options?: MethodOptions,\n ): Promise<Uint8Array> {\n return this.client.requestBytes({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/inbox/attachments`,\n query: {\n blob_id: params.blob_id,\n name: params.name,\n },\n methodOptions: options,\n });\n }\n\n resetPassword(\n id: string,\n params: ResetMailboxPasswordParams,\n options?: MethodOptions,\n ): Promise<Mailbox> {\n return this.client.request<Mailbox>({\n method: \"PATCH\",\n path: `/mailboxes/${encodeURIComponent(id)}/password`,\n body: params,\n methodOptions: options,\n });\n }\n\n listAppPasswords(id: string, options?: MethodOptions): Promise<MailboxAppPasswordList> {\n return this.client.request<MailboxAppPasswordList>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/app-passwords`,\n methodOptions: options,\n });\n }\n\n createAppPassword(\n id: string,\n params: CreateMailboxAppPasswordParams,\n options?: OneTimeSecretMethodOptions,\n ): Promise<CreatedMailboxAppPassword> {\n return this.client.request<CreatedMailboxAppPassword>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/app-passwords`,\n body: params,\n methodOptions: options,\n });\n }\n\n revokeAppPassword(id: string, appPasswordId: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/mailboxes/${encodeURIComponent(id)}/app-passwords/${encodeURIComponent(appPasswordId)}`,\n methodOptions: options,\n });\n }\n\n getRules(id: string, options?: MethodOptions): Promise<MailboxRules> {\n return this.client.request<MailboxRules>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/rules`,\n methodOptions: options,\n });\n }\n\n updateRules(\n id: string,\n params: UpdateMailboxRulesParams,\n options?: MethodOptions,\n ): Promise<MailboxRules> {\n return this.client.request<MailboxRules>({\n method: \"PUT\",\n path: `/mailboxes/${encodeURIComponent(id)}/rules`,\n body: params,\n methodOptions: options,\n });\n }\n\n listForwarding(id: string, options?: MethodOptions): Promise<MailboxForwardingList> {\n return this.client.request<MailboxForwardingList>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/forwarding`,\n methodOptions: options,\n });\n }\n\n createForwarding(\n id: string,\n params: CreateMailboxForwardingParams,\n options?: MethodOptions,\n ): Promise<MailboxForwarding> {\n return this.client.request<MailboxForwarding>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/forwarding`,\n body: params,\n methodOptions: options,\n });\n }\n\n deleteForwarding(id: string, forwardingId: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/mailboxes/${encodeURIComponent(id)}/forwarding/${encodeURIComponent(forwardingId)}`,\n methodOptions: options,\n });\n }\n\n updateAutoReply(\n id: string,\n params: UpdateAutoReplyParams,\n options?: MethodOptions,\n ): Promise<Mailbox> {\n return this.client.request<Mailbox>({\n method: \"PATCH\",\n path: `/mailboxes/${encodeURIComponent(id)}/auto-reply`,\n body: params,\n methodOptions: options,\n });\n }\n\n getDeliveryRouting(id: string, options?: MethodOptions): Promise<MailboxDeliveryRouting> {\n return this.client.request<MailboxDeliveryRouting>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/delivery-routing`,\n methodOptions: options,\n });\n }\n\n updateDeliveryRouting(\n id: string,\n params: UpdateMailboxDeliveryRoutingParams,\n options?: MethodOptions,\n ): Promise<MailboxDeliveryRouting> {\n return this.client.request<MailboxDeliveryRouting>({\n method: \"PATCH\",\n path: `/mailboxes/${encodeURIComponent(id)}/delivery-routing`,\n body: params,\n methodOptions: options,\n });\n }\n\n updateSpamFilter(\n id: string,\n params: UpdateSpamFilterParams,\n options?: MethodOptions,\n ): Promise<Mailbox> {\n return this.client.request<Mailbox>({\n method: \"PATCH\",\n path: `/mailboxes/${encodeURIComponent(id)}/spam-filter`,\n body: params,\n methodOptions: options,\n });\n }\n\n createImport(\n id: string,\n params: CreateMailboxImportParams,\n options?: MethodOptions,\n ): Promise<MailboxImport> {\n return this.client.request<MailboxImport>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports`,\n body: params,\n methodOptions: options,\n });\n }\n\n listImports(id: string, options?: MethodOptions): Promise<MailboxImports> {\n return this.client.request<MailboxImports>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports`,\n methodOptions: options,\n });\n }\n\n getImport(id: string, importId: string, options?: MethodOptions): Promise<MailboxImport> {\n return this.client.request<MailboxImport>({\n method: \"GET\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports/${encodeURIComponent(importId)}`,\n methodOptions: options,\n });\n }\n\n cancelImport(id: string, importId: string, options?: MethodOptions): Promise<MailboxImport> {\n return this.client.request<MailboxImport>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports/${encodeURIComponent(importId)}/cancel`,\n methodOptions: options,\n });\n }\n\n resumeImport(id: string, importId: string, options?: MethodOptions): Promise<MailboxImport> {\n return this.client.request<MailboxImport>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports/${encodeURIComponent(importId)}/resume`,\n methodOptions: options,\n });\n }\n\n restoreImport(\n id: string,\n importId: string,\n params: RestoreMailboxImportParams,\n options?: MethodOptions,\n ): Promise<MailboxImport> {\n return this.client.request<MailboxImport>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports/${encodeURIComponent(importId)}/restore`,\n body: params,\n methodOptions: options,\n });\n }\n\n undoImport(id: string, importId: string, options?: MethodOptions): Promise<MailboxImport> {\n return this.client.request<MailboxImport>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports/${encodeURIComponent(importId)}/undo`,\n methodOptions: options,\n });\n }\n\n createImportUpload(\n id: string,\n params: CreateImportUploadParams,\n options?: MethodOptions,\n ): Promise<ImportUpload> {\n return this.client.request<ImportUpload>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports/files`,\n body: params,\n methodOptions: options,\n });\n }\n\n completeImportUpload(\n id: string,\n fileId: string,\n params: CompleteImportUploadParams,\n options?: MethodOptions,\n ): Promise<void> {\n return this.client.request<void>({\n method: \"POST\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports/files/${encodeURIComponent(fileId)}/complete`,\n body: params,\n methodOptions: options,\n });\n }\n\n abortImportUpload(id: string, fileId: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/mailboxes/${encodeURIComponent(id)}/imports/files/${encodeURIComponent(fileId)}`,\n methodOptions: options,\n });\n }\n}\n","import { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type { MethodOptions, PaginatedResponse } from \"../types/common.js\";\nimport type { ListMembersParams, Member } from \"../types/member.js\";\n\nexport class Members extends ApiResource {\n list(params?: ListMembersParams, options?: MethodOptions): Promise<PaginatedResponse<Member>> {\n return this.client.request<PaginatedResponse<Member>>({\n method: \"GET\",\n path: \"/members\",\n query: {\n cursor: params?.cursor,\n limit: params?.limit,\n },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params?: Omit<ListMembersParams, \"cursor\">): Page<Member> {\n return new Page<Member>(this.client, \"/members\", { limit: params?.limit });\n }\n\n get(id: string, options?: MethodOptions): Promise<Member> {\n return this.client.request<Member>({\n method: \"GET\",\n path: `/members/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n}\n","import { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type { MethodOptions, PaginatedResponse } from \"../types/common.js\";\nimport type {\n ListMessageAnalyticsParams,\n ListMessagesParams,\n Message,\n MessageAnalyticsPage,\n ReplyToMessageParams,\n SendMessageParams,\n} from \"../types/message.js\";\n\nexport class Messages extends ApiResource {\n send(params: SendMessageParams, options?: MethodOptions): Promise<Message> {\n return this.client.request<Message>({\n method: \"POST\",\n path: \"/messages\",\n body: params,\n methodOptions: options,\n });\n }\n\n list(params: ListMessagesParams, options?: MethodOptions): Promise<PaginatedResponse<Message>> {\n return this.client.request<PaginatedResponse<Message>>({\n method: \"GET\",\n path: \"/messages\",\n query: {\n mailbox_id: params.mailbox_id,\n client_reference: params.client_reference,\n cursor: params.cursor,\n limit: params.limit,\n },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params: Omit<ListMessagesParams, \"cursor\">): Page<Message> {\n return new Page<Message>(this.client, \"/messages\", {\n mailbox_id: params.mailbox_id,\n client_reference: params.client_reference,\n limit: params.limit,\n });\n }\n\n listAnalytics(\n params: ListMessageAnalyticsParams = {},\n options?: MethodOptions,\n ): Promise<MessageAnalyticsPage> {\n return this.client.request<MessageAnalyticsPage>({\n method: \"GET\",\n path: \"/messages/analytics\",\n query: {\n updated_after: params.updated_after,\n updated_before: params.updated_before,\n cursor: params.cursor,\n limit: params.limit,\n },\n methodOptions: options,\n });\n }\n\n get(id: string, options?: MethodOptions): Promise<Message> {\n return this.client.request<Message>({\n method: \"GET\",\n path: `/messages/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n reply(id: string, params: ReplyToMessageParams, options?: MethodOptions): Promise<Message> {\n return this.client.request<Message>({\n method: \"POST\",\n path: `/messages/${encodeURIComponent(id)}/reply`,\n body: params,\n methodOptions: options,\n });\n }\n}\n","import type { ShipmailClient } from \"../client.js\";\nimport { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type { MethodOptions, PaginatedResponse } from \"../types/common.js\";\nimport type {\n CreateNewsletterFromChangelogParams,\n CreateNewsletterParams,\n ListNewsletterAssetsParams,\n ListNewsletterDomainsParams,\n ListNewsletterSenderIdentitiesParams,\n ListNewslettersParams,\n Newsletter,\n NewsletterAsset,\n NewsletterAssetListResponse,\n NewsletterAssetUpload,\n NewsletterDomain,\n NewsletterPreflight,\n NewsletterPreview,\n NewsletterSenderIdentity,\n NewsletterTestSend,\n PrepareNewsletterAssetUploadParams,\n RegisterNewsletterAssetFromUrlParams,\n ScheduleNewsletterParams,\n SendNewsletterTestParams,\n UpdateNewsletterParams,\n UploadNewsletterAssetParams,\n} from \"../types/newsletter.js\";\n\nfunction path(id: string): string {\n return `/newsletters/${encodeURIComponent(id)}`;\n}\n\nclass NewsletterDomains extends ApiResource {\n list(\n params?: ListNewsletterDomainsParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<NewsletterDomain>> {\n return this.client.request<PaginatedResponse<NewsletterDomain>>({\n method: \"GET\",\n path: \"/newsletter-domains\",\n query: { cursor: params?.cursor, limit: params?.limit },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params?: Omit<ListNewsletterDomainsParams, \"cursor\">): Page<NewsletterDomain> {\n return new Page<NewsletterDomain>(this.client, \"/newsletter-domains\", { limit: params?.limit });\n }\n}\n\nclass NewsletterSenderIdentities extends ApiResource {\n list(\n params?: ListNewsletterSenderIdentitiesParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<NewsletterSenderIdentity>> {\n return this.client.request<PaginatedResponse<NewsletterSenderIdentity>>({\n method: \"GET\",\n path: \"/newsletter-sender-identities\",\n query: { cursor: params?.cursor, limit: params?.limit },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(\n params?: Omit<ListNewsletterSenderIdentitiesParams, \"cursor\">,\n ): Page<NewsletterSenderIdentity> {\n return new Page<NewsletterSenderIdentity>(this.client, \"/newsletter-sender-identities\", {\n limit: params?.limit,\n });\n }\n}\n\nclass NewsletterAssets extends ApiResource {\n list(\n params?: ListNewsletterAssetsParams,\n options?: MethodOptions,\n ): Promise<NewsletterAssetListResponse> {\n return this.client.request<NewsletterAssetListResponse>({\n method: \"GET\",\n path: \"/newsletter-assets\",\n query: {\n cursor: params?.cursor,\n limit: params?.limit,\n kind: params?.kind,\n q: params?.q,\n },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params?: Omit<ListNewsletterAssetsParams, \"cursor\">): Page<NewsletterAsset> {\n return new Page<NewsletterAsset>(this.client, \"/newsletter-assets\", {\n limit: params?.limit,\n kind: params?.kind,\n q: params?.q,\n });\n }\n\n upload(params: UploadNewsletterAssetParams, options?: MethodOptions): Promise<NewsletterAsset> {\n return this.client.request<NewsletterAsset>({\n method: \"POST\",\n path: \"/newsletter-assets\",\n query: { filename: params.filename },\n rawBody: params.data,\n contentType: params.content_type,\n methodOptions: options,\n });\n }\n\n prepareUpload(\n params: PrepareNewsletterAssetUploadParams,\n options?: MethodOptions,\n ): Promise<NewsletterAssetUpload> {\n return this.client.request<NewsletterAssetUpload>({\n method: \"POST\",\n path: \"/newsletter-assets/upload-tokens\",\n body: params,\n methodOptions: options,\n });\n }\n\n registerFromUrl(\n params: RegisterNewsletterAssetFromUrlParams,\n options?: MethodOptions,\n ): Promise<NewsletterAsset> {\n return this.client.request<NewsletterAsset>({\n method: \"POST\",\n path: \"/newsletter-assets\",\n body: params,\n methodOptions: options,\n });\n }\n}\n\nexport class Newsletters extends ApiResource {\n readonly domains: NewsletterDomains;\n readonly senderIdentities: NewsletterSenderIdentities;\n readonly assets: NewsletterAssets;\n\n constructor(client: ShipmailClient) {\n super(client);\n this.domains = new NewsletterDomains(client);\n this.senderIdentities = new NewsletterSenderIdentities(client);\n this.assets = new NewsletterAssets(client);\n }\n\n create(params: CreateNewsletterParams, options?: MethodOptions): Promise<Newsletter> {\n return this.client.request<Newsletter>({\n method: \"POST\",\n path: \"/newsletters\",\n body: params,\n methodOptions: options,\n });\n }\n\n createFromChangelog(\n params: CreateNewsletterFromChangelogParams,\n options?: MethodOptions,\n ): Promise<Newsletter> {\n return this.client.request<Newsletter>({\n method: \"POST\",\n path: \"/newsletters/from-changelog\",\n body: params,\n methodOptions: options,\n });\n }\n\n list(\n params?: ListNewslettersParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<Newsletter>> {\n return this.client.request<PaginatedResponse<Newsletter>>({\n method: \"GET\",\n path: \"/newsletters\",\n query: { cursor: params?.cursor, limit: params?.limit },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params?: Omit<ListNewslettersParams, \"cursor\">): Page<Newsletter> {\n return new Page<Newsletter>(this.client, \"/newsletters\", { limit: params?.limit });\n }\n\n get(id: string, options?: MethodOptions): Promise<Newsletter> {\n return this.client.request<Newsletter>({\n method: \"GET\",\n path: path(id),\n methodOptions: options,\n });\n }\n\n update(id: string, params: UpdateNewsletterParams, options?: MethodOptions): Promise<Newsletter> {\n return this.client.request<Newsletter>({\n method: \"PATCH\",\n path: path(id),\n body: params,\n methodOptions: options,\n });\n }\n\n preflight(id: string, options?: MethodOptions): Promise<NewsletterPreflight> {\n return this.client.request<NewsletterPreflight>({\n method: \"POST\",\n path: `${path(id)}/preflight`,\n methodOptions: options,\n });\n }\n\n preview(id: string, options?: MethodOptions): Promise<NewsletterPreview> {\n return this.client.request<NewsletterPreview>({\n method: \"POST\",\n path: `${path(id)}/preview`,\n methodOptions: options,\n });\n }\n\n sendTest(\n id: string,\n params: SendNewsletterTestParams,\n options?: MethodOptions,\n ): Promise<NewsletterTestSend> {\n return this.client.request<NewsletterTestSend>({\n method: \"POST\",\n path: `${path(id)}/test-send`,\n body: params,\n methodOptions: options,\n });\n }\n\n schedule(\n id: string,\n params: ScheduleNewsletterParams,\n options?: MethodOptions,\n ): Promise<Newsletter> {\n return this.client.request<Newsletter>({\n method: \"POST\",\n path: `${path(id)}/schedule`,\n body: params,\n methodOptions: options,\n });\n }\n\n cancel(id: string, options?: MethodOptions): Promise<Newsletter> {\n return this.client.request<Newsletter>({\n method: \"POST\",\n path: `${path(id)}/cancel`,\n methodOptions: options,\n });\n }\n\n resume(id: string, options?: MethodOptions): Promise<Newsletter> {\n return this.client.request<Newsletter>({\n method: \"POST\",\n path: `${path(id)}/resume`,\n methodOptions: options,\n });\n }\n}\n","import { ApiResource } from \"../resource.js\";\nimport type { MethodOptions, OneTimeSecretMethodOptions } from \"../types/common.js\";\nimport type {\n ConsumePartnerMailboxCredentialGrantParams,\n CreatedPartnerOrganization,\n CreatePartnerOrganizationParams,\n PartnerMailboxCredential,\n PartnerMailboxCredentialGrantList,\n PartnerOrganization,\n PartnerOrganizationList,\n PartnerOwnershipInvitation,\n PartnerUsage,\n UpdatePartnerOrganizationParams,\n} from \"../types/partner.js\";\n\nexport class Partner extends ApiResource {\n listOrganizations(options?: MethodOptions): Promise<PartnerOrganizationList> {\n return this.client.request({\n method: \"GET\",\n path: \"/partner/organizations\",\n methodOptions: options,\n });\n }\n\n createOrganization(\n params: CreatePartnerOrganizationParams,\n options?: MethodOptions,\n ): Promise<CreatedPartnerOrganization> {\n return this.client.request({\n method: \"POST\",\n path: \"/partner/organizations\",\n body: params,\n methodOptions: options,\n });\n }\n\n getOrganization(id: string, options?: MethodOptions): Promise<PartnerOrganization> {\n return this.client.request({\n method: \"GET\",\n path: `/partner/organizations/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n updateOrganization(\n id: string,\n params: UpdatePartnerOrganizationParams,\n options?: MethodOptions,\n ): Promise<PartnerOrganization> {\n return this.client.request({\n method: \"PATCH\",\n path: `/partner/organizations/${encodeURIComponent(id)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n resendOwnershipInvitation(\n id: string,\n params: { readonly owner_email?: string | undefined } = {},\n options?: MethodOptions,\n ): Promise<PartnerOwnershipInvitation> {\n return this.client.request({\n method: \"POST\",\n path: `/partner/organizations/${encodeURIComponent(id)}/ownership-invitations`,\n body: params,\n methodOptions: options,\n });\n }\n\n suspendOrganization(id: string, options?: MethodOptions): Promise<PartnerOrganization> {\n return this.client.request({\n method: \"POST\",\n path: `/partner/organizations/${encodeURIComponent(id)}/suspend`,\n methodOptions: options,\n });\n }\n\n resumeOrganization(id: string, options?: MethodOptions): Promise<PartnerOrganization> {\n return this.client.request({\n method: \"POST\",\n path: `/partner/organizations/${encodeURIComponent(id)}/resume`,\n methodOptions: options,\n });\n }\n\n offboardOrganization(id: string, options?: MethodOptions): Promise<PartnerOrganization> {\n return this.client.request({\n method: \"DELETE\",\n path: `/partner/organizations/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n listMailboxCredentialGrants(options?: MethodOptions): Promise<PartnerMailboxCredentialGrantList> {\n return this.client.request({\n method: \"GET\",\n path: \"/partner/mailbox-credential-grants\",\n methodOptions: options,\n });\n }\n\n consumeMailboxCredentialGrant(\n grantId: string,\n params: ConsumePartnerMailboxCredentialGrantParams = {},\n options?: OneTimeSecretMethodOptions,\n ): Promise<PartnerMailboxCredential> {\n return this.client.request({\n method: \"POST\",\n path: `/partner/mailbox-credential-grants/${encodeURIComponent(grantId)}/consume`,\n body: params,\n methodOptions: options,\n });\n }\n\n usage(options?: MethodOptions): Promise<PartnerUsage> {\n return this.client.request({ method: \"GET\", path: \"/partner/usage\", methodOptions: options });\n }\n}\n","import { ApiResource } from \"../resource.js\";\nimport type { MethodOptions } from \"../types/common.js\";\nimport type {\n CreateReplyScanParams,\n ListReplyScanResultsParams,\n ReplyScan,\n ReplyScanResults,\n} from \"../types/reply-scan.js\";\n\nexport class ReplyScans extends ApiResource {\n create(params: CreateReplyScanParams, options?: MethodOptions): Promise<ReplyScan> {\n return this.client.request<ReplyScan>({\n method: \"POST\",\n path: \"/reply-scans\",\n body: params,\n methodOptions: options,\n });\n }\n\n get(id: string, options?: MethodOptions): Promise<ReplyScan> {\n return this.client.request<ReplyScan>({\n method: \"GET\",\n path: `/reply-scans/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n listResults(\n id: string,\n params?: ListReplyScanResultsParams,\n options?: MethodOptions,\n ): Promise<ReplyScanResults> {\n return this.client.request<ReplyScanResults>({\n method: \"GET\",\n path: `/reply-scans/${encodeURIComponent(id)}/results`,\n query: { cursor: params?.cursor, limit: params?.limit },\n methodOptions: options,\n });\n }\n}\n","import { ApiResource } from \"../resource.js\";\nimport type { MethodOptions } from \"../types/common.js\";\nimport type {\n ListScheduledMessagesParams,\n ScheduledMessage,\n ScheduledMessageList,\n UpdateScheduledMessageParams,\n} from \"../types/message.js\";\n\nexport class ScheduledMessages extends ApiResource {\n list(\n params?: ListScheduledMessagesParams,\n options?: MethodOptions,\n ): Promise<ScheduledMessageList> {\n return this.client.request<ScheduledMessageList>({\n method: \"GET\",\n path: \"/scheduled-messages\",\n query: {\n include_held: params?.include_held,\n search: params?.search,\n limit: params?.limit,\n },\n methodOptions: options,\n });\n }\n\n get(id: string, options?: MethodOptions): Promise<ScheduledMessage> {\n return this.client.request<ScheduledMessage>({\n method: \"GET\",\n path: `/scheduled-messages/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n update(\n id: string,\n params: UpdateScheduledMessageParams,\n options?: MethodOptions,\n ): Promise<ScheduledMessage> {\n return this.client.request<ScheduledMessage>({\n method: \"PATCH\",\n path: `/scheduled-messages/${encodeURIComponent(id)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n cancel(id: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/scheduled-messages/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n}\n","import { ApiResource } from \"../resource.js\";\nimport type { MethodOptions, StatusResponse } from \"../types/common.js\";\n\nexport class Status extends ApiResource {\n get(options?: MethodOptions): Promise<StatusResponse> {\n return this.client.request<StatusResponse>({\n method: \"GET\",\n path: \"/status\",\n methodOptions: options,\n });\n }\n}\n","import { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type { MethodOptions, PaginatedResponse } from \"../types/common.js\";\nimport type { ListSuppressionsParams, Suppression } from \"../types/suppression.js\";\n\nexport class Suppressions extends ApiResource {\n list(\n params?: ListSuppressionsParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<Suppression>> {\n return this.client.request<PaginatedResponse<Suppression>>({\n method: \"GET\",\n path: \"/suppressions\",\n query: {\n cursor: params?.cursor,\n limit: params?.limit,\n },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params?: Omit<ListSuppressionsParams, \"cursor\">): Page<Suppression> {\n return new Page<Suppression>(this.client, \"/suppressions\", {\n limit: params?.limit,\n });\n }\n\n remove(email: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/suppressions/${encodeURIComponent(email)}`,\n methodOptions: options,\n });\n }\n}\n","import { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type { MethodOptions, PaginatedResponse } from \"../types/common.js\";\nimport type { Message } from \"../types/message.js\";\nimport type {\n GetThreadParams,\n ListThreadsParams,\n ReplyToThreadParams,\n Thread,\n} from \"../types/thread.js\";\n\nexport class Threads extends ApiResource {\n list(params: ListThreadsParams, options?: MethodOptions): Promise<PaginatedResponse<Thread>> {\n return this.client.request<PaginatedResponse<Thread>>({\n method: \"GET\",\n path: \"/threads\",\n query: {\n mailbox_id: params.mailbox_id,\n cursor: params.cursor,\n limit: params.limit,\n },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params: Omit<ListThreadsParams, \"cursor\">): Page<Thread> {\n return new Page<Thread>(this.client, \"/threads\", {\n mailbox_id: params.mailbox_id,\n limit: params.limit,\n });\n }\n\n get(\n id: string,\n params: GetThreadParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<Message>> {\n return this.client.request<PaginatedResponse<Message>>({\n method: \"GET\",\n path: `/threads/${encodeURIComponent(id)}`,\n query: {\n mailbox_id: params.mailbox_id,\n cursor: params.cursor,\n limit: params.limit,\n },\n methodOptions: options,\n });\n }\n\n reply(id: string, params: ReplyToThreadParams, options?: MethodOptions): Promise<Message> {\n return this.client.request<Message>({\n method: \"POST\",\n path: `/threads/${encodeURIComponent(id)}/reply`,\n body: params,\n methodOptions: options,\n });\n }\n}\n","import { Page } from \"../pagination.js\";\nimport { ApiResource } from \"../resource.js\";\nimport type { MethodOptions, PaginatedResponse } from \"../types/common.js\";\nimport type {\n CreateWebhookParams,\n ListDeliveriesParams,\n ListWebhooksParams,\n RotateSecretResponse,\n TestWebhookResponse,\n UpdateWebhookParams,\n Webhook,\n WebhookDelivery,\n WebhookDeliveryDetail,\n WebhookWithSecret,\n} from \"../types/webhook.js\";\n\nexport class Webhooks extends ApiResource {\n create(params: CreateWebhookParams, options?: MethodOptions): Promise<WebhookWithSecret> {\n return this.client.request<WebhookWithSecret>({\n method: \"POST\",\n path: \"/webhooks\",\n body: params,\n methodOptions: options,\n });\n }\n\n list(params?: ListWebhooksParams, options?: MethodOptions): Promise<PaginatedResponse<Webhook>> {\n return this.client.request<PaginatedResponse<Webhook>>({\n method: \"GET\",\n path: \"/webhooks\",\n query: {\n cursor: params?.cursor,\n limit: params?.limit,\n },\n methodOptions: options,\n });\n }\n\n listAutoPaginating(params?: Omit<ListWebhooksParams, \"cursor\">): Page<Webhook> {\n return new Page<Webhook>(this.client, \"/webhooks\", {\n limit: params?.limit,\n });\n }\n\n get(id: string, options?: MethodOptions): Promise<Webhook> {\n return this.client.request<Webhook>({\n method: \"GET\",\n path: `/webhooks/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n update(id: string, params: UpdateWebhookParams, options?: MethodOptions): Promise<Webhook> {\n return this.client.request<Webhook>({\n method: \"PATCH\",\n path: `/webhooks/${encodeURIComponent(id)}`,\n body: params,\n methodOptions: options,\n });\n }\n\n delete(id: string, options?: MethodOptions): Promise<void> {\n return this.client.request<void>({\n method: \"DELETE\",\n path: `/webhooks/${encodeURIComponent(id)}`,\n methodOptions: options,\n });\n }\n\n rotateSecret(id: string, options?: MethodOptions): Promise<RotateSecretResponse> {\n return this.client.request<RotateSecretResponse>({\n method: \"POST\",\n path: `/webhooks/${encodeURIComponent(id)}/rotate-secret`,\n methodOptions: options,\n });\n }\n\n test(id: string, options?: MethodOptions): Promise<TestWebhookResponse> {\n return this.client.request<TestWebhookResponse>({\n method: \"POST\",\n path: `/webhooks/${encodeURIComponent(id)}/test`,\n methodOptions: options,\n });\n }\n\n listDeliveries(\n id: string,\n params?: ListDeliveriesParams,\n options?: MethodOptions,\n ): Promise<PaginatedResponse<WebhookDelivery>> {\n return this.client.request<PaginatedResponse<WebhookDelivery>>({\n method: \"GET\",\n path: `/webhooks/${encodeURIComponent(id)}/deliveries`,\n query: {\n status: params?.status,\n event_type: params?.event_type,\n cursor: params?.cursor,\n limit: params?.limit,\n },\n methodOptions: options,\n });\n }\n\n listDeliveriesAutoPaginating(\n id: string,\n params?: Omit<ListDeliveriesParams, \"cursor\">,\n ): Page<WebhookDelivery> {\n return new Page<WebhookDelivery>(\n this.client,\n `/webhooks/${encodeURIComponent(id)}/deliveries`,\n {\n status: params?.status,\n event_type: params?.event_type,\n limit: params?.limit,\n },\n );\n }\n\n getDelivery(\n id: string,\n deliveryId: string,\n options?: MethodOptions,\n ): Promise<WebhookDeliveryDetail> {\n return this.client.request<WebhookDeliveryDetail>({\n method: \"GET\",\n path: `/webhooks/${encodeURIComponent(id)}/deliveries/${encodeURIComponent(deliveryId)}`,\n methodOptions: options,\n });\n }\n\n replayDelivery(\n id: string,\n deliveryId: string,\n options?: MethodOptions,\n ): Promise<WebhookDeliveryDetail> {\n return this.client.request<WebhookDeliveryDetail>({\n method: \"POST\",\n path: `/webhooks/${encodeURIComponent(id)}/deliveries/${encodeURIComponent(deliveryId)}/replay`,\n methodOptions: options,\n });\n }\n}\n","export const VERSION = \"0.4.23\"; // x-release-please-version\n","import { ConnectionError, mapErrorFromResponse, RateLimitError, ShipmailError } from \"./errors.js\";\nimport { Audiences } from \"./resources/audiences.js\";\nimport { Automations } from \"./resources/automations.js\";\nimport { BookingPages } from \"./resources/booking-pages.js\";\nimport { Calendar } from \"./resources/calendar.js\";\nimport { Capabilities } from \"./resources/capabilities.js\";\nimport { Domains } from \"./resources/domains.js\";\nimport { Mailboxes } from \"./resources/mailboxes.js\";\nimport { Members } from \"./resources/members.js\";\nimport { Messages } from \"./resources/messages.js\";\nimport { Newsletters } from \"./resources/newsletters.js\";\nimport { Partner } from \"./resources/partner.js\";\nimport { ReplyScans } from \"./resources/reply-scans.js\";\nimport { ScheduledMessages } from \"./resources/scheduled-messages.js\";\nimport { Status } from \"./resources/status.js\";\nimport { Suppressions } from \"./resources/suppressions.js\";\nimport { Threads } from \"./resources/threads.js\";\nimport { Webhooks } from \"./resources/webhooks.js\";\nimport type { ApiErrorBody, MethodOptions, ShipmailConfig } from \"./types/common.js\";\nimport { VERSION } from \"./version.js\";\n\nconst DEFAULT_BASE_URL = \"https://shipmail.to/api/v1\";\nconst DEFAULT_MAX_RETRIES = 2;\nconst DEFAULT_TIMEOUT = 30_000;\n\nfunction isRetryableStatus(status: number): boolean {\n return status === 429 || status >= 500;\n}\n\nfunction calculateBackoff(attempt: number, retryAfterMs?: number): number {\n if (retryAfterMs !== undefined && retryAfterMs > 0) {\n return retryAfterMs;\n }\n const base = Math.min(2 ** attempt * 500, 8000);\n const jitter = Math.random() * base * 0.5;\n return base + jitter;\n}\n\nfunction isApiErrorBody(value: unknown): value is ApiErrorBody {\n if (typeof value !== \"object\" || value === null) return false;\n const obj = value as Record<string, unknown>;\n if (typeof obj[\"error\"] !== \"object\" || obj[\"error\"] === null) return false;\n const error = obj[\"error\"] as Record<string, unknown>;\n return typeof error[\"type\"] === \"string\" && typeof error[\"message\"] === \"string\";\n}\n\nfunction rawBodyToBlobPart(rawBody: ArrayBuffer | Uint8Array): BlobPart {\n if (rawBody instanceof ArrayBuffer) return rawBody;\n const buffer = new ArrayBuffer(rawBody.byteLength);\n new Uint8Array(buffer).set(rawBody);\n return buffer;\n}\n\nexport type RequestOptions = {\n readonly method: string;\n readonly path: string;\n readonly body?: unknown | undefined;\n readonly query?: Record<string, string | number | boolean | undefined> | undefined;\n readonly rawBody?: ArrayBuffer | Uint8Array | undefined;\n readonly contentType?: string | undefined;\n readonly methodOptions?: MethodOptions | undefined;\n};\n\n/**\n * Client for the Shipmail API. Handles authentication, retries, and resource access.\n */\nexport class ShipmailClient {\n private readonly apiKey: string;\n private readonly baseUrl: string;\n private readonly maxRetries: number;\n private readonly timeout: number;\n private readonly fetchFn: typeof fetch;\n private readonly defaultHeaders: Record<string, string>;\n private readonly organizationId: string | undefined;\n\n readonly audiences: Audiences;\n readonly automations: Automations;\n readonly bookingPages: BookingPages;\n readonly capabilities: Capabilities;\n readonly calendar: Calendar;\n readonly domains: Domains;\n readonly mailboxes: Mailboxes;\n readonly members: Members;\n readonly messages: Messages;\n readonly newsletters: Newsletters;\n readonly partner: Partner;\n readonly replyScans: ReplyScans;\n readonly scheduledMessages: ScheduledMessages;\n readonly suppressions: Suppressions;\n readonly threads: Threads;\n readonly webhooks: Webhooks;\n readonly status: Status;\n\n /**\n * Create a new Shipmail client.\n * @param config - API key string or full configuration object.\n */\n constructor(config: string | ShipmailConfig) {\n if (typeof config === \"string\") {\n this.apiKey = config;\n this.baseUrl = DEFAULT_BASE_URL;\n this.maxRetries = DEFAULT_MAX_RETRIES;\n this.timeout = DEFAULT_TIMEOUT;\n this.fetchFn = globalThis.fetch;\n this.defaultHeaders = {};\n this.organizationId = undefined;\n } else {\n this.apiKey = config.apiKey;\n this.baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;\n this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES;\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT;\n this.fetchFn = config.fetch ?? globalThis.fetch;\n this.defaultHeaders = config.defaultHeaders ? { ...config.defaultHeaders } : {};\n this.organizationId = config.organizationId;\n }\n\n this.audiences = new Audiences(this);\n this.automations = new Automations(this);\n this.bookingPages = new BookingPages(this);\n this.capabilities = new Capabilities(this);\n this.calendar = new Calendar(this);\n this.domains = new Domains(this);\n this.mailboxes = new Mailboxes(this);\n this.members = new Members(this);\n this.messages = new Messages(this);\n this.newsletters = new Newsletters(this);\n this.partner = new Partner(this);\n this.replyScans = new ReplyScans(this);\n this.scheduledMessages = new ScheduledMessages(this);\n this.suppressions = new Suppressions(this);\n this.threads = new Threads(this);\n this.webhooks = new Webhooks(this);\n this.status = new Status(this);\n }\n\n async request<T>(options: RequestOptions): Promise<T> {\n return this.requestWithParser(options, \"application/json\", async (response) => {\n if (response.status === 204) {\n return undefined as T;\n }\n return (await response.json()) as T;\n });\n }\n\n async requestBytes(options: RequestOptions): Promise<Uint8Array> {\n return this.requestWithParser(options, \"application/octet-stream\", async (response) => {\n return new Uint8Array(await response.arrayBuffer());\n });\n }\n\n private async requestWithParser<T>(\n options: RequestOptions,\n accept: string,\n parseSuccess: (response: Response) => Promise<T>,\n ): Promise<T> {\n const url = this.buildUrl(options.path, options.query);\n let lastError: ShipmailError | undefined;\n const methodOpts = options.methodOptions;\n\n for (let attempt = 0; attempt <= this.maxRetries; attempt++) {\n if (attempt > 0) {\n const retryAfterMs =\n lastError instanceof RateLimitError && lastError.retryAfter !== undefined\n ? lastError.retryAfter * 1000\n : undefined;\n const delay = calculateBackoff(attempt - 1, retryAfterMs);\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n\n let response: Response;\n try {\n const headers: Record<string, string> = {\n ...this.defaultHeaders,\n Authorization: `Bearer ${this.apiKey}`,\n \"User-Agent\": `shipmail-node/${VERSION}`,\n Accept: accept,\n ...methodOpts?.headers,\n };\n\n if (methodOpts?.idempotencyKey) {\n headers[\"Idempotency-Key\"] = methodOpts.idempotencyKey;\n }\n\n const targetOrganizationId = methodOpts?.organizationId ?? this.organizationId;\n if (targetOrganizationId) {\n headers[\"X-Shipmail-Organization-Id\"] = targetOrganizationId;\n }\n\n let body: BodyInit | null = null;\n if (options.rawBody !== undefined) {\n headers[\"Content-Type\"] = options.contentType ?? \"application/octet-stream\";\n body = new Blob([rawBodyToBlobPart(options.rawBody)]);\n } else if (options.body !== undefined) {\n headers[\"Content-Type\"] = \"application/json\";\n body = JSON.stringify(options.body);\n }\n\n const effectiveTimeout = methodOpts?.timeout ?? this.timeout;\n\n response = await this.fetchFn(url, {\n method: options.method,\n headers,\n body,\n signal: methodOpts?.signal ?? AbortSignal.timeout(effectiveTimeout),\n });\n } catch (err) {\n lastError = new ConnectionError(err instanceof Error ? err.message : \"Request failed\");\n if (attempt < this.maxRetries) continue;\n throw lastError;\n }\n\n if (response.ok) {\n return parseSuccess(response);\n }\n\n let errorBody: unknown;\n try {\n errorBody = await response.json();\n } catch {\n errorBody = null;\n }\n\n if (isApiErrorBody(errorBody)) {\n lastError = mapErrorFromResponse(response.status, errorBody);\n } else {\n lastError = new ShipmailError(`Request failed with status ${response.status}`, {\n status: response.status,\n retryable: isRetryableStatus(response.status),\n });\n }\n\n if (!lastError.retryable || attempt >= this.maxRetries) {\n throw lastError;\n }\n }\n\n throw lastError ?? new ShipmailError(\"Request failed after retries\");\n }\n\n private buildUrl(\n path: string,\n query?: Record<string, string | number | boolean | undefined>,\n ): string {\n const url = new URL(`${this.baseUrl}${path}`);\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n return url.toString();\n }\n}\n","import type { PaginationParams } from \"./common.js\";\n\nexport const CONFERENCING_PROVIDER_IDS = [\"zoom\", \"google_meet\"] as const;\nexport type ConferencingProviderId = (typeof CONFERENCING_PROVIDER_IDS)[number];\n\nexport type BookingPage = {\n readonly object: \"booking_page\";\n readonly id: string;\n readonly mailbox: string;\n readonly slug: string;\n readonly url: string | null;\n readonly name: string;\n readonly description: string | null;\n readonly duration_minutes: number;\n readonly availability_days: readonly number[];\n readonly window_start_minutes: number;\n readonly window_end_minutes: number;\n readonly timezone: string;\n readonly buffer_minutes: number;\n readonly minimum_notice_minutes: number;\n readonly max_advance_days: number;\n readonly conferencing_provider: ConferencingProviderId | null;\n readonly active: boolean;\n readonly created_at: string;\n readonly updated_at: string;\n};\n\nexport type ListBookingPagesParams = PaginationParams;\n\nexport type CreateBookingPageParams = {\n readonly name: string;\n readonly mailbox: string;\n readonly slug: string;\n readonly duration_minutes: number;\n readonly availability_days: readonly number[];\n readonly window_start_minutes: number;\n readonly window_end_minutes: number;\n readonly timezone: string;\n readonly description?: string | null | undefined;\n readonly buffer_minutes?: number | undefined;\n readonly minimum_notice_minutes?: number | undefined;\n readonly max_advance_days?: number | undefined;\n readonly conferencing_provider?: ConferencingProviderId | null | undefined;\n readonly active?: boolean | undefined;\n};\n\nexport type UpdateBookingPageParams = {\n readonly name?: string | undefined;\n readonly mailbox?: string | undefined;\n readonly slug?: string | undefined;\n readonly duration_minutes?: number | undefined;\n readonly availability_days?: readonly number[] | undefined;\n readonly window_start_minutes?: number | undefined;\n readonly window_end_minutes?: number | undefined;\n readonly timezone?: string | undefined;\n readonly description?: string | null | undefined;\n readonly buffer_minutes?: number | undefined;\n readonly minimum_notice_minutes?: number | undefined;\n readonly max_advance_days?: number | undefined;\n readonly conferencing_provider?: ConferencingProviderId | null | undefined;\n readonly active?: boolean | undefined;\n};\n","export type ShipmailConfig = {\n readonly apiKey: string;\n readonly baseUrl?: string | undefined;\n readonly maxRetries?: number | undefined;\n readonly timeout?: number | undefined;\n readonly fetch?: typeof fetch | undefined;\n readonly defaultHeaders?: Record<string, string> | undefined;\n readonly organizationId?: string | undefined;\n};\n\nexport type PaginationParams = {\n readonly cursor?: string | undefined;\n readonly limit?: number | undefined;\n};\n\nexport type PaginatedResponse<T> = {\n readonly data: readonly T[];\n readonly pagination: {\n readonly next_cursor: string | null;\n readonly has_more: boolean;\n readonly limit: number;\n };\n};\n\nexport type DataMode = \"live\" | \"test\";\nexport type SandboxOutcome = \"delivered\" | \"bounced\" | \"complained\";\n\nexport type ErrorType =\n | \"validation_error\"\n | \"authentication_error\"\n | \"authorization_error\"\n | \"quota_exceeded\"\n | \"not_found\"\n | \"rate_limit_error\"\n | \"conflict\"\n | \"internal_error\";\n\nexport type ApiErrorBody = {\n readonly error: {\n readonly type: ErrorType;\n readonly message: string;\n readonly request_id?: string | undefined;\n readonly details?:\n | readonly {\n readonly field: string;\n readonly message: string;\n readonly code?: string | undefined;\n }[]\n | undefined;\n readonly retry_after?: number | undefined;\n };\n};\n\nexport type EmailRecipient = {\n readonly address: string;\n readonly name?: string | null | undefined;\n};\n\nexport type EmailRecipientInput = EmailRecipient | string;\n\nexport const WEBHOOK_EVENT_TYPES = [\n \"message.received\",\n \"message.sent\",\n \"message.delivered\",\n \"message.bounced\",\n \"message.complained\",\n \"mailbox.rule_matched\",\n \"domain.verified\",\n \"domain.verification_failed\",\n \"domain.degraded\",\n \"org.reputation_warning\",\n \"org.sending_throttled\",\n \"org.sending_suspended\",\n \"org.reputation_recovered\",\n] as const;\n\nexport type WebhookEventType = (typeof WEBHOOK_EVENT_TYPES)[number];\nexport const WEBHOOK_DELIVERY_EVENT_TYPES = [\"webhook.test\", ...WEBHOOK_EVENT_TYPES] as const;\nexport type WebhookDeliveryEventType = (typeof WEBHOOK_DELIVERY_EVENT_TYPES)[number];\n\nexport type StatusResponse = {\n readonly status: string;\n readonly version: string;\n readonly time: string;\n readonly request_id: string;\n};\n\nexport const DOMAIN_STATUSES = [\"pending\", \"verifying\", \"verified\", \"degraded\", \"failed\"] as const;\nexport type DomainStatus = (typeof DOMAIN_STATUSES)[number];\n\nexport const MESSAGE_STATUSES = [\n \"scheduled\",\n \"queued\",\n \"sent\",\n \"delivered\",\n \"bounced\",\n \"complained\",\n \"failed\",\n \"suppressed\",\n \"cancelled\",\n] as const;\nexport type MessageStatus = (typeof MESSAGE_STATUSES)[number];\n\nexport const MESSAGE_SOURCES = [\n \"api\",\n \"newsletter\",\n \"dashboard\",\n \"inbound\",\n \"smtp\",\n \"assistant\",\n] as const;\nexport type MessageSource = (typeof MESSAGE_SOURCES)[number];\n\nexport const WEBHOOK_DELIVERY_STATUSES = [\"pending\", \"delivered\", \"failed\"] as const;\nexport type WebhookDeliveryStatus = (typeof WEBHOOK_DELIVERY_STATUSES)[number];\n\nexport type MethodOptions = {\n readonly timeout?: number | undefined;\n readonly signal?: AbortSignal | undefined;\n readonly headers?: Record<string, string> | undefined;\n readonly idempotencyKey?: string | undefined;\n readonly organizationId?: string | undefined;\n};\n\nexport type OneTimeSecretMethodOptions = Omit<MethodOptions, \"idempotencyKey\">;\n","import { WebhookVerificationError } from \"./errors.js\";\nimport type { WebhookEvent } from \"./types/webhook.js\";\n\nconst DEFAULT_TOLERANCE_SECONDS = 300; // 5 minutes\n\ntype WebhookHeaders = {\n readonly \"x-shipmail-signature\"?: string;\n readonly \"x-shipmail-timestamp\"?: string;\n readonly \"x-shipmail-event-id\"?: string;\n readonly [key: string]: string | undefined;\n};\n\nfunction getHeader(headers: WebhookHeaders | Headers, name: string): string | undefined {\n if (headers instanceof Headers) {\n return headers.get(name) ?? undefined;\n }\n return headers[name] ?? headers[name.toLowerCase()];\n}\n\nasync function signPayload(secret: string, timestamp: number, body: string): Promise<string> {\n const { createHmac } = await import(\"crypto\");\n const payload = `v1=${timestamp}\\n${body}`;\n return createHmac(\"sha256\", secret).update(payload).digest(\"hex\");\n}\n\n/**\n * Verify an incoming webhook signature. Throws `WebhookVerificationError` on failure.\n * Returns the parsed webhook event on success.\n */\nexport async function verifyWebhook(\n body: string,\n headers: WebhookHeaders | Headers,\n secret: string,\n options?: { readonly toleranceInSeconds?: number | undefined },\n): Promise<WebhookEvent> {\n const signature = getHeader(headers, \"x-shipmail-signature\");\n const timestampStr = getHeader(headers, \"x-shipmail-timestamp\");\n\n if (!signature) {\n throw new WebhookVerificationError(\"Missing X-Shipmail-Signature header\");\n }\n if (!timestampStr) {\n throw new WebhookVerificationError(\"Missing X-Shipmail-Timestamp header\");\n }\n\n const timestamp = parseInt(timestampStr, 10);\n if (isNaN(timestamp)) {\n throw new WebhookVerificationError(\"Invalid X-Shipmail-Timestamp header\");\n }\n\n const tolerance = options?.toleranceInSeconds ?? DEFAULT_TOLERANCE_SECONDS;\n const now = Math.floor(Date.now() / 1000);\n if (Math.abs(now - timestamp) > tolerance) {\n throw new WebhookVerificationError(\"Webhook timestamp is outside tolerance window\");\n }\n\n const expected = await signPayload(secret, timestamp, body);\n\n const { timingSafeEqual } = await import(\"crypto\");\n const sigBuffer = Buffer.from(signature, \"hex\");\n const expectedBuffer = Buffer.from(expected, \"hex\");\n\n if (sigBuffer.length !== expectedBuffer.length || !timingSafeEqual(sigBuffer, expectedBuffer)) {\n throw new WebhookVerificationError(\"Webhook signature verification failed\");\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(body);\n } catch {\n throw new WebhookVerificationError(\"Invalid webhook payload: not valid JSON\");\n }\n\n return parsed as WebhookEvent;\n}\n"]}
|