// Auto-generated client for Catalog Management — do not edit import type { CatalogCreateParams, CatalogCreateResponse, CatalogUpdateParams, CatalogUpdateResponse, CatalogDeleteParams, CatalogDeleteResponse, CatalogGetParams, CatalogGetResponse, CatalogLexiconGetParams, CatalogLexiconGetResponse, CatalogCapitalizeParams, CatalogCapitalizeResponse, CatalogAvailableCountryGetParams, CatalogAvailableCountryGetResponse, CatalogLocationCurrencyGetParams, CatalogLocationCurrencyGetResponse, CatalogOverviewParams, CatalogOverviewResponse } from "../types/catalog-management.ts"; interface TikTokResponse { code: number; message: string; request_id: string; data: T; } const TT_API_BASE = "https://business-api.tiktok.com"; export function createCatalogManagement(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 { /** Create a catalog */ async createCatalog(params: CatalogCreateParams): Promise { return post("/open_api/v1.3/catalog/create/", params as unknown as Record); }, /** Update the name of a catalog */ async updateCatalog(params: CatalogUpdateParams): Promise { return post("/open_api/v1.3/catalog/update/", params as unknown as Record); }, /** Delete a catalog */ async deleteCatalog(params: CatalogDeleteParams): Promise { return post("/open_api/v1.3/catalog/delete/", params as unknown as Record); }, /** Get catalogs */ async getCatalog(params: CatalogGetParams): Promise { return get("/open_api/v1.3/catalog/get/", params as unknown as Record); }, /** Get the lexicon list for a catalog */ async getLexicon(params: CatalogLexiconGetParams): Promise { return get("/open_api/v1.3/catalog/lexicon/get/", params as unknown as Record); }, /** Migrate a catalog to a BC */ async catalogCapitalize(params: CatalogCapitalizeParams): Promise { return post("/open_api/v1.3/catalog/capitalize/", params as unknown as Record); }, /** Get available regions */ async getAvailableCountry(params: CatalogAvailableCountryGetParams): Promise { return get("/open_api/v1.3/catalog/available_country/get/", params as unknown as Record); }, /** Get locations and currencies */ async getLocationCurrency(params: CatalogLocationCurrencyGetParams): Promise { return get("/open_api/v1.3/catalog/location_currency/get/", params as unknown as Record); }, /** Get the overview of a catalog */ async catalogOverview(params: CatalogOverviewParams): Promise { return get("/open_api/v1.3/catalog/overview/", params as unknown as Record); }, }; }