// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import { APIResource } from '../core/resource'; import * as SubscribersAPI from './subscribers'; 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 Subscribers extends APIResource { /** * Create a new subscriber */ create(body: SubscriberCreateParams, options?: RequestOptions): APIPromise { return this._client.post('/subscribers', { body, ...options }); } /** * Get a specific subscriber */ retrieve(id: number, options?: RequestOptions): APIPromise { return this._client.get(path`/subscribers/${id}`, options); } /** * Update a subscriber */ update(id: number, body: SubscriberUpdateParams, options?: RequestOptions): APIPromise { return this._client.put(path`/subscribers/${id}`, { body, ...options, headers: buildHeaders([{ Accept: '*/*' }, options?.headers]), }); } /** * Get all subscribers */ list( query: SubscriberListParams | null | undefined = {}, options?: RequestOptions, ): APIPromise { return this._client.get('/subscribers', { query, ...options }); } /** * Delete a subscriber */ delete(id: number, options?: RequestOptions): APIPromise { return this._client.delete(path`/subscribers/${id}`, { ...options, headers: buildHeaders([{ Accept: '*/*' }, options?.headers]), }); } /** * Bulk update subscriber lists */ bulkUpdateLists(body: SubscriberBulkUpdateListsParams, options?: RequestOptions): APIPromise { return this._client.put('/subscribers/lists', { body, ...options, headers: buildHeaders([{ Accept: '*/*' }, options?.headers]), }); } } export interface Subscriber { id?: number; attribs?: unknown; created_at?: string; email?: string; lists?: Array; name?: string; status?: 'enabled' | 'disabled' | 'blocklisted'; updated_at?: string; uuid?: string; } export namespace Subscriber { export interface List { id?: number; name?: string; subscription_status?: 'confirmed' | 'unconfirmed' | 'unsubscribed'; uuid?: string; } } export interface SubscriberInput { email: string; attribs?: unknown; lists?: Array; name?: string; preconfirm_subscriptions?: boolean; status?: 'enabled' | 'disabled' | 'blocklisted'; } export interface SubscriberCreateResponse { data?: Subscriber; } export interface SubscriberRetrieveResponse { data?: Subscriber; } export interface SubscriberListResponse { data?: SubscriberListResponse.Data; } export namespace SubscriberListResponse { export interface Data { page?: number; per_page?: number; results?: Array; total?: number; } } export interface SubscriberCreateParams { email: string; attribs?: unknown; lists?: Array; name?: string; preconfirm_subscriptions?: boolean; status?: 'enabled' | 'disabled' | 'blocklisted'; } export interface SubscriberUpdateParams { email: string; attribs?: unknown; lists?: Array; name?: string; preconfirm_subscriptions?: boolean; status?: 'enabled' | 'disabled' | 'blocklisted'; } export interface SubscriberListParams { /** * Filter by list ID */ list_id?: number; page?: number; per_page?: number; /** * Search query (searches name and email) */ query?: string; /** * Filter by subscription status */ status?: 'enabled' | 'disabled' | 'blocklisted'; } export interface SubscriberBulkUpdateListsParams { /** * Action to perform */ action?: 'add' | 'remove' | 'unsubscribe'; /** * Subscriber IDs */ ids?: Array; status?: 'confirmed' | 'unconfirmed' | 'unsubscribed'; /** * Target list IDs */ target_list_ids?: Array; } export declare namespace Subscribers { export { type Subscriber as Subscriber, type SubscriberInput as SubscriberInput, type SubscriberCreateResponse as SubscriberCreateResponse, type SubscriberRetrieveResponse as SubscriberRetrieveResponse, type SubscriberListResponse as SubscriberListResponse, type SubscriberCreateParams as SubscriberCreateParams, type SubscriberUpdateParams as SubscriberUpdateParams, type SubscriberListParams as SubscriberListParams, type SubscriberBulkUpdateListsParams as SubscriberBulkUpdateListsParams, }; }