mailerbot 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/pagination.ts","../src/resources/contacts.ts","../src/resources/contact-lists.ts","../src/resources/documents.ts","../src/resources/postcards.ts","../src/resources/mailings.ts","../src/resources/campaigns.ts","../src/resources/dashboard.ts","../src/resources/payments.ts","../src/resources/qr.ts","../src/resources/merge-tags.ts","../src/resources/pricing.ts","../src/resources/coupons.ts","../src/resources/assets.ts","../src/client.ts"],"names":["fetch"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\r\n * Base error class for all MailerBot SDK errors.\r\n */\r\nexport class MailerBotError extends Error {\r\n readonly statusCode: number | undefined;\r\n readonly response: Record<string, unknown> | undefined;\r\n\r\n constructor(\r\n message: string,\r\n options?: { statusCode?: number; response?: Record<string, unknown> },\r\n ) {\r\n super(message);\r\n this.name = \"MailerBotError\";\r\n this.statusCode = options?.statusCode;\r\n this.response = options?.response;\r\n }\r\n}\r\n\r\n/** Raised when the API key is missing or invalid (401). */\r\nexport class AuthenticationError extends MailerBotError {\r\n constructor(\r\n message: string,\r\n options?: { statusCode?: number; response?: Record<string, unknown> },\r\n ) {\r\n super(message, options);\r\n this.name = \"AuthenticationError\";\r\n }\r\n}\r\n\r\n/** Raised when the API key lacks permission for the requested resource (403). */\r\nexport class PermissionError extends MailerBotError {\r\n constructor(\r\n message: string,\r\n options?: { statusCode?: number; response?: Record<string, unknown> },\r\n ) {\r\n super(message, options);\r\n this.name = \"PermissionError\";\r\n }\r\n}\r\n\r\n/** Raised when the requested resource does not exist (404). */\r\nexport class NotFoundError extends MailerBotError {\r\n constructor(\r\n message: string,\r\n options?: { statusCode?: number; response?: Record<string, unknown> },\r\n ) {\r\n super(message, options);\r\n this.name = \"NotFoundError\";\r\n }\r\n}\r\n\r\n/** Raised when the request body fails validation (422). */\r\nexport class ValidationError extends MailerBotError {\r\n constructor(\r\n message: string,\r\n options?: { statusCode?: number; response?: Record<string, unknown> },\r\n ) {\r\n super(message, options);\r\n this.name = \"ValidationError\";\r\n }\r\n}\r\n\r\n/** Raised when the rate limit is exceeded (429). */\r\nexport class RateLimitError extends MailerBotError {\r\n constructor(\r\n message: string,\r\n options?: { statusCode?: number; response?: Record<string, unknown> },\r\n ) {\r\n super(message, options);\r\n this.name = \"RateLimitError\";\r\n }\r\n}\r\n\r\n/** Raised for unexpected server-side errors (5xx). */\r\nexport class ServerError extends MailerBotError {\r\n constructor(\r\n message: string,\r\n options?: { statusCode?: number; response?: Record<string, unknown> },\r\n ) {\r\n super(message, options);\r\n this.name = \"ServerError\";\r\n }\r\n}\r\n","import {\r\n MailerBotError,\r\n AuthenticationError,\r\n PermissionError,\r\n NotFoundError,\r\n ValidationError,\r\n RateLimitError,\r\n ServerError,\r\n} from \"./errors.js\";\r\n\r\nexport const DEFAULT_BASE_URL = \"https://api.mailerbot.com/api/v1\";\r\nexport const DEFAULT_TIMEOUT = 30_000;\r\n\r\nexport function buildHeaders(apiKey: string): Record<string, string> {\r\n return {\r\n \"X-API-Key\": apiKey,\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n };\r\n}\r\n\r\nexport async function raiseForStatus(response: Response): Promise<void> {\r\n if (response.ok) return;\r\n\r\n let body: Record<string, unknown>;\r\n try {\r\n body = (await response.json()) as Record<string, unknown>;\r\n } catch {\r\n body = { detail: await response.text().catch(() => \"Unknown error\") };\r\n }\r\n\r\n const detail =\r\n typeof body.detail === \"string\" ? body.detail : JSON.stringify(body);\r\n const status = response.status;\r\n const opts = { statusCode: status, response: body };\r\n\r\n if (status === 401) throw new AuthenticationError(detail, opts);\r\n if (status === 403) throw new PermissionError(detail, opts);\r\n if (status === 404) throw new NotFoundError(detail, opts);\r\n if (status === 422) throw new ValidationError(detail, opts);\r\n if (status === 429) throw new RateLimitError(detail, opts);\r\n if (status >= 500) throw new ServerError(detail, opts);\r\n throw new MailerBotError(detail, opts);\r\n}\r\n\r\nexport interface RequestOptions {\r\n method?: string;\r\n path: string;\r\n body?: unknown;\r\n params?: Record<string, string | number | boolean | undefined>;\r\n headers?: Record<string, string>;\r\n}\r\n\r\nexport class HttpClient {\r\n private readonly baseUrl: string;\r\n private readonly headers: Record<string, string>;\r\n private readonly timeout: number;\r\n\r\n constructor(baseUrl: string, headers: Record<string, string>, timeout: number) {\r\n this.baseUrl = baseUrl;\r\n this.headers = headers;\r\n this.timeout = timeout;\r\n }\r\n\r\n async request<T>(options: RequestOptions): Promise<T> {\r\n const fullUrl = `${this.baseUrl}${options.path.startsWith(\"/\") ? \"\" : \"/\"}${options.path}`;\r\n const urlObj = new URL(fullUrl);\r\n\r\n if (options.params) {\r\n for (const [key, value] of Object.entries(options.params)) {\r\n if (value !== undefined) {\r\n urlObj.searchParams.set(key, String(value));\r\n }\r\n }\r\n }\r\n\r\n const mergedHeaders = { ...this.headers, ...options.headers };\r\n const controller = new AbortController();\r\n const timeoutId = setTimeout(() => controller.abort(), this.timeout);\r\n\r\n try {\r\n const response = await fetch(urlObj.toString(), {\r\n method: options.method ?? \"GET\",\r\n headers: mergedHeaders,\r\n body: options.body !== undefined ? JSON.stringify(options.body) : undefined,\r\n signal: controller.signal,\r\n });\r\n\r\n await raiseForStatus(response);\r\n\r\n const text = await response.text();\r\n if (!text) return undefined as T;\r\n return JSON.parse(text) as T;\r\n } finally {\r\n clearTimeout(timeoutId);\r\n }\r\n }\r\n\r\n async requestRaw(options: RequestOptions & { rawBody?: FormData | string; rawHeaders?: Record<string, string> }): Promise<Response> {\r\n const fullUrl = `${this.baseUrl}${options.path.startsWith(\"/\") ? \"\" : \"/\"}${options.path}`;\r\n const urlObj = new URL(fullUrl);\r\n\r\n if (options.params) {\r\n for (const [key, value] of Object.entries(options.params)) {\r\n if (value !== undefined) {\r\n urlObj.searchParams.set(key, String(value));\r\n }\r\n }\r\n }\r\n\r\n const controller = new AbortController();\r\n const timeoutId = setTimeout(() => controller.abort(), this.timeout);\r\n\r\n try {\r\n const response = await fetch(urlObj.toString(), {\r\n method: options.method ?? \"POST\",\r\n headers: options.rawHeaders ?? this.headers,\r\n body: options.rawBody,\r\n signal: controller.signal,\r\n });\r\n\r\n await raiseForStatus(response);\r\n return response;\r\n } finally {\r\n clearTimeout(timeoutId);\r\n }\r\n }\r\n}\r\n","import type { Page } from \"./types/common.js\";\r\n\r\n/**\r\n * Async auto-paginating iterator. Yields individual items across all pages.\r\n *\r\n * @example\r\n * ```ts\r\n * for await (const contact of client.contacts.iterAll()) {\r\n * console.log(contact.firstName);\r\n * }\r\n * ```\r\n */\r\nexport class PageIterator<T> implements AsyncIterable<T> {\r\n private readonly fetch: (page: number, pageSize: number) => Promise<Page<T>>;\r\n private readonly pageSize: number;\r\n\r\n constructor(\r\n fetch: (page: number, pageSize: number) => Promise<Page<T>>,\r\n pageSize: number = 100,\r\n ) {\r\n this.fetch = fetch;\r\n this.pageSize = pageSize;\r\n }\r\n\r\n async *[Symbol.asyncIterator](): AsyncIterableIterator<T> {\r\n let page = 1;\r\n while (true) {\r\n const result = await this.fetch(page, this.pageSize);\r\n for (const item of result.items) {\r\n yield item;\r\n }\r\n if (page >= result.pages) break;\r\n page++;\r\n }\r\n }\r\n}\r\n","import type { HttpClient } from \"../http.js\";\r\nimport type { Page } from \"../types/common.js\";\r\nimport type {\r\n Contact,\r\n AddressValidation,\r\n CsvImportResult,\r\n CreateContactParams,\r\n UpdateContactParams,\r\n} from \"../types/contacts.js\";\r\nimport { PageIterator } from \"../pagination.js\";\r\n\r\nexport class ContactsResource {\r\n constructor(private readonly http: HttpClient) {}\r\n\r\n async list(options?: {\r\n page?: number;\r\n pageSize?: number;\r\n search?: string;\r\n }): Promise<Page<Contact>> {\r\n return this.http.request<Page<Contact>>({\r\n path: \"/contacts\",\r\n params: {\r\n page: options?.page ?? 1,\r\n page_size: options?.pageSize ?? 50,\r\n search: options?.search,\r\n },\r\n });\r\n }\r\n\r\n iterAll(options?: {\r\n pageSize?: number;\r\n search?: string;\r\n }): PageIterator<Contact> {\r\n return new PageIterator(\r\n (page, pageSize) =>\r\n this.list({ page, pageSize, search: options?.search }),\r\n options?.pageSize ?? 100,\r\n );\r\n }\r\n\r\n async get(contactId: string): Promise<Contact> {\r\n return this.http.request<Contact>({ path: `/contacts/${contactId}` });\r\n }\r\n\r\n async create(params: CreateContactParams): Promise<Contact> {\r\n return this.http.request<Contact>({\r\n method: \"POST\",\r\n path: \"/contacts\",\r\n body: params,\r\n });\r\n }\r\n\r\n async update(\r\n contactId: string,\r\n params: UpdateContactParams,\r\n ): Promise<Contact> {\r\n return this.http.request<Contact>({\r\n method: \"PUT\",\r\n path: `/contacts/${contactId}`,\r\n body: params,\r\n });\r\n }\r\n\r\n async delete(contactId: string): Promise<void> {\r\n await this.http.request<void>({\r\n method: \"DELETE\",\r\n path: `/contacts/${contactId}`,\r\n });\r\n }\r\n\r\n async importCsv(\r\n contacts: Record<string, unknown>[],\r\n options?: { listName?: string },\r\n ): Promise<CsvImportResult> {\r\n return this.http.request<CsvImportResult>({\r\n method: \"POST\",\r\n path: \"/contacts/import\",\r\n body: { contacts, listName: options?.listName },\r\n });\r\n }\r\n\r\n async validateAddresses(\r\n contactIds: string[],\r\n ): Promise<AddressValidation[]> {\r\n return this.http.request<AddressValidation[]>({\r\n method: \"POST\",\r\n path: \"/contacts/validate\",\r\n body: { contactIds },\r\n });\r\n }\r\n}\r\n","import type { HttpClient } from \"../http.js\";\r\nimport type { ContactList } from \"../types/contacts.js\";\r\n\r\nexport class ContactListsResource {\r\n constructor(private readonly http: HttpClient) {}\r\n\r\n async list(): Promise<ContactList[]> {\r\n return this.http.request<ContactList[]>({ path: \"/contact-lists\" });\r\n }\r\n\r\n async get(listId: string): Promise<ContactList> {\r\n return this.http.request<ContactList>({\r\n path: `/contact-lists/${listId}`,\r\n });\r\n }\r\n\r\n async create(\r\n name: string,\r\n options?: { contactIds?: string[] },\r\n ): Promise<ContactList> {\r\n return this.http.request<ContactList>({\r\n method: \"POST\",\r\n path: \"/contact-lists\",\r\n body: { name, contactIds: options?.contactIds ?? [] },\r\n });\r\n }\r\n\r\n async update(listId: string, name: string): Promise<ContactList> {\r\n return this.http.request<ContactList>({\r\n method: \"PUT\",\r\n path: `/contact-lists/${listId}`,\r\n body: { name },\r\n });\r\n }\r\n\r\n async delete(listId: string): Promise<void> {\r\n await this.http.request<void>({\r\n method: \"DELETE\",\r\n path: `/contact-lists/${listId}`,\r\n });\r\n }\r\n\r\n async addContacts(listId: string, contactIds: string[]): Promise<void> {\r\n await this.http.request<void>({\r\n method: \"POST\",\r\n path: `/contact-lists/${listId}/contacts`,\r\n body: { contactIds },\r\n });\r\n }\r\n\r\n async removeContacts(listId: string, contactIds: string[]): Promise<void> {\r\n await this.http.request<void>({\r\n method: \"DELETE\",\r\n path: `/contact-lists/${listId}/contacts`,\r\n body: { contactIds },\r\n });\r\n }\r\n}\r\n","import type { HttpClient } from \"../http.js\";\r\nimport type { Page } from \"../types/common.js\";\r\nimport type {\r\n Document,\r\n CreateDocumentParams,\r\n UpdateDocumentParams,\r\n} from \"../types/documents.js\";\r\nimport { PageIterator } from \"../pagination.js\";\r\n\r\nexport class DocumentsResource {\r\n constructor(private readonly http: HttpClient) {}\r\n\r\n async list(options?: {\r\n page?: number;\r\n pageSize?: number;\r\n type?: string;\r\n }): Promise<Page<Document>> {\r\n return this.http.request<Page<Document>>({\r\n path: \"/documents\",\r\n params: {\r\n page: options?.page ?? 1,\r\n page_size: options?.pageSize ?? 50,\r\n type: options?.type,\r\n },\r\n });\r\n }\r\n\r\n iterAll(options?: { pageSize?: number }): PageIterator<Document> {\r\n return new PageIterator(\r\n (page, pageSize) => this.list({ page, pageSize }),\r\n options?.pageSize ?? 100,\r\n );\r\n }\r\n\r\n async get(documentId: string): Promise<Document> {\r\n return this.http.request<Document>({ path: `/documents/${documentId}` });\r\n }\r\n\r\n async create(params?: CreateDocumentParams): Promise<Document> {\r\n return this.http.request<Document>({\r\n method: \"POST\",\r\n path: \"/documents\",\r\n body: {\r\n title: params?.title ?? \"Untitled Document\",\r\n content: params?.content ?? \"\",\r\n },\r\n });\r\n }\r\n\r\n async update(\r\n documentId: string,\r\n params: UpdateDocumentParams,\r\n ): Promise<Document> {\r\n return this.http.request<Document>({\r\n method: \"PUT\",\r\n path: `/documents/${documentId}`,\r\n body: params,\r\n });\r\n }\r\n\r\n async delete(documentId: string): Promise<void> {\r\n await this.http.request<void>({\r\n method: \"DELETE\",\r\n path: `/documents/${documentId}`,\r\n });\r\n }\r\n\r\n async upload(file: Blob | ArrayBuffer | Uint8Array<ArrayBuffer>, filename: string): Promise<Document> {\r\n const formData = new FormData();\r\n const blob =\r\n file instanceof Blob ? file : new Blob([file], { type: \"application/pdf\" });\r\n formData.append(\"file\", blob, filename);\r\n\r\n const response = await this.http.requestRaw({\r\n method: \"POST\",\r\n path: \"/documents/upload\",\r\n rawBody: formData,\r\n rawHeaders: {}, // let fetch set Content-Type with boundary\r\n });\r\n\r\n return (await response.json()) as Document;\r\n }\r\n}\r\n","import type { HttpClient } from \"../http.js\";\r\nimport type { Page } from \"../types/common.js\";\r\nimport type {\r\n Postcard,\r\n PostcardTemplate,\r\n CreatePostcardParams,\r\n UpdatePostcardParams,\r\n} from \"../types/postcards.js\";\r\nimport { PageIterator } from \"../pagination.js\";\r\n\r\nexport class PostcardsResource {\r\n constructor(private readonly http: HttpClient) {}\r\n\r\n async listTemplates(): Promise<PostcardTemplate[]> {\r\n return this.http.request<PostcardTemplate[]>({\r\n path: \"/postcards/templates\",\r\n });\r\n }\r\n\r\n async getTemplate(templateId: string): Promise<PostcardTemplate> {\r\n return this.http.request<PostcardTemplate>({\r\n path: `/postcards/templates/${templateId}`,\r\n });\r\n }\r\n\r\n async list(options?: {\r\n page?: number;\r\n pageSize?: number;\r\n }): Promise<Page<Postcard>> {\r\n return this.http.request<Page<Postcard>>({\r\n path: \"/postcards\",\r\n params: {\r\n page: options?.page ?? 1,\r\n page_size: options?.pageSize ?? 50,\r\n },\r\n });\r\n }\r\n\r\n iterAll(options?: { pageSize?: number }): PageIterator<Postcard> {\r\n return new PageIterator(\r\n (page, pageSize) => this.list({ page, pageSize }),\r\n options?.pageSize ?? 100,\r\n );\r\n }\r\n\r\n async get(postcardId: string): Promise<Postcard> {\r\n return this.http.request<Postcard>({ path: `/postcards/${postcardId}` });\r\n }\r\n\r\n async create(params?: CreatePostcardParams): Promise<Postcard> {\r\n return this.http.request<Postcard>({\r\n method: \"POST\",\r\n path: \"/postcards\",\r\n body: {\r\n title: params?.title ?? \"Untitled Postcard\",\r\n front: params?.front,\r\n back: params?.back,\r\n },\r\n });\r\n }\r\n\r\n async update(\r\n postcardId: string,\r\n params: UpdatePostcardParams,\r\n ): Promise<Postcard> {\r\n return this.http.request<Postcard>({\r\n method: \"PUT\",\r\n path: `/postcards/${postcardId}`,\r\n body: params,\r\n });\r\n }\r\n\r\n async delete(postcardId: string): Promise<void> {\r\n await this.http.request<void>({\r\n method: \"DELETE\",\r\n path: `/postcards/${postcardId}`,\r\n });\r\n }\r\n}\r\n","import type { HttpClient } from \"../http.js\";\r\nimport type { Page } from \"../types/common.js\";\r\nimport type {\r\n Mailing,\r\n MailingItemTracking,\r\n MailingItemScan,\r\n ListMailingItemsOptions,\r\n CostCalculation,\r\n CreateMailingParams,\r\n UpdateMailingParams,\r\n EstimateCostParams,\r\n} from \"../types/mailings.js\";\r\nimport { PageIterator } from \"../pagination.js\";\r\n\r\nfunction toISOString(date: string | Date | undefined): string | undefined {\r\n if (date === undefined) return undefined;\r\n return date instanceof Date ? date.toISOString() : date;\r\n}\r\n\r\nexport class MailingsResource {\r\n constructor(private readonly http: HttpClient) {}\r\n\r\n async list(options?: {\r\n page?: number;\r\n pageSize?: number;\r\n }): Promise<Page<Mailing>> {\r\n return this.http.request<Page<Mailing>>({\r\n path: \"/mailings\",\r\n params: {\r\n page: options?.page ?? 1,\r\n page_size: options?.pageSize ?? 50,\r\n },\r\n });\r\n }\r\n\r\n iterAll(options?: { pageSize?: number }): PageIterator<Mailing> {\r\n return new PageIterator(\r\n (page, pageSize) => this.list({ page, pageSize }),\r\n options?.pageSize ?? 100,\r\n );\r\n }\r\n\r\n async get(mailingId: string): Promise<Mailing> {\r\n return this.http.request<Mailing>({ path: `/mailings/${mailingId}` });\r\n }\r\n\r\n async create(params: CreateMailingParams): Promise<Mailing> {\r\n return this.http.request<Mailing>({\r\n method: \"POST\",\r\n path: \"/mailings\",\r\n body: {\r\n name: params.name,\r\n type: params.type,\r\n contactListId: params.contactListId,\r\n documentId: params.documentId,\r\n postcardId: params.postcardId,\r\n couponListId: params.couponListId,\r\n scheduledDate: toISOString(params.scheduledDate),\r\n printColor: params.printColor ?? false,\r\n postageSelections: params.postageSelections,\r\n },\r\n });\r\n }\r\n\r\n async update(\r\n mailingId: string,\r\n params: UpdateMailingParams,\r\n ): Promise<Mailing> {\r\n return this.http.request<Mailing>({\r\n method: \"PUT\",\r\n path: `/mailings/${mailingId}`,\r\n body: {\r\n name: params.name,\r\n scheduledDate: toISOString(params.scheduledDate),\r\n },\r\n });\r\n }\r\n\r\n async delete(mailingId: string): Promise<void> {\r\n await this.http.request<void>({\r\n method: \"DELETE\",\r\n path: `/mailings/${mailingId}`,\r\n });\r\n }\r\n\r\n async validateAddresses(\r\n mailingId: string,\r\n ): Promise<Record<string, unknown>[]> {\r\n return this.http.request<Record<string, unknown>[]>({\r\n method: \"POST\",\r\n path: `/mailings/${mailingId}/validate-addresses`,\r\n });\r\n }\r\n\r\n async estimateCost(params: EstimateCostParams): Promise<CostCalculation> {\r\n return this.http.request<CostCalculation>({\r\n method: \"POST\",\r\n path: \"/mailings/estimate-cost\",\r\n body: {\r\n type: params.type,\r\n contactListId: params.contactListId,\r\n contactIds: params.contactIds,\r\n documentId: params.documentId,\r\n printColor: params.printColor ?? false,\r\n },\r\n });\r\n }\r\n\r\n async calculateCost(mailingId: string): Promise<CostCalculation> {\r\n return this.http.request<CostCalculation>({\r\n method: \"POST\",\r\n path: `/mailings/${mailingId}/calculate-cost`,\r\n });\r\n }\r\n\r\n async send(mailingId: string): Promise<Mailing> {\r\n return this.http.request<Mailing>({\r\n method: \"POST\",\r\n path: `/mailings/${mailingId}/send`,\r\n });\r\n }\r\n\r\n async listItems(\r\n mailingId: string,\r\n options?: ListMailingItemsOptions,\r\n ): Promise<Page<MailingItemTracking>> {\r\n return this.http.request<Page<MailingItemTracking>>({\r\n path: `/mailings/${mailingId}/items`,\r\n params: {\r\n page: options?.page ?? 1,\r\n page_size: options?.pageSize ?? 50,\r\n trackingStatus: options?.trackingStatus,\r\n },\r\n });\r\n }\r\n\r\n iterItems(\r\n mailingId: string,\r\n options?: Omit<ListMailingItemsOptions, \"page\">,\r\n ): PageIterator<MailingItemTracking> {\r\n return new PageIterator(\r\n (page, pageSize) =>\r\n this.listItems(mailingId, {\r\n page,\r\n pageSize,\r\n trackingStatus: options?.trackingStatus,\r\n }),\r\n options?.pageSize ?? 100,\r\n );\r\n }\r\n\r\n async listItemScans(\r\n mailingId: string,\r\n itemId: string,\r\n ): Promise<MailingItemScan[]> {\r\n return this.http.request<MailingItemScan[]>({\r\n path: `/mailings/${mailingId}/items/${itemId}/scans`,\r\n });\r\n }\r\n}\r\n","import type { HttpClient } from \"../http.js\";\r\nimport type { Page } from \"../types/common.js\";\r\nimport type { Campaign } from \"../types/campaigns.js\";\r\nimport { PageIterator } from \"../pagination.js\";\r\n\r\nexport class CampaignsResource {\r\n constructor(private readonly http: HttpClient) {}\r\n\r\n async list(options?: {\r\n page?: number;\r\n pageSize?: number;\r\n }): Promise<Page<Campaign>> {\r\n return this.http.request<Page<Campaign>>({\r\n path: \"/campaigns\",\r\n params: {\r\n page: options?.page ?? 1,\r\n page_size: options?.pageSize ?? 50,\r\n },\r\n });\r\n }\r\n\r\n iterAll(options?: { pageSize?: number }): PageIterator<Campaign> {\r\n return new PageIterator(\r\n (page, pageSize) => this.list({ page, pageSize }),\r\n options?.pageSize ?? 100,\r\n );\r\n }\r\n\r\n async get(campaignId: string): Promise<Campaign> {\r\n return this.http.request<Campaign>({ path: `/campaigns/${campaignId}` });\r\n }\r\n\r\n async create(\r\n name: string,\r\n options?: { mailingIds?: string[] },\r\n ): Promise<Campaign> {\r\n return this.http.request<Campaign>({\r\n method: \"POST\",\r\n path: \"/campaigns\",\r\n body: { name, mailingIds: options?.mailingIds ?? [] },\r\n });\r\n }\r\n\r\n async update(\r\n campaignId: string,\r\n params: { name?: string; status?: string },\r\n ): Promise<Campaign> {\r\n return this.http.request<Campaign>({\r\n method: \"PUT\",\r\n path: `/campaigns/${campaignId}`,\r\n body: params,\r\n });\r\n }\r\n\r\n async delete(campaignId: string): Promise<void> {\r\n await this.http.request<void>({\r\n method: \"DELETE\",\r\n path: `/campaigns/${campaignId}`,\r\n });\r\n }\r\n\r\n async addMailing(\r\n campaignId: string,\r\n mailingId: string,\r\n ): Promise<Campaign> {\r\n return this.http.request<Campaign>({\r\n method: \"POST\",\r\n path: `/campaigns/${campaignId}/mailings`,\r\n body: { mailing_id: mailingId },\r\n });\r\n }\r\n\r\n async removeMailing(\r\n campaignId: string,\r\n mailingId: string,\r\n ): Promise<Campaign> {\r\n return this.http.request<Campaign>({\r\n method: \"DELETE\",\r\n path: `/campaigns/${campaignId}/mailings/${mailingId}`,\r\n });\r\n }\r\n}\r\n","import type { HttpClient } from \"../http.js\";\r\nimport type { DashboardStats, ReportingData } from \"../types/dashboard.js\";\r\n\r\nexport class DashboardResource {\r\n constructor(private readonly http: HttpClient) {}\r\n\r\n async stats(): Promise<DashboardStats> {\r\n return this.http.request<DashboardStats>({ path: \"/dashboard/stats\" });\r\n }\r\n\r\n async reporting(options?: {\r\n startDate?: string;\r\n endDate?: string;\r\n }): Promise<ReportingData> {\r\n return this.http.request<ReportingData>({\r\n path: \"/dashboard/reporting\",\r\n params: {\r\n start_date: options?.startDate,\r\n end_date: options?.endDate,\r\n },\r\n });\r\n }\r\n}\r\n","import type { HttpClient } from \"../http.js\";\r\nimport type { PaymentIntent, SavedCard } from \"../types/payments.js\";\r\n\r\nexport class PaymentsResource {\r\n constructor(private readonly http: HttpClient) {}\r\n\r\n async createPaymentIntent(\r\n mailingId: string,\r\n options?: { paymentMethodId?: string },\r\n ): Promise<PaymentIntent> {\r\n const body: Record<string, string> = { mailingId };\r\n if (options?.paymentMethodId) {\r\n body.paymentMethodId = options.paymentMethodId;\r\n }\r\n return this.http.request<PaymentIntent>({\r\n method: \"POST\",\r\n path: \"/payments/create-payment-intent\",\r\n body,\r\n });\r\n }\r\n\r\n async getStripeKey(): Promise<string> {\r\n const data = await this.http.request<{ publishable_key: string }>({\r\n path: \"/payments/config\",\r\n });\r\n return data.publishable_key;\r\n }\r\n\r\n async listCards(): Promise<SavedCard[]> {\r\n return this.http.request<SavedCard[]>({ path: \"/payments/cards\" });\r\n }\r\n\r\n async deleteCard(paymentMethodId: string): Promise<void> {\r\n await this.http.request<void>({\r\n method: \"DELETE\",\r\n path: `/payments/cards/${paymentMethodId}`,\r\n });\r\n }\r\n}\r\n","import type { HttpClient } from \"../http.js\";\r\nimport type { Page } from \"../types/common.js\";\r\nimport type { QrLink, QrAnalytics, CreateQrLinkParams } from \"../types/qr.js\";\r\nimport { PageIterator } from \"../pagination.js\";\r\n\r\nexport class QrResource {\r\n constructor(private readonly http: HttpClient) {}\r\n\r\n async list(options?: {\r\n page?: number;\r\n pageSize?: number;\r\n }): Promise<Page<QrLink>> {\r\n return this.http.request<Page<QrLink>>({\r\n path: \"/qr/links\",\r\n params: {\r\n page: options?.page ?? 1,\r\n page_size: options?.pageSize ?? 50,\r\n },\r\n });\r\n }\r\n\r\n iterAll(options?: { pageSize?: number }): PageIterator<QrLink> {\r\n return new PageIterator(\r\n (page, pageSize) => this.list({ page, pageSize }),\r\n options?.pageSize ?? 100,\r\n );\r\n }\r\n\r\n async create(params: CreateQrLinkParams): Promise<QrLink> {\r\n return this.http.request<QrLink>({\r\n method: \"POST\",\r\n path: \"/qr/links\",\r\n body: params,\r\n });\r\n }\r\n\r\n async delete(linkId: string): Promise<void> {\r\n await this.http.request<void>({\r\n method: \"DELETE\",\r\n path: `/qr/links/${linkId}`,\r\n });\r\n }\r\n\r\n async analytics(options?: { days?: number }): Promise<QrAnalytics> {\r\n return this.http.request<QrAnalytics>({\r\n path: \"/qr/analytics\",\r\n params: { days: options?.days ?? 30 },\r\n });\r\n }\r\n}\r\n","import type { HttpClient } from \"../http.js\";\r\nimport type { MergeTag } from \"../types/merge-tags.js\";\r\n\r\nexport class MergeTagsResource {\r\n constructor(private readonly http: HttpClient) {}\r\n\r\n async list(): Promise<MergeTag[]> {\r\n return this.http.request<MergeTag[]>({ path: \"/merge-tags\" });\r\n }\r\n}\r\n","import type { HttpClient } from \"../http.js\";\r\n\r\nexport class PricingResource {\r\n constructor(private readonly http: HttpClient) {}\r\n\r\n async catalog(): Promise<Record<string, unknown>[]> {\r\n return this.http.request<Record<string, unknown>[]>({ path: \"/pricing\" });\r\n }\r\n\r\n async countries(): Promise<Record<string, unknown>[]> {\r\n return this.http.request<Record<string, unknown>[]>({\r\n path: \"/pricing/countries\",\r\n });\r\n }\r\n\r\n async postageZones(): Promise<Record<string, unknown>[]> {\r\n return this.http.request<Record<string, unknown>[]>({\r\n path: \"/pricing/postage-zones\",\r\n });\r\n }\r\n\r\n async postageRates(options?: {\r\n productType?: string;\r\n zone?: string;\r\n }): Promise<Record<string, unknown>[]> {\r\n return this.http.request<Record<string, unknown>[]>({\r\n path: \"/pricing/postage-rates\",\r\n params: {\r\n product_type: options?.productType,\r\n zone: options?.zone,\r\n },\r\n });\r\n }\r\n}\r\n","import type { HttpClient } from \"../http.js\";\r\nimport type { Page } from \"../types/common.js\";\r\nimport type {\r\n CouponList,\r\n CouponCode,\r\n CouponImportResult,\r\n CouponAvailability,\r\n} from \"../types/coupons.js\";\r\n\r\nexport class CouponsResource {\r\n constructor(private readonly http: HttpClient) {}\r\n\r\n async list(): Promise<CouponList[]> {\r\n return this.http.request<CouponList[]>({ path: \"/coupons\" });\r\n }\r\n\r\n async get(listId: string): Promise<CouponList> {\r\n return this.http.request<CouponList>({ path: `/coupons/${listId}` });\r\n }\r\n\r\n async create(\r\n name: string,\r\n options?: { description?: string },\r\n ): Promise<CouponList> {\r\n return this.http.request<CouponList>({\r\n method: \"POST\",\r\n path: \"/coupons\",\r\n body: { name, description: options?.description },\r\n });\r\n }\r\n\r\n async update(\r\n listId: string,\r\n params: { name?: string; description?: string },\r\n ): Promise<CouponList> {\r\n return this.http.request<CouponList>({\r\n method: \"PUT\",\r\n path: `/coupons/${listId}`,\r\n body: params,\r\n });\r\n }\r\n\r\n async delete(listId: string): Promise<void> {\r\n await this.http.request<void>({\r\n method: \"DELETE\",\r\n path: `/coupons/${listId}`,\r\n });\r\n }\r\n\r\n async listCodes(\r\n listId: string,\r\n options?: { page?: number; pageSize?: number; used?: boolean },\r\n ): Promise<Page<CouponCode>> {\r\n return this.http.request<Page<CouponCode>>({\r\n path: `/coupons/${listId}/codes`,\r\n params: {\r\n page: options?.page ?? 1,\r\n page_size: options?.pageSize ?? 50,\r\n used: options?.used,\r\n },\r\n });\r\n }\r\n\r\n async importCodes(\r\n listId: string,\r\n codes: string[],\r\n ): Promise<CouponImportResult> {\r\n return this.http.request<CouponImportResult>({\r\n method: \"POST\",\r\n path: `/coupons/${listId}/codes/import`,\r\n body: { codes },\r\n });\r\n }\r\n\r\n async deleteCode(listId: string, codeId: string): Promise<void> {\r\n await this.http.request<void>({\r\n method: \"DELETE\",\r\n path: `/coupons/${listId}/codes/${codeId}`,\r\n });\r\n }\r\n\r\n async checkAvailability(\r\n listId: string,\r\n count: number,\r\n ): Promise<CouponAvailability> {\r\n return this.http.request<CouponAvailability>({\r\n path: `/coupons/${listId}/availability`,\r\n params: { count },\r\n });\r\n }\r\n}\r\n","import type { HttpClient } from \"../http.js\";\r\nimport type { Page } from \"../types/common.js\";\r\nimport type { Asset } from \"../types/assets.js\";\r\nimport { PageIterator } from \"../pagination.js\";\r\n\r\nexport class AssetsResource {\r\n constructor(private readonly http: HttpClient) {}\r\n\r\n async list(options?: {\r\n page?: number;\r\n pageSize?: number;\r\n }): Promise<Page<Asset>> {\r\n return this.http.request<Page<Asset>>({\r\n path: \"/assets\",\r\n params: {\r\n page: options?.page ?? 1,\r\n page_size: options?.pageSize ?? 50,\r\n },\r\n });\r\n }\r\n\r\n iterAll(options?: { pageSize?: number }): PageIterator<Asset> {\r\n return new PageIterator(\r\n (page, pageSize) => this.list({ page, pageSize }),\r\n options?.pageSize ?? 100,\r\n );\r\n }\r\n\r\n async upload(\r\n file: Blob | ArrayBuffer | Uint8Array<ArrayBuffer>,\r\n filename: string,\r\n mimeType?: string,\r\n ): Promise<Asset> {\r\n const formData = new FormData();\r\n const blob =\r\n file instanceof Blob\r\n ? file\r\n : new Blob([file], { type: mimeType ?? \"application/octet-stream\" });\r\n formData.append(\"file\", blob, filename);\r\n\r\n const response = await this.http.requestRaw({\r\n method: \"POST\",\r\n path: \"/assets\",\r\n rawBody: formData,\r\n rawHeaders: {}, // let fetch set Content-Type with boundary\r\n });\r\n\r\n return (await response.json()) as Asset;\r\n }\r\n\r\n async delete(assetId: string): Promise<void> {\r\n await this.http.request<void>({\r\n method: \"DELETE\",\r\n path: `/assets/${assetId}`,\r\n });\r\n }\r\n}\r\n","import { HttpClient, buildHeaders, DEFAULT_BASE_URL, DEFAULT_TIMEOUT } from \"./http.js\";\r\nimport { ContactsResource } from \"./resources/contacts.js\";\r\nimport { ContactListsResource } from \"./resources/contact-lists.js\";\r\nimport { DocumentsResource } from \"./resources/documents.js\";\r\nimport { PostcardsResource } from \"./resources/postcards.js\";\r\nimport { MailingsResource } from \"./resources/mailings.js\";\r\nimport { CampaignsResource } from \"./resources/campaigns.js\";\r\nimport { DashboardResource } from \"./resources/dashboard.js\";\r\nimport { PaymentsResource } from \"./resources/payments.js\";\r\nimport { QrResource } from \"./resources/qr.js\";\r\nimport { MergeTagsResource } from \"./resources/merge-tags.js\";\r\nimport { PricingResource } from \"./resources/pricing.js\";\r\nimport { CouponsResource } from \"./resources/coupons.js\";\r\nimport { AssetsResource } from \"./resources/assets.js\";\r\n\r\nexport interface MailerBotOptions {\r\n /** Base URL for the API. Defaults to `https://api.mailerbot.com/api/v1`. */\r\n baseUrl?: string;\r\n /** Request timeout in milliseconds. Defaults to 30000. */\r\n timeout?: number;\r\n}\r\n\r\n/**\r\n * MailerBot API client.\r\n *\r\n * @example\r\n * ```ts\r\n * import { MailerBot } from \"mailerbot\";\r\n *\r\n * const client = new MailerBot(\"mb_live_...\");\r\n * const page = await client.contacts.list();\r\n * console.log(page.total, \"contacts\");\r\n * ```\r\n */\r\nexport class MailerBot {\r\n readonly contacts: ContactsResource;\r\n readonly contactLists: ContactListsResource;\r\n readonly documents: DocumentsResource;\r\n readonly postcards: PostcardsResource;\r\n readonly mailings: MailingsResource;\r\n readonly campaigns: CampaignsResource;\r\n readonly dashboard: DashboardResource;\r\n readonly payments: PaymentsResource;\r\n readonly qr: QrResource;\r\n readonly mergeTags: MergeTagsResource;\r\n readonly pricing: PricingResource;\r\n readonly coupons: CouponsResource;\r\n readonly assets: AssetsResource;\r\n\r\n constructor(apiKey: string, options?: MailerBotOptions) {\r\n const baseUrl = (options?.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/+$/, \"\");\r\n const timeout = options?.timeout ?? DEFAULT_TIMEOUT;\r\n const headers = buildHeaders(apiKey);\r\n const http = new HttpClient(baseUrl, headers, timeout);\r\n\r\n this.contacts = new ContactsResource(http);\r\n this.contactLists = new ContactListsResource(http);\r\n this.documents = new DocumentsResource(http);\r\n this.postcards = new PostcardsResource(http);\r\n this.mailings = new MailingsResource(http);\r\n this.campaigns = new CampaignsResource(http);\r\n this.dashboard = new DashboardResource(http);\r\n this.payments = new PaymentsResource(http);\r\n this.qr = new QrResource(http);\r\n this.mergeTags = new MergeTagsResource(http);\r\n this.pricing = new PricingResource(http);\r\n this.coupons = new CouponsResource(http);\r\n this.assets = new AssetsResource(http);\r\n }\r\n}\r\n"]}