// Auto-generated client for TikTok One — do not edit import type { TtUserOauth2RevokeParams, TtUserOauth2RevokeResponse, TtUserTokenInfoGetParams, TtUserTokenInfoGetResponse, TtoOauth2TcmParams, TtoOauth2TcmResponse, TtoTcmCreatorStatusGetParams, TtoTcmCreatorStatusGetResponse, TtoOauth2InfoParams, TtoOauth2InfoResponse, TtoTcmCreatorPublicParams, TtoTcmCreatorPublicResponse, TtoTcmCreatorPublicVideoListParams, TtoTcmCreatorPublicVideoListResponse, TtoCreatorAuthorizedParams, TtoCreatorAuthorizedResponse, TtoCreatorAuthorizedVideoListParams, TtoCreatorAuthorizedVideoListResponse, TtoTcmCategoryLabelParams, TtoTcmCategoryLabelResponse, TtoTcmRankParams, TtoTcmRankResponse, TtoTcmCreatorDiscoverParams, TtoTcmCreatorDiscoverResponse, TtoTcmBrandProfileCreateParams, TtoTcmBrandProfileCreateResponse, TtoTcmBrandProfileGetParams, TtoTcmBrandProfileGetResponse, TtoTcmCampaignCreateParams, TtoTcmCampaignCreateResponse, TtoTcmCampaignUpdateParams, TtoTcmCampaignUpdateResponse, TtoTcmCampaignParams, TtoTcmCampaignResponse, TtoTcmCampaignLinkParams, TtoTcmCampaignLinkResponse, TtoTcmCampaignLinkStatusParams, TtoTcmCampaignLinkStatusResponse, TtoTcmReportParams, TtoTcmReportResponse, TcmTtVideoStatusParams, TcmTtVideoStatusResponse, TtoTcmAnchorCreateParams, TtoTcmAnchorCreateResponse, TtoTcmAnchorGetParams, TtoTcmAnchorGetResponse, TtoTcmAnchorDeleteParams, TtoTcmAnchorDeleteResponse, TtoCreatorCampaignJoinParams, TtoCreatorCampaignJoinResponse, TtoCreatorCampaignVideoLinkParams, TtoCreatorCampaignVideoLinkResponse, TtoCreatorLinkRequestGetParams, TtoCreatorLinkRequestGetResponse, TtoCreatorLinkRequestConfirmParams, TtoCreatorLinkRequestConfirmResponse } from "../types/tiktok-one.ts"; interface TikTokResponse { code: number; message: string; request_id: string; data: T; } const TT_API_BASE = "https://business-api.tiktok.com"; export function createTiktokOne(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, renew or revoke a Creator access token */ async oauth2Revoke(params: TtUserOauth2RevokeParams): Promise { return post("/open_api/v1.3/tt_user/oauth2/revoke/", params as unknown as Record); }, /** Obtain the authorized Creator permissions */ async getTokenInfo(params: TtUserTokenInfoGetParams): Promise { return post("/open_api/v1.3/tt_user/token_info/get/", params as unknown as Record); }, /** Get authorized TTO Creator Marketplace accounts */ async oauth2Tcm(params: TtoOauth2TcmParams): Promise { return get("/open_api/v1.3/tto/oauth2/tcm/", params as unknown as Record); }, /** Check TTO Creator Status */ async getStatus(params: TtoTcmCreatorStatusGetParams): Promise { return get("/open_api/v1.3/tto/tcm/creator/status/get/", params as unknown as Record); }, /** Get the details of a TTO Creator Marketplace account */ async oauth2Info(params: TtoOauth2InfoParams): Promise { return get("/open_api/v1.3/tto/oauth2/info/", params as unknown as Record); }, /** Get TTO Public Account Insights */ async creatorPublic(params: TtoTcmCreatorPublicParams): Promise { return get("/open_api/v1.3/tto/tcm/creator/public/", params as unknown as Record); }, /** Get TTO Public Media Insights */ async listVideo(params: TtoTcmCreatorPublicVideoListParams): Promise { return get("/open_api/v1.3/tto/tcm/creator/public/video/list/", params as unknown as Record); }, /** Get Authorized TTO Creator Insights */ async creatorAuthorized(params: TtoCreatorAuthorizedParams): Promise { return get("/open_api/v1.3/tto/creator/authorized/", params as unknown as Record); }, /** Get Authorized TTO Media Insights */ async listVideo2(params: TtoCreatorAuthorizedVideoListParams): Promise { return get("/open_api/v1.3/tto/creator/authorized/video/list/", params as unknown as Record); }, /** Get TTO creator ranking or search labels */ async categoryLabel(params: TtoTcmCategoryLabelParams): Promise { return get("/open_api/v1.3/tto/tcm/category/label/", params as unknown as Record); }, /** Get top TTO creator rankings */ async tcmRank(params: TtoTcmRankParams): Promise { return get("/open_api/v1.3/tto/tcm/rank/", params as unknown as Record); }, /** Discover TTO creators */ async creatorDiscover(params: TtoTcmCreatorDiscoverParams): Promise { return get("/open_api/v1.3/tto/tcm/creator/discover/", params as unknown as Record); }, /** Create a Brand Profile for your TTO account */ async createProfile(params: TtoTcmBrandProfileCreateParams): Promise { return post("/open_api/v1.3/tto/tcm/brand/profile/create/", params as unknown as Record); }, /** Get the Brand Profiles for your TTO account */ async getProfile(params: TtoTcmBrandProfileGetParams): Promise { return get("/open_api/v1.3/tto/tcm/brand/profile/get/", params as unknown as Record); }, /** Create or update a TTO Creator Marketplace campaign */ async createCampaign(params: TtoTcmCampaignCreateParams): Promise { return post("/open_api/v1.3/tto/tcm/campaign/create/", params as unknown as Record); }, /** Update a TTO Creator Marketplace campaign */ async updateCampaign(params: TtoTcmCampaignUpdateParams): Promise { return post("/open_api/v1.3/tto/tcm/campaign/update/", params as unknown as Record); }, /** Get TTO Creator Marketplace campaigns */ async tcmCampaign(params: TtoTcmCampaignParams): Promise { return get("/open_api/v1.3/tto/tcm/campaign/", params as unknown as Record); }, /** Send or revoke a TTO video linking request */ async campaignLink(params: TtoTcmCampaignLinkParams): Promise { return post("/open_api/v1.3/tto/tcm/campaign/link/", params as unknown as Record); }, /** Get TTO video linking requests as a brand */ async linkStatus(params: TtoTcmCampaignLinkStatusParams): Promise { return get("/open_api/v1.3/tto/tcm/campaign/link/status/", params as unknown as Record); }, /** Report on TTO Creator Marketplace videos */ async tcmReport(params: TtoTcmReportParams): Promise { return get("/open_api/v1.3/tto/tcm/report/", params as unknown as Record); }, /** Get the authorization status */ async ttVideoStatus(params: TcmTtVideoStatusParams): Promise { return get("/open_api/v1.3/tcm/tt_video/status/", params as unknown as Record); }, /** Create a webpage anchor */ async createAnchor(params: TtoTcmAnchorCreateParams): Promise { return get("/open_api/v1.3/tto/tcm/anchor/create/", params as unknown as Record); }, /** Get webpage anchors */ async getAnchor(params: TtoTcmAnchorGetParams): Promise { return get("/open_api/v1.3/tto/tcm/anchor/get/", params as unknown as Record); }, /** Delete a draft anchor */ async deleteAnchor(params: TtoTcmAnchorDeleteParams): Promise { return post("/open_api/v1.3/tto/tcm/anchor/delete/", params as unknown as Record); }, /** Join a TTO Creator Marketplace campaign as a creator */ async campaignJoin(params: TtoCreatorCampaignJoinParams): Promise { return post("/open_api/v1.3/tto/creator/campaign/join/", params as unknown as Record); }, /** Link a video to a TTO Creator Marketplace campaign as a creator */ async videoLink(params: TtoCreatorCampaignVideoLinkParams): Promise { return post("/open_api/v1.3/tto/creator/campaign/video/link/", params as unknown as Record); }, /** Get TTO video linking requests as a creator */ async getRequest(params: TtoCreatorLinkRequestGetParams): Promise { return get("/open_api/v1.3/tto/creator/link/request/get/", params as unknown as Record); }, /** Approve or reject a TTO video linking request as a creator */ async requestConfirm(params: TtoCreatorLinkRequestConfirmParams): Promise { return post("/open_api/v1.3/tto/creator/link/request/confirm/", params as unknown as Record); }, }; }