neverbounce
Version:
An API wrapper for the NeverBounce API
319 lines (318 loc) • 7.02 kB
TypeScript
/**
* Common type definitions for the NeverBounce API
*/
/**
* NeverBounce API Configuration
*/
export interface NeverBounceConfig {
apiVersion: string;
apiKey: string | null;
timeout: number;
opts: RequestOptions;
}
/**
* HTTP Request Options
*/
export interface RequestOptions {
acceptedType: string;
host: string;
port: number;
headers: Record<string, string>;
path?: string;
method?: string;
}
/**
* API Response
*/
export interface ApiResponse {
status: string;
message?: string;
execution_time?: number;
[key: string]: any;
}
/**
* Verification Result Codes
*/
export declare enum VerificationResult {
Valid = 0,
Invalid = 1,
Disposable = 2,
Catchall = 3,
Unknown = 4
}
/**
* Verification Flags
*/
export interface VerificationFlags {
has_dns: string;
has_dns_mx: string;
bad_syntax: string;
free_email_host: string;
profanity: string;
role_account: string;
disposable_email: string;
government_host: string;
academic_host: string;
military_host: string;
international_host: string;
squatter_host: string;
spelling_mistake: string;
bad_dns: string;
temporary_dns_error: string;
connect_fails: string;
accepts_all: string;
contains_alias: string;
contains_subdomain: string;
smtp_connectable: string;
spamtrap_network: string;
}
/**
* Job Input Types
*/
export declare enum JobInputType {
RemoteUrl = "remote_url",
Supplied = "supplied"
}
/**
* Job Status Types
*/
export declare enum JobStatus {
UnderReview = "under_review",
Queued = "queued",
Failed = "failed",
Complete = "complete",
Running = "running",
Parsing = "parsing",
Waiting = "waiting",
WaitingAnalyzed = "waiting_analyzed",
Uploading = "uploading"
}
/**
* Error Types
*/
export declare enum ErrorType {
AuthError = "auth_failure",
BadReferrerError = "bad_referrer",
GeneralError = "general_failure",
ThrottleError = "throttle_triggered"
}
/**
* Single Verification Request
*/
export interface SingleVerificationRequest {
email: string;
address_info?: boolean;
credits_info?: boolean;
timeout?: number;
}
/**
* Single Verification Response
*/
export interface SingleVerificationResponse extends ApiResponse {
result: number;
flags: string[];
suggested_correction?: string;
retry_token?: string;
address_info?: {
original: string;
normalized: string;
addr: string;
alias: string;
host: string;
fqdn: string;
domain: string;
subdomain: string;
tld: string;
};
credits_info?: {
paid_credits_used: number;
free_credits_used: number;
paid_credits_remaining: number;
free_credits_remaining: number;
};
}
/**
* Account Info Response
*/
export interface AccountInfoResponse extends ApiResponse {
billing_type: string;
credits: {
paid_credits_used: number;
free_credits_used: number;
paid_credits_remaining: number;
free_credits_remaining: number;
};
job_counts: {
completed: number;
processing: number;
queued: number;
under_review: number;
};
}
/**
* POE Confirmation Request
*/
export interface POEConfirmationRequest {
email: string;
transaction_id: string;
confirmation_token: string;
result: number;
}
/**
* POE Confirmation Response
*/
export interface POEConfirmationResponse extends ApiResponse {
token_confirmed: boolean;
token_age: number;
}
/**
* Job Creation Request
*/
export interface JobCreationRequest {
input: string[];
input_location?: string;
auto_parse?: boolean | null;
auto_start?: boolean | null;
run_sample?: boolean | null;
filename?: string;
}
/**
* Job Creation Response
*/
export interface JobCreationResponse extends ApiResponse {
job_id: number;
}
/**
* Job Status Response
*/
export interface JobStatusResponse extends ApiResponse {
id: number;
filename: string;
created_at: string;
started_at: string | null;
finished_at: string | null;
total: {
processed: number;
valid: number;
invalid: number;
catchall: number;
disposable: number;
unknown: number;
duplicates: number;
bad_syntax: number;
};
job_status: string;
bounce_estimate: number | null;
percent_complete: number;
failure_reason: string | null;
}
/**
* Job Results Request
*/
export interface JobResultsRequest {
job_id: number;
page?: number;
per_page?: number;
include_verification_time?: boolean;
}
/**
* Job Results Response
*/
export interface JobResultsResponse extends ApiResponse {
total_results: number;
total_pages: number;
query: {
job_id: number;
valids: boolean;
invalids: boolean;
catchalls: boolean;
disposables: boolean;
unknowns: boolean;
page: number;
items_per_page: number;
};
results: Array<{
data: Record<string, any>;
verification: {
result: number;
flags: string[];
suggested_correction: string | null;
address_info: {
original: string;
normalized: string;
addr: string;
alias: string;
host: string;
fqdn: string;
domain: string;
subdomain: string;
tld: string;
};
verification_time?: number;
};
}>;
}
/**
* Job Search Request
*/
export interface JobSearchRequest {
job_id?: number;
page?: number;
per_page?: number;
}
/**
* Job Search Response
*/
export interface JobSearchResponse extends ApiResponse {
total_results: number;
total_pages: number;
query: {
page: number;
items_per_page: number;
};
results: Array<{
id: number;
job_status: string;
filename: string;
created_at: string;
started_at: string | null;
finished_at: string | null;
total: {
processed: number;
valid: number;
invalid: number;
catchall: number;
disposable: number;
unknown: number;
duplicates: number;
bad_syntax: number;
};
bounce_estimate: number | null;
percent_complete: number;
failure_reason: string | null;
}>;
}
/**
* Job Delete Response
*/
export interface JobDeleteResponse extends ApiResponse {
job_id: number;
}
/**
* Job Download Request
*/
export interface JobDownloadRequest {
job_id: number;
}
/**
* Resource Class Constructor
*/
export interface ResourceConstructor {
new (client: any): any;
}
/**
* Resources Map
*/
export interface ResourcesMap {
[key: string]: ResourceConstructor;
}