import Response from "../util/Response"; import { AxiosPromise, AxiosProgressEvent } from "axios"; declare class Ads { /** * List Ad Campaigns. * * Example usage: * Ads.listCampaigns({ community: 'uuid-of-community', platform: 'tiktok' }) * * @param params Query parameters (e.g. community, platform, advertiser_id, etc.) * @returns A paginated list of AdCampaign resources */ static listCampaigns(params?: Record): AxiosPromise>; /** * Create a new Ad Campaign. * * @param data The Ad Campaign payload (JSON) to create * @param params Optional query parameters * @returns The newly created AdCampaign resource */ static createCampaign(data?: object, params?: Record): AxiosPromise>; /** * Retrieve a single Ad Campaign by ID. * * @param campaign_id The UUID of the campaign to fetch * @param params Optional query parameters * @returns The requested AdCampaign resource */ static viewCampaign(campaign_id: string, params?: Record): AxiosPromise>; /** * Update an existing Ad Campaign by ID. * * @param campaign_id The UUID of the campaign to update * @param data The partial or full updated AdCampaign payload * @param params Optional query parameters * @returns The updated AdCampaign resource */ static updateCampaign(campaign_id: string, data?: object, params?: Record): AxiosPromise>; /** * Delete an Ad Campaign by ID. * * @param campaign_id The UUID of the campaign to delete * @param params Optional query parameters * @returns A 204 No Content response on success */ static deleteCampaign(campaign_id: string, params?: Record): AxiosPromise>; /** * List Ad Groups (ad sets) for a specific campaign. * * Example usage: * Ads.listGroups('some-campaign-uuid', { promotion_type: 'WEBSITE' }) * * @param campaign_id The UUID of the parent Ad Campaign * @param params Optional query parameters (e.g. promotion_type, operation_status, etc.) * @returns A paginated list of AdGroup resources */ static listGroups(campaign_id: string, params?: Record): AxiosPromise>; /** * Create a new Ad Group (ad set) under a specific campaign. * * @param campaign_id The UUID of the parent Ad Campaign * @param data The AdGroup creation payload * @param params Optional query parameters * @returns The newly created AdGroup resource */ static createGroup(campaign_id: string, data?: object, params?: Record): AxiosPromise>; /** * Retrieve a single Ad Group by ID, under a specific campaign. * * @param campaign_id The UUID of the parent Ad Campaign * @param group_id The UUID of the AdGroup to fetch * @param params Optional query parameters * @returns The requested AdGroup resource */ static viewGroup(campaign_id: string, group_id: string, params?: Record): AxiosPromise>; /** * Update an Ad Group (ad set) by ID. * * @param campaign_id The UUID of the parent Ad Campaign * @param group_id The UUID of the AdGroup to update * @param data Updated fields for the AdGroup * @param params Optional query parameters * @returns The updated AdGroup resource */ static updateGroup(campaign_id: string, group_id: string, data?: object, params?: Record): AxiosPromise>; /** * Delete an Ad Group (ad set) by ID, under a specific campaign. * * @param campaign_id The UUID of the parent Ad Campaign * @param group_id The UUID of the AdGroup to delete * @param params Optional query parameters * @returns A 204 No Content response on success */ static deleteGroup(campaign_id: string, group_id: string, params?: Record): AxiosPromise>; /** * List Ads (creatives). * * Supports filtering by ad_group_id, social_media_post_id, operation_status, etc. * * @param params Optional query parameters for filtering/sorting * @returns A paginated list of Ad resources */ static listAds(params?: Record): AxiosPromise>; /** * Create a new Ad (creative). * * @param data The Ad creation payload * @param params Optional query parameters * @returns The newly created Ad resource */ static createAd(data?: object, params?: Record): AxiosPromise>; /** * Retrieve a single Ad by ID. * * @param ad_id The UUID of the Ad to fetch * @param params Optional query parameters * @returns The requested Ad resource */ static viewAd(ad_id: string, params?: Record): AxiosPromise>; /** * Update an existing Ad by ID. * * @param ad_id The UUID of the Ad to update * @param data The partial or full Ad payload * @param params Optional query parameters * @returns The updated Ad resource */ static updateAd(ad_id: string, data?: object, params?: Record): AxiosPromise>; /** * Delete an Ad by ID. * * @param ad_id The UUID of the Ad to delete * @param params Optional query parameters * @returns A 204 No Content response on success */ static deleteAd(ad_id: string, params?: Record): AxiosPromise>; /** * List triggers defined for a given Ad Group. * * @param campaign_id The UUID of the parent Ad Campaign * @param group_id The UUID of the Ad Group * @param params Optional query parameters (pagination, etc.) * @returns A paginated list of AdGroupTrigger resources */ static listTriggers(campaign_id: string, group_id: string, params?: Record): AxiosPromise>; /** * Create a new Ad Group Trigger. * * @param campaign_id The UUID of the parent Ad Campaign * @param group_id The UUID of the Ad Group * @param data The trigger creation payload * @param params Optional query parameters * @returns The newly created AdGroupTrigger resource */ static createTrigger(campaign_id: string, group_id: string, data?: object, params?: Record): AxiosPromise>; /** * Retrieve a single Ad Group Trigger by ID. * * @param campaign_id The UUID of the parent Ad Campaign * @param group_id The UUID of the Ad Group * @param trigger_id The UUID of the trigger * @param params Optional query parameters * @returns The requested AdGroupTrigger resource */ static viewTrigger(campaign_id: string, group_id: string, trigger_id: string, params?: Record): AxiosPromise>; /** * Update an existing Ad Group Trigger by ID. * * @param campaign_id The UUID of the parent Ad Campaign * @param group_id The UUID of the Ad Group * @param trigger_id The UUID of the trigger to update * @param data Updated trigger fields * @param params Optional query parameters * @returns The updated AdGroupTrigger resource */ static updateTrigger(campaign_id: string, group_id: string, trigger_id: string, data?: object, params?: Record): AxiosPromise>; /** * Delete an Ad Group Trigger by ID. * * @param campaign_id The UUID of the parent Ad Campaign * @param group_id The UUID of the Ad Group * @param trigger_id The UUID of the trigger * @param params Optional query parameters * @returns A 204 No Content response on success */ static deleteTrigger(campaign_id: string, group_id: string, trigger_id: string, params?: Record): AxiosPromise>; /** * List platform-level businesses for the given campaign ID, * as defined by /ads/campaigns/{id}/businesses on the backend. * * Typically relevant for Reddit (list businesses), or might return a * "not supported" message for Meta/TikTok. * * @param campaign_id The UUID of the Ad Campaign * @param params Optional query parameters, e.g. page.size, etc. * @returns A response object with data (business list or messages) */ static listCampaignBusinesses(campaign_id: string, params?: Record): AxiosPromise>; /** * List Ad Accounts for the given campaign ID, * as defined by /ads/campaigns/{id}/ad_accounts on the backend. * * E.g. for Reddit, you can pass ?business_id= to get business-level ad accounts, * or for Twitter, it might just return a user’s ad accounts, etc. * * @param campaign_id The UUID of the Ad Campaign * @param params Optional query parameters, e.g. business_id, page.size, etc. * @returns A response object with data (ad account list) */ static listCampaignAdAccounts(campaign_id: string, params?: Record): AxiosPromise>; /** * List funding instruments for the given campaign ID, * as defined by /ads/campaigns/{id}/funding_instruments on the backend. * * For Twitter, pass ?account_id=... * For Reddit, pass ?ad_account_id=... or ?business_id=... * * @param campaign_id The UUID of the Ad Campaign * @param params Optional query parameters * @returns A response object with data (funding instruments) */ static listCampaignFundingInstruments(campaign_id: string, params?: Record): AxiosPromise>; /** * GET /ads/reddit/targeting/carriers * * Example usage: * Ads.listRedditCarriers({ scheduler_id: 'uuid-of-scheduler', 'page.size': 50 }) */ static listRedditCarriers(params?: Record): AxiosPromise>; /** * GET /ads/reddit/targeting/communities?names=sub1,sub2 */ static listRedditCommunities(params?: Record): AxiosPromise>; /** * GET /ads/reddit/targeting/communities/search?query=xyz */ static searchRedditCommunities(params?: Record): AxiosPromise>; /** * GET /ads/reddit/targeting/devices */ static listRedditDevices(params?: Record): AxiosPromise>; /** * GET /ads/reddit/targeting/geolocations */ static listRedditGeolocations(params?: Record): AxiosPromise>; /** * GET /ads/reddit/targeting/interests */ static listRedditInterests(params?: Record): AxiosPromise>; /** * GET /ads/reddit/targeting/third_party_audiences */ static listRedditThirdPartyAudiences(params?: Record): AxiosPromise>; /** * Sync an Ad Campaign with the remote platform * * @param campaign_id The UUID of the campaign to sync * @param params Optional query parameters * @returns The synced AdCampaign resource */ static syncCampaign(campaign_id: string, params?: Record): AxiosPromise>; /** * Sync an Ad Group with the remote platform * * @param campaign_id The UUID of the parent campaign * @param group_id The UUID of the ad group to sync * @param params Optional query parameters * @returns The synced AdGroup resource */ static syncGroup(campaign_id: string, group_id: string, params?: Record): AxiosPromise>; static listRedditAdPosts(params?: Record): AxiosPromise>; /** Create a Reddit ad-style social-media post */ static createRedditAdPost(data?: object, params?: Record): AxiosPromise>; /** Retrieve a single Reddit ad-style social-media post */ static viewRedditAdPost(post_id: string, params?: Record): AxiosPromise>; /** Update a Reddit ad-style social-media post */ static updateRedditAdPost(post_id: string, data?: object, params?: Record): AxiosPromise>; static listTwitterAdPosts(params?: Record): AxiosPromise>; static createTwitterAdPost(data?: object, params?: Record): AxiosPromise>; static viewTwitterAdPost(post_id: string, params?: Record): AxiosPromise>; static updateTwitterAdPost(post_id: string, data?: object, params?: Record): AxiosPromise>; static deleteTwitterAdPost(post_id: string, params?: Record): AxiosPromise>; static listFacebookAdPosts(params?: Record): AxiosPromise>; static createFacebookAdPost(data?: object, params?: Record): AxiosPromise>; static viewFacebookAdPost(post_id: string, params?: Record): AxiosPromise>; static updateFacebookAdPost(post_id: string, data?: object, params?: Record): AxiosPromise>; static deleteFacebookAdPost(post_id: string, params?: Record): AxiosPromise>; static tiktokUploadImageFile(file: File, data?: object, params?: Record, onUploadProgress?: (progressEvent: AxiosProgressEvent) => void): AxiosPromise>; static tiktokUploadVideoFile(file: File, data?: object, params?: Record, onUploadProgress?: (progressEvent: AxiosProgressEvent) => void): AxiosPromise>; static tiktokUploadMusicFile(file: File, data?: object, params?: Record, onUploadProgress?: (progressEvent: AxiosProgressEvent) => void): AxiosPromise>; static tiktokUploadImageBlob(blob: Blob, data?: object, params?: Record, onUploadProgress?: (progressEvent: AxiosProgressEvent) => void): AxiosPromise>; static tiktokUploadVideoBlob(blob: Blob, data?: object, params?: Record, onUploadProgress?: (progressEvent: AxiosProgressEvent) => void): AxiosPromise>; static tiktokUploadMusicBlob(blob: Blob, data?: object, params?: Record, onUploadProgress?: (progressEvent: AxiosProgressEvent) => void): AxiosPromise>; static tiktokGetMediaInfo(params: Record): AxiosPromise>; /** * Sync an Ad with the remote platform. * * @param ad_id UUID of the ad to sync * @param params Optional query parameters * @returns The synced Ad resource */ static syncAd(ad_id: string, params?: Record): AxiosPromise>; /** * POST /ads/facebook/targeting/search */ static facebookTargetingSearch(data: Record, params?: Record): AxiosPromise>; /** * GET /ads/facebook/targeting/geo_search */ static facebookGeoSearch(params: Record): AxiosPromise>; /** * GET /ads/facebook/targeting/option_status */ static facebookTargetingOptionStatus(params: Record): AxiosPromise>; /** * POST /ads/facebook/targeting/suggestions */ static facebookTargetingSuggestions(data: Record, params?: Record): AxiosPromise>; /** * GET /ads/facebook/targeting/browse */ static facebookTargetingBrowse(params: Record): AxiosPromise>; /** * POST /ads/facebook/targeting/validation */ static facebookTargetingValidation(data: Record, params?: Record): AxiosPromise>; /** * GET /ads/facebook/targeting/delivery_estimate */ static facebookDeliveryEstimate(params: Record): AxiosPromise>; static tiktokTargetingSearch(data: object, params?: Record): AxiosPromise>; static tiktokContextualTags(params?: Record): AxiosPromise>; static tiktokRecommendHashtags(params?: Record): AxiosPromise>; static tiktokListCarriers(params?: Record): AxiosPromise>; static tiktokListInterestCategories(params?: Record): AxiosPromise>; static tiktokListActionCategories(params?: Record): AxiosPromise>; static tiktokListContentExclusions(params?: Record): AxiosPromise>; static tiktokListRegions(params?: Record): AxiosPromise>; static tiktokGetTargetingInfo(data: object, params?: Record): AxiosPromise>; static tiktokListLanguages(advertiser_id: string, params?: Record): AxiosPromise>; static tiktokRecommendInterestKeywords(params: Record): AxiosPromise>; /** * GET /ads/tiktok/targeting/hashtag_info */ static tiktokHashtagInfo(params: Record): AxiosPromise>; /** * GET /ads/tiktok/targeting/contextual_tag_info */ static tiktokContextualTagInfo(params: Record): AxiosPromise>; /** * GET /ads/tiktok/targeting/content_exclusion_info */ static tiktokContentExclusionInfo(params: Record): AxiosPromise>; static listTwitterTargetingCriteria(params?: Record): AxiosPromise>; static getTwitterTargetingCriterion(criterion_id: string, params?: Record): AxiosPromise>; static createTwitterTargetingCriterion(data?: object, params?: Record): AxiosPromise>; static deleteTwitterTargetingCriterion(criterion_id: string, params?: Record): AxiosPromise>; static twitterBatchTargetingCriteria(data: object[], params?: Record): AxiosPromise>; static lookupTwitterTargeting(resource: string, params?: Record): AxiosPromise>; /** * Look up Twitter location targeting options. * * Kept as a named convenience method for frontend compatibility while the * generic lookupTwitterTargeting method remains the canonical route helper. */ static listTwitterTargetingLocations(params?: Record): AxiosPromise>; static twitterTargetingSuggestions(params: Record): AxiosPromise>; /** * Deep-sync a campaign tree (campaign → groups → ads) with its remote platform. * * @param campaign_id UUID of the campaign to sync * @param params Optional query params * @returns Fully-hydrated AdCampaign resource */ static syncCampaignTree(campaign_id: string, params?: Record): AxiosPromise>; /** * Deep-sync all the campaigns for a scheduler. * * @param scheduler_id UUID of the campaign to sync * @param params Optional query params * @returns Fully-hydrated AdCampaign resource */ static syncSchedulerCampaigns(scheduler_id: string, params?: Record): AxiosPromise>; /** * Get campaign performance summary. */ static getPerformanceSummary(params?: Record): AxiosPromise>; /** * Get spend and delivery metrics over time. */ static getSpendDeliveryReport(params: { start_date: string; end_date: string; group_by?: 'day' | 'week' | 'month'; community_id?: string; platform?: string; }): AxiosPromise>; /** * Compare performance across platforms. */ static getPlatformComparisonReport(params?: { start_date?: string; end_date?: string; community_id?: string; }): AxiosPromise>; /** * Get performance metrics for individual ad creatives. */ static getCreativePerformanceReport(params?: { community_id?: string; platform?: string; start_date?: string; end_date?: string; limit?: number; sort?: 'spend' | 'impressions' | 'clicks' | 'ctr' | 'cpm' | 'cpc'; order?: 'asc' | 'desc'; }): AxiosPromise>; /** * Get time-based performance metrics by hour and day of week. */ static getTimePerformanceReport(params: { start_date: string; end_date: string; community_id?: string; platform?: string; }): AxiosPromise>; /** * Get detailed paid campaign performance rows for tables and exports. */ static getDetailedBreakdownReport(params: { start_date: string; end_date: string; community_id?: string; scheduler_id?: string; platform?: string; campaign_id?: string; ad_group_id?: string; ad_id?: string; }): AxiosPromise>; /** * GET /ads/google/targeting/geo/suggest */ static listGoogleGeoSuggestions(params: Record): AxiosPromise>; /** * POST /ads/google/targeting/campaigns/{customer_id}/{campaign_id}/locations */ static addGoogleLocationTargets(customer_id: number, campaign_id: number, data: object): AxiosPromise>; /** * GET /ads/google/targeting/campaigns/{customer_id}/{campaign_id}/locations */ static getGoogleLocationTargets(customer_id: number, campaign_id: number, params: Record): AxiosPromise>; /** * DELETE /ads/google/targeting/campaigns/{customer_id}/{campaign_id}/locations */ static removeGoogleLocationTargets(customer_id: number, campaign_id: number, data: object): AxiosPromise>; /** * POST /ads/google/targeting/campaigns/{customer_id}/{campaign_id}/proximity */ static addGoogleProximityTarget(customer_id: number, campaign_id: number, data: object): AxiosPromise>; /** * PUT /ads/google/targeting/{resource_type}/{customer_id}/{resource_id}/settings */ static updateGoogleTargetingSettings(resource_type: 'campaign' | 'ad_group', customer_id: number, resource_id: number, data: object): AxiosPromise>; /** * GET /ads/google/targeting/{resource_type}/{customer_id}/{resource_id}/settings */ static getGoogleTargetingSettings(resource_type: 'campaign' | 'ad_group', customer_id: number, resource_id: number, params: Record): AxiosPromise>; /** GET /ads/posts/google */ static listGoogleAdPosts(params?: Record): AxiosPromise>; /** POST /ads/posts/google */ static createGoogleAdPost(data?: object, params?: Record): AxiosPromise>; /** PUT /ads/posts/google/{post_id} */ static updateGoogleAdPost(post_id: string, data?: object, params?: Record): AxiosPromise>; /** DELETE /ads/posts/google/{post_id} */ static deleteGoogleAdPost(post_id: string, params?: Record): AxiosPromise>; /** POST /ads/posts/google/{post_id}/pause */ static pauseGoogleAdPost(post_id: string, params?: Record): AxiosPromise>; /** POST /ads/posts/google/{post_id}/enable */ static enableGoogleAdPost(post_id: string, params?: Record): AxiosPromise>; /** * Creates a new Google Ads client account under a specified manager account. * Corresponds to POST /ads/google/accounts/create * * @param data The creation payload. * @param data.scheduler_id The UUID of the scheduler with auth tokens. * @param data.manager_customer_id The 10-digit MCC ID. * @param data.descriptive_name The name for the new account. * @param data.currency_code ISO 4217 currency code. * @param data.time_zone Time zone identifier (e.g., 'America/New_York'). * @returns The newly created Google Ads account details. */ static createGoogleAccount(data: { scheduler_id: string; manager_customer_id: string; descriptive_name: string; currency_code: string; time_zone: string; }): AxiosPromise>; /** * Submit a SKAN attribution postback to the public Apple app attribution endpoint. * This mirrors POST /.well-known/appattribution/report-attribution. */ static reportSkanAttributionPostback(data: { "jws-string"?: string; jws?: string; [key: string]: any; }, params?: Record): AxiosPromise>; } export default Ads;