返回 AiToEarn
tiktok.schema.ts
1 import { z } from 'zod'
2 import { TikTokContentPostingEvent, TikTokPublishStatus } from './tiktok.interface'
3
4 export enum TikTokPrivacyLevel {
5 Public = 'PUBLIC_TO_EVERYONE',
6 MutualFollowFriends = 'MUTUAL_FOLLOW_FRIENDS',
7 SelfOnly = 'SELF_ONLY',
8 FollowerOfCreator = 'FOLLOWER_OF_CREATOR',
9 }
10
11 export enum TikTokPostSource {
12 FileUpload = 'FILE_UPLOAD',
13 PullFromUrl = 'PULL_FROM_URL',
14 }
15
16 export enum TikTokContentPath {
17 Video = 'video',
18 Photo = 'photo',
19 }
20
21 export const TiktokOptionSchema = z.object({
22 privacy_level: z.enum(TikTokPrivacyLevel).optional().describe('隐私级别,必须在 creator_info 返回的可选值内'),
23 disable_duet: z.boolean().optional().describe('是否禁用合拍'),
24 disable_stitch: z.boolean().optional().describe('是否禁用拼接'),
25 disable_comment: z.boolean().optional().describe('是否禁用评论'),
26 brand_organic_toggle: z.boolean().optional().describe('品牌有机内容'),
27 brand_content_toggle: z.boolean().optional().describe('品牌内容'),
28 auto_add_music: z.boolean().optional().describe('图文发布自动配乐'),
29 photo_cover_index: z.number().int().min(0).optional().describe('图文封面图片下标'),
30 source: z.enum(TikTokPostSource).optional().describe('视频上传来源,FILE_UPLOAD 由后端上传,PULL_FROM_URL 由 TikTok 拉取已验证 URL'),
31 is_aigc: z.boolean().optional().describe('视频发布是否声明为 AI 生成内容'),
32 })
33
34 export type TiktokOption = z.infer<typeof TiktokOptionSchema>
35
36 export const TikTokPublishDataOptionSchema = z.object({
37 publishId: z.string().min(1).describe('TikTok Content Posting API publish_id,仅用于发布状态关联'),
38 source: z.enum(TikTokPostSource).optional().describe('发布媒体来源'),
39 contentPath: z.enum(TikTokContentPath).describe('公开作品链接路径类型'),
40 privacyLevel: z.enum(TikTokPrivacyLevel).optional().describe('发布时实际使用的 TikTok 隐私级别'),
41 username: z.string().min(1).optional().describe('TikTok username,用于构造 canonical 作品链接'),
42 publishStatus: z.enum(TikTokPublishStatus).optional().describe('TikTok Content Posting API 官方发布状态'),
43 finalPostId: z.string().min(1).optional().describe('TikTok 最终公开作品 post_id'),
44 error: z.string().optional().describe('TikTok 发布失败原因'),
45 webhookEvent: z.enum(TikTokContentPostingEvent).optional().describe('TikTok Content Posting webhook 事件'),
46 webhookCreateTime: z.number().int().optional().describe('TikTok Content Posting webhook create_time'),
47 webhookUserOpenId: z.string().optional().describe('TikTok Content Posting webhook user_openid'),
48 })
49
50 export type TikTokPublishDataOption = z.infer<typeof TikTokPublishDataOptionSchema>
51
51 lines TYPESCRIPT