// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import { APIResource } from '../core/resource'; import * as CampaignsAPI from './campaigns'; import { APIPromise } from '../core/api-promise'; import { buildHeaders } from '../internal/headers'; import { RequestOptions } from '../internal/request-options'; import { path } from '../internal/utils/path'; export class Campaigns extends APIResource { /** * Create a new campaign */ create(body: CampaignCreateParams, options?: RequestOptions): APIPromise { return this._client.post('/campaigns', { body, ...options, headers: buildHeaders([{ Accept: '*/*' }, options?.headers]), }); } /** * Get a specific campaign */ retrieve(id: number, options?: RequestOptions): APIPromise { return this._client.get(path`/campaigns/${id}`, options); } /** * Update a campaign */ update(id: number, body: CampaignUpdateParams, options?: RequestOptions): APIPromise { return this._client.put(path`/campaigns/${id}`, { body, ...options, headers: buildHeaders([{ Accept: '*/*' }, options?.headers]), }); } /** * Get all campaigns */ list( query: CampaignListParams | null | undefined = {}, options?: RequestOptions, ): APIPromise { return this._client.get('/campaigns', { query, ...options }); } /** * Delete a campaign */ delete(id: number, options?: RequestOptions): APIPromise { return this._client.delete(path`/campaigns/${id}`, { ...options, headers: buildHeaders([{ Accept: '*/*' }, options?.headers]), }); } /** * Preview campaign content */ preview(id: number, options?: RequestOptions): APIPromise { return this._client.get(path`/campaigns/${id}/preview`, { ...options, headers: buildHeaders([{ Accept: '*/*' }, options?.headers]), }); } /** * Send test campaign */ sendTest(id: number, body: CampaignSendTestParams, options?: RequestOptions): APIPromise { return this._client.post(path`/campaigns/${id}/test`, { body, ...options, headers: buildHeaders([{ Accept: '*/*' }, options?.headers]), }); } /** * Update campaign status */ updateStatus(id: number, body: CampaignUpdateStatusParams, options?: RequestOptions): APIPromise { return this._client.put(path`/campaigns/${id}/status`, { body, ...options, headers: buildHeaders([{ Accept: '*/*' }, options?.headers]), }); } } export interface Campaign { id?: number; altbody?: string; body?: string; bounces?: number; clicks?: number; content_type?: 'richtext' | 'html' | 'markdown' | 'plain'; created_at?: string; from_email?: string; lists?: Array; messenger?: string; name?: string; rate?: number; send_at?: string; sent?: number; started_at?: string; status?: 'draft' | 'scheduled' | 'running' | 'paused' | 'finished' | 'cancelled'; subject?: string; tags?: Array; template_id?: number; to_send?: number; updated_at?: string; uuid?: string; views?: number; } export interface CampaignInput { body: string; from_email: string; lists: Array; name: string; subject: string; altbody?: string; content_type?: 'richtext' | 'html' | 'markdown' | 'plain'; messenger?: string; send_at?: string; tags?: Array; template_id?: number; } export interface CampaignRetrieveResponse { data?: Campaign; } export interface CampaignListResponse { data?: CampaignListResponse.Data; } export namespace CampaignListResponse { export interface Data { results?: Array; total?: number; } } export interface CampaignCreateParams { body: string; from_email: string; lists: Array; name: string; subject: string; altbody?: string; content_type?: 'richtext' | 'html' | 'markdown' | 'plain'; messenger?: string; send_at?: string; tags?: Array; template_id?: number; } export interface CampaignUpdateParams { body: string; from_email: string; lists: Array; name: string; subject: string; altbody?: string; content_type?: 'richtext' | 'html' | 'markdown' | 'plain'; messenger?: string; send_at?: string; tags?: Array; template_id?: number; } export interface CampaignListParams { page?: number; query?: string; status?: 'draft' | 'scheduled' | 'running' | 'paused' | 'finished' | 'cancelled'; tags?: Array; } export interface CampaignSendTestParams { subscribers?: Array; } export interface CampaignUpdateStatusParams { status?: 'scheduled' | 'running' | 'paused' | 'cancelled'; } export declare namespace Campaigns { export { type Campaign as Campaign, type CampaignInput as CampaignInput, type CampaignRetrieveResponse as CampaignRetrieveResponse, type CampaignListResponse as CampaignListResponse, type CampaignCreateParams as CampaignCreateParams, type CampaignUpdateParams as CampaignUpdateParams, type CampaignListParams as CampaignListParams, type CampaignSendTestParams as CampaignSendTestParams, type CampaignUpdateStatusParams as CampaignUpdateStatusParams, }; }