// Auto-generated client for Upgraded Smart+ — do not edit import type { SmartPlusCampaignGetParams, SmartPlusCampaignGetResponse, SmartPlusCampaignCreateParams, SmartPlusCampaignCreateResponse, SmartPlusCampaignUpdateParams, SmartPlusCampaignUpdateResponse, SmartPlusCampaignStatusUpdateParams, SmartPlusCampaignStatusUpdateResponse, SmartPlusAdgroupGetParams, SmartPlusAdgroupGetResponse, SmartPlusAdgroupCreateParams, SmartPlusAdgroupCreateResponse, SmartPlusAdgroupUpdateParams, SmartPlusAdgroupUpdateResponse, SmartPlusAdgroupStatusUpdateParams, SmartPlusAdgroupStatusUpdateResponse, SmartPlusAdgroupBudgetUpdateParams, SmartPlusAdgroupBudgetUpdateResponse, SmartPlusAdGetParams, SmartPlusAdGetResponse, SmartPlusAdCreateParams, SmartPlusAdCreateResponse, SmartPlusAdUpdateParams, SmartPlusAdUpdateResponse, SmartPlusAdStatusUpdateParams, SmartPlusAdStatusUpdateResponse, SmartPlusAdMaterialStatusUpdateParams, SmartPlusAdMaterialStatusUpdateResponse, SmartPlusAdPreviewParams, SmartPlusAdPreviewResponse, SmartPlusAdReviewInfoParams, SmartPlusAdReviewInfoResponse, SmartPlusMaterialReviewInfoParams, SmartPlusMaterialReviewInfoResponse, SmartPlusAdAppealParams, SmartPlusAdAppealResponse } from "../types/upgraded-smart.ts"; interface TikTokResponse { code: number; message: string; request_id: string; data: T; } const TT_API_BASE = "https://business-api.tiktok.com"; export function createUpgradedSmart(opts: { accessToken: string; advertiserId: string }) { async function get(path: string, params: Record): Promise { const searchParams = new URLSearchParams(); for (const [key, value] of Object.entries(params)) { if (value !== undefined && value !== null) { searchParams.set(key, typeof value === "object" ? JSON.stringify(value) : String(value)); } } const response = await fetch(`${TT_API_BASE}${path}?${searchParams.toString()}`, { headers: { "Access-Token": opts.accessToken }, }); const body = (await response.json()) as TikTokResponse; if (!response.ok || body.code !== 0) { throw new Error(`TikTok API error: ${body.message} (code ${body.code}, request_id ${body.request_id})`); } return body.data; } async function post(path: string, body: Record): Promise { const response = await fetch(`${TT_API_BASE}${path}`, { method: "POST", headers: { "Access-Token": opts.accessToken, "Content-Type": "application/json" }, body: JSON.stringify(body), }); const responseBody = (await response.json()) as TikTokResponse; if (!response.ok || responseBody.code !== 0) { throw new Error(`TikTok API error: ${responseBody.message} (code ${responseBody.code}, request_id ${responseBody.request_id})`); } return responseBody.data; } return { /** Get Upgraded Smart+ Campaigns */ async getCampaign(params: SmartPlusCampaignGetParams): Promise { return get("/open_api/v1.3/smart_plus/campaign/get/", params as unknown as Record); }, /** Create an Upgraded Smart+ Campaign */ async createCampaign(params: SmartPlusCampaignCreateParams): Promise { return post("/open_api/v1.3/smart_plus/campaign/create/", params as unknown as Record); }, /** Update an Upgraded Smart+ Campaign */ async updateCampaign(params: SmartPlusCampaignUpdateParams): Promise { return post("/open_api/v1.3/smart_plus/campaign/update/", params as unknown as Record); }, /** Update the operation statuses of Upgraded Smart+ Campaigns */ async updateStatus(params: SmartPlusCampaignStatusUpdateParams): Promise { return post("/open_api/v1.3/smart_plus/campaign/status/update/", params as unknown as Record); }, /** Get Upgraded Smart+ Ad Groups */ async getAdgroup(params: SmartPlusAdgroupGetParams): Promise { return get("/open_api/v1.3/smart_plus/adgroup/get/", params as unknown as Record); }, /** Create an Upgraded Smart+ Ad Group */ async createAdgroup(params: SmartPlusAdgroupCreateParams): Promise { return post("/open_api/v1.3/smart_plus/adgroup/create/", params as unknown as Record); }, /** Update an Upgraded Smart+ Ad Group */ async updateAdgroup(params: SmartPlusAdgroupUpdateParams): Promise { return post("/open_api/v1.3/smart_plus/adgroup/update/", params as unknown as Record); }, /** Update the operation statuses of Upgraded Smart+ Ad Groups */ async updateStatus2(params: SmartPlusAdgroupStatusUpdateParams): Promise { return post("/open_api/v1.3/smart_plus/adgroup/status/update/", params as unknown as Record); }, /** Update the budgets of Upgraded Smart+ Ad Groups */ async updateBudget(params: SmartPlusAdgroupBudgetUpdateParams): Promise { return post("/open_api/v1.3/smart_plus/adgroup/budget/update/", params as unknown as Record); }, /** Get Upgraded Smart+ Ads */ async getAd(params: SmartPlusAdGetParams): Promise { return get("/open_api/v1.3/smart_plus/ad/get/", params as unknown as Record); }, /** Create an Upgraded Smart+ Ad */ async createAd(params: SmartPlusAdCreateParams): Promise { return post("/open_api/v1.3/smart_plus/ad/create/", params as unknown as Record); }, /** Update an Upgraded Smart+ Ad */ async updateAd(params: SmartPlusAdUpdateParams): Promise { return post("/open_api/v1.3/smart_plus/ad/update/", params as unknown as Record); }, /** Update the operation statuses of Upgraded Smart+ Ads */ async updateStatus3(params: SmartPlusAdStatusUpdateParams): Promise { return post("/open_api/v1.3/smart_plus/ad/status/update/", params as unknown as Record); }, /** Disable or enable creatives in an Upgraded Smart+ Ad */ async updateMaterialStatus(params: SmartPlusAdMaterialStatusUpdateParams): Promise { return post("/open_api/v1.3/smart_plus/ad/material_status/update/", params as unknown as Record); }, /** Preview Upgraded Smart+ Ads */ async adPreview(params: SmartPlusAdPreviewParams): Promise { return post("/open_api/v1.3/smart_plus/ad/preview/", params as unknown as Record); }, /** Get the review info of Upgraded Smart+ Ads */ async adReviewInfo(params: SmartPlusAdReviewInfoParams): Promise { return get("/open_api/v1.3/smart_plus/ad/review_info/", params as unknown as Record); }, /** Get the review info of Upgraded Smart+ Ad creatives */ async materialReviewInfo(params: SmartPlusMaterialReviewInfoParams): Promise { return get("/open_api/v1.3/smart_plus/material/review_info/", params as unknown as Record); }, /** Appeal rejection of an Upgraded Smart+ Ad */ async adAppeal(params: SmartPlusAdAppealParams): Promise { return post("/open_api/v1.3/smart_plus/ad/appeal/", params as unknown as Record); }, }; }