UNPKG

@industriousoffice/mailchimp_marketing

Version:

This is a modified version of the official Node client library for the Mailchimp Marketing API meant to be usesd for both production and testing purposes.

220 lines (189 loc) 5.53 kB
// Type definitions for @mailchimp/mailchimp_marketing 3.0 // Project: https://github.com/mailchimp/mailchimp-client-lib-codegen // Definitions by: Jan Müller <https://github.com/rattkin> // Jérémy Barbet <https://github.com/jeremybarbet> // Daniel Castro <https://github.com/odanieldcs> // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // API Documentation: https://mailchimp.com/developer/marketing/api/ export function setConfig(config: Config): void; export interface Config { apiKey?: string | undefined; accessToken?: string | undefined; server?: string | undefined; } export interface Options { skipMergeValidation: boolean; } export type Status = 'subscribed' | 'unsubscribed' | 'cleaned' | 'pending' | 'transactional'; export interface Body { status?: Status | undefined; email_type?: string | undefined; merge_fields?: Record<string, any> | undefined; interests?: Record<string, any> | undefined; language?: string | undefined; vip?: boolean | undefined; location?: | { latitude: number; logitude: number; } | undefined; marketing_permissions?: | Array<{ marketing_permission_id: string; enabled: boolean; }> | undefined; ip_signup?: string | undefined; timestamp_signup?: string | undefined; ip_opt?: string | undefined; timestamp_opt?: string | undefined; } export interface AddListMemberBody extends Body { email_address: string; tags?: string[] | undefined; } export interface UpdateListMemberBody extends Body { email_address?: string | undefined; } export interface SetListMemberBody extends Body { email_address: string; status_if_new: Status; } export type StatusTag = 'active' | 'inactive'; export interface TagBody { name: string; status: StatusTag; } export interface MemberTagsBody { tags: TagBody[]; } /*~ If there are types, properties, or methods inside dotted names *~ of the module, declare them inside a 'namespace'. */ export namespace lists { /*~ For example, given this definition, someone could write: *~ import { subProp } from 'yourModule'; *~ subProp.foo(); *~ or *~ import * as yourMod from 'yourModule'; *~ yourMod.subProp.foo(); */ function setListMember( listId: string, subscriberHash: string, body: SetListMemberBody, opts?: Options, ): Promise<MembersSuccessResponse | MemberErrorResponse>; function getListMember( listId: string, subscriberHash: string, opts?: Options ): Promise<MembersSuccessResponse | MemberErrorResponse>; function addListMember( listId: string, body: AddListMemberBody, opts?: Options ): Promise<MembersSuccessResponse | MemberErrorResponse>; function updateListMember( listId: string, subscriberHash: string, body: UpdateListMemberBody, opts?: Options, ): Promise<MembersSuccessResponse | MemberErrorResponse>; function deleteListMember(listId: string, subscriberHash: string): Promise<void>; function deleteListMemberPermanent(listId: string, subscriberHash: string): Promise<void>; function updateListMemberTags(listId: string, subscriberHash: string, body: any): Promise<void>; } export interface MembersSuccessResponse { id: string; email_address: string; unique_email_id: string; contact_id: string; full_name: string; web_id: number; email_type: string; status: string; unsubscribe_reason: string; consents_to_one_to_one_messaging: boolean; merge_fields: Record<string, any>; interests: Record<string, any>; stats: MemberStats; ip_signup: string; timestamp_signup: string; ip_opt: string; timestamp_opt: string; member_rating: string; last_changed: string; language: string; vip: boolean; email_client: string; location: FullMemberLocation; marketing_permissions: MemberMarketingPermissions[]; last_note: MemberLastNote; source: string; tags_count: number; tags: Tags[]; list_id: string; _links: Links[]; } export interface MemberStats { avg_open_rate: number; avg_click_rate: number; ecommerce_data: MemberEcommerceData; } export interface MemberEcommerceData { total_revenue: number; number_of_orders: number; currency_code: number; } export interface MemberLocation { latitude: number; logitude: number; } export interface FullMemberLocation extends MemberLocation { gmtoff: number; dstoff: number; country_code: string; timezone: string; region: string; } export interface MemberMarketingPermissions extends MemberMarketingPermissionsInput { text: string; } export interface MemberMarketingPermissionsInput { marketing_permission_id: string; enabled: boolean; } export interface MemberLastNote { note_id: number; created_at: string; created_by: string; note: string; } export interface Tags { id: number; name: string; } export type HttpMethod = | "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "OPTIONS" | "HEAD"; export interface Links { rel: string; href: string; method: HttpMethod; targetSchema: string; schema: string; } export interface MemberErrorResponse { type: string; title: string; status: number; detail: string; instance: string; }