// Type definitions for postmark 1.3 // Project: http://wildbit.github.io/postmark.js // Definitions by: Ben Bayard // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 interface PostmarkError { status: number; message: string; code: number; } interface PostmarkMessageHeader { Name: string; Value: string; } interface PostmarkAttachment { Content: string; Name: string; ContentType: string; } interface Filter { count: number; offset: number; } interface PostmarkMessageWithTemplate { To: string; From: string; Cc?: string; Bcc?: string; ReplyTo?: string; TemplateId?: string; TemplateModel?: any; Tag?: string; Subject?: string; TrackOpens?: boolean; TrackLinks?: string; Headers?: PostmarkMessageHeader[]; } interface PostmarkMessage { To: string; From: string; Cc?: string; Bcc?: string; ReplyTo?: string; Tag?: string; Subject?: string; HTMLBody?: string; TextBody?: string; TrackOpens?: boolean; TrackLinks?: string; Headers?: PostmarkMessageHeader[]; Attachments?: PostmarkAttachment[]; } interface Sender { Color: string; RawEmailEnabled: boolean; SmtpApiActivated: boolean; DeliveryHookUrl: string; InboundHookUrl: string; BounceHookUrl: boolean; IncludeBounceContentInHook: boolean; OpenHookUrl: boolean; PostFirstOpenOnly: boolean; TrackOpens: boolean; TrackLinks: string; InboundDomain: string; InboundSpamThreshold: number; } interface TemplateValidator { Subject: string; HtmlBody: string; TextBody: string; TestRenderModel?: T; InlineCssForHtmlTestRender?: boolean; } type PostmarkCallback = ((e: PostmarkError, ret: T) => void) | undefined; interface SimpleOptions { ssl: boolean; requestHost: string; } interface Options extends SimpleOptions { requestFactory( options: SimpleOptions ): ( path?: string, type?: string, content?: PostmarkMessage, callback?: PostmarkCallback ) => any; } declare class Client { constructor(serverKey: string, options?: Partial); send(message: PostmarkMessage, callback: PostmarkCallback): void; sendEmailWithTemplate( message: PostmarkMessageWithTemplate, callback: PostmarkCallback ): void; batch(message: PostmarkMessage[], callback: PostmarkCallback): void; sendEmail(message: PostmarkMessage, callback: PostmarkCallback): void; sendEmailBatch(message: PostmarkMessage[], callback: PostmarkCallback): void; getDeliveryStatistics(callback: PostmarkCallback): void; getBounces(filter: Partial, callback: PostmarkCallback): void; getBounce(id: number, callback: PostmarkCallback): void; getBounceDump(id: number, callback: PostmarkCallback): void; activateBounce(id: number, callback: PostmarkCallback): void; getBounceTags(callback: PostmarkCallback): void; getServer(callback: PostmarkCallback): void; editServer(options: Pick, callback: PostmarkCallback): void; getOutboundMessages(filter: Partial, callback: PostmarkCallback): void; getOutboundMessageDetails(id: number, callback: PostmarkCallback): void; getMessageOpens(filter: Partial, callback: PostmarkCallback): void; getMessageOpensForSingleMessage(id: number, filter: Partial, callback: PostmarkCallback): void; getInboundMessages(filter: Partial, callback: PostmarkCallback): void; getInboundMessageDetails(id: number, callback: PostmarkCallback): void; bypassBlockedInboundMessage(id: number, callback: PostmarkCallback): void; retryInboundHookForMessage(id: number, callback: PostmarkCallback): void; getOuboundOverview(filter: Partial, callback: PostmarkCallback): void; validateTemplate(templateObject: TemplateValidator, callback: PostmarkCallback): void; } interface CreateSignature { FromEmail: string; Name: string; ReplyToEmail?: string; ReturnPathDomain?: string; } interface CreateServer { Name: string; Color?: string; RawEmailEnabled?: boolean; SmtpApiActivated?: boolean; DeliveryHookUrl?: string; InboundHookUrl?: string; BounceHookUrl?: string; IncludeBounceContentInHook?: boolean; OpenHookUrl?: string; PostFirstOpenOnly?: boolean; TrackOpens?: boolean; TrackLinks?: string; InboundDomain?: string; InboundSpamThreshold?: number; } interface CreateDomain { Name: string; ReturnPathDomain?: string; } declare class AdminClient { constructor(apiKey: string, options: Partial); listSenderSignatures(query: Partial, callback: PostmarkCallback): void; createSenderSignature(options: CreateSignature, callback: PostmarkCallback): void; editSenderSignature( id: number, options: Partial>, callback: PostmarkCallback ): void; deleteSenderSignature(id: number, callback: PostmarkCallback): void; resendSenderSignatureConfirmation(id: number, callback: PostmarkCallback): void; verifySenderSignatureSPF(id: number, callback: PostmarkCallback): void; requestNewDKIMForSenderSignature(id: number, callback: PostmarkCallback): void; getServer(id: number, callback: PostmarkCallback): void; createServer(options: CreateServer, callback: PostmarkCallback): void; editServer( id: number, options: Pick, callback: PostmarkCallback ): void; deleteServer(id: number, callback: PostmarkCallback): void; listServers(query: Partial, callback: PostmarkCallback): void; listDomains(query: Partial, callback: PostmarkCallback): void; getDomain(id: number, callback: PostmarkCallback): void; createDomain( options: CreateDomain, callback: PostmarkCallback ): void; editDomain( id: number, options: Pick, callback: PostmarkCallback ): void; deleteDomain(id: number, callback: PostmarkCallback): void; verifyDomainSPF(id: number, callback: PostmarkCallback): void; rotateDKIMForDomain(id: number, callback: PostmarkCallback): void; } interface ClientClass { new(serverKey: string, options: Partial): Client; } interface AdminClientClass { new(apiKey: string, options: Partial): AdminClient; } interface Postmark { (apiKey: string, options: Partial): void; defaults: Options; Client: ClientClass; AdminClient: AdminClientClass; } declare var postmark: Postmark; export = postmark;