lincd-quora-ads
Version:
An API wrapper for Quora's Ads API.
116 lines (115 loc) • 3.85 kB
TypeScript
import { Account as Acc } from "lincd-ads/lib/shapes/Account";
import { Ad } from "lincd-ads/lib/shapes/Ad";
import { AdSet } from "lincd-ads/lib/shapes/AdSet";
import { Campaign } from "lincd-ads/lib/shapes/Campaign";
type attributionWindows = "CLICK_28_DAY" | "VIEW_1_DAY";
type conversionTypes = "Generic" | "AppInstall" | "Purchase" | "GenerateLead" | "CompleteRegistration" | "AddPaymentInfo" | "AddToCart" | "AddToWishlist" | "InitiateCheckout" | "Search";
export type field = "accountId" | "accountName" | "accountCurrency" | "adId" | "adName" | "adSetId" | "adSetName" | "bidAmount" | "campaignId" | "campaignName" | "clicks" | "conversions" | "conversionRate" | "cpc" | "ctr" | "dailyBudget" | "impressions" | "lifetimeBudget" | "landingURL" | "spend" | "status" | "leadsGenerated" | "formCompletionRate" | "costPerLead";
type granularity = "DAY" | "TOTAL";
export type level = "AD" | "AD_SET" | "CAMPAIGN" | "ACCOUNT";
type order = "ASCENDING" | "DESCENDING";
type presetTimeRange = "LAST_30_DAYS" | "TODAY" | "YESTERDAY" | "THIS_MONTH" | "LAST_MONTH" | "LAST_7_DAYS" | "LAST_14_DAYS" | "ALL_TIME";
type statusResponse = "RUNNING";
export interface QuoraOptions {
attributionWindows?: attributionWindows[];
conversionTypes?: conversionTypes[];
endDate?: Date;
fields?: field[];
granularity?: granularity;
level?: level;
limit?: number;
offset?: number;
order?: order;
presetTimeRange?: presetTimeRange;
sort?: field;
sortConversionType?: conversionTypes;
startDate?: Date;
summary?: boolean;
}
interface ConversionsResponse {
Generic?: number;
AppInstall?: number;
Purchase?: number;
GenerateLead?: number;
CompleteRegistration?: number;
AddPaymentInfo?: number;
AddToCart?: number;
AddToWishlist?: number;
InitiateCheckout?: number;
Search?: number;
}
interface ConversionRateResponse {
Generic?: number;
AppInstall?: number;
Purchase?: number;
GenerateLead?: number;
CompleteRegistration?: number;
AddPaymentInfo?: number;
AddToCart?: number;
AddToWishlist?: number;
InitiateCheckout?: number;
Search?: number;
}
interface Account {
accountId?: number;
accountName?: string;
}
export interface AccountResponse {
data?: Account[];
}
export interface DataResponse {
clicks?: number;
conversions?: ConversionsResponse;
conversionRate?: ConversionRateResponse;
cpc?: number;
ctr?: number;
impressions?: number;
spend?: number;
leadsGenerated?: number;
formCompletionRate?: number;
costPerLead?: number;
startDate?: string;
endDate?: string;
accountId?: number;
accountName?: string;
accountCurrency?: string;
adId?: number;
adName?: string;
adSetId?: number;
adSetName?: string;
bidAmount?: number;
campaignId?: number;
campaignName?: string;
dailyBudget?: number;
lifetimeBudget?: number;
landingURL?: string;
status?: statusResponse;
}
export interface PublicDataResponse {
id?: string;
publicName?: string;
}
export interface Paging {
totalResults: number;
next?: string;
previous?: string;
}
export type ResolvedQuoraResponse<T = DataResponse[]> = {
data: T;
endDate: string;
startDate: string;
paging?: Paging;
};
type QuoraJSON<T> = Promise<ResolvedQuoraResponse<T>>;
export interface QuoraResponse<T = DataResponse[]> extends Response {
json(): QuoraJSON<T>;
}
export type QuoraAPICall = (id: number, options?: QuoraOptions) => Promise<QuoraResponse>;
export type ResponseMapping = (string | number | [])[];
export interface AccountData {
account: Acc;
ads: Ad[];
adSets: AdSet[];
campaigns: Campaign[];
}
export {};