lincd-quora-ads
Version:
An API wrapper for Quora's Ads API.
177 lines (159 loc) • 4.11 kB
text/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[];
}