研究及附來源簡報
從已審閱的研究版本建立編輯 Draft
從已審閱版本建立未排程的正式 Draft;還需要 agent:operate。不會提交或發布。需要 agent:research。
POST /research-api/briefs/handoff契約檢閱日期: · sha256:ab393e91e9b7f18a
概覽
從已審閱版本建立未排程的正式 Draft;還需要 agent:operate。不會提交或發布。需要 agent:research。
成功 HTTP 回應可能表示請求已接受,並非已完成。背景工作請儲存回傳 ID,持續檢查同一操作直到完成。已排程或已接受的貼文,只有平台確認後才算已發布;用戶端逾時無法證明結果。
驗證與權限
權杖只能使用其擁有者持有的權利。每次請求會檢查工作空間成員資格、資源擁有權、所選工作空間及已授予能力。core 與 full 設定檔只變更顯示的工具,不會授予存取權。
請求欄位
「必填」是指在其父物件及所選分支內必填。必填子欄位不會使選填父物件變成必填。下列規則與欄位名稱均複製自契約。
| 欄位 / 分支 | 類型 / 必填 | 約束 |
|---|---|---|
$ | object在父物件中必填 |
|
workspace_id | string在父物件中必填 |
|
mutation_id | string在父物件中必填 |
|
brief_id | string在父物件中必填 |
|
brief_revision | integer在父物件中必填 |
|
variant_id | string在父物件中必填 |
|
variant_revision | integer在父物件中必填 |
|
content | object在父物件中必填 |
|
content.schemaVersion | number選填/項目 |
|
content.accountIds | array選填/項目 |
|
content.accountIds[] | string選填/項目 |
|
content.caption | string選填/項目 |
|
content.hashtags | string選填/項目 |
|
content.assetIds | array選填/項目 |
|
content.assetIds[] | string選填/項目 |
|
content.threadsTextOnly | boolean選填/項目 |
|
content.threadsOptions | object選填/項目 |
|
content.threadsOptions.post_type | string選填/項目 |
|
content.threadsOptions.reply_to_id | string選填/項目 |
|
content.threadsOptions.quote_post_id | string選填/項目 |
|
content.threadsOptions.repost_target_id | string選填/項目 |
|
content.threadsOptions.reply_control | string選填/項目 |
|
content.threadsOptions.enable_reply_approvals | boolean選填/項目 | — |
content.threadsOptions.link_attachment | string選填/項目 |
|
content.threadsOptions.poll_attachment | object選填/項目 |
|
content.threadsOptions.poll_attachment.option_a | string在父物件中必填 |
|
content.threadsOptions.poll_attachment.option_b | string在父物件中必填 |
|
content.threadsOptions.poll_attachment.option_c | string選填/項目 |
|
content.threadsOptions.poll_attachment.option_d | string選填/項目 |
|
content.threadsOptions.gif_attachment | object選填/項目 |
|
content.threadsOptions.gif_attachment.gif_id | string在父物件中必填 |
|
content.threadsOptions.gif_attachment.provider | string在父物件中必填 |
|
content.threadsOptions.text_attachment | object選填/項目 |
|
content.threadsOptions.text_attachment.plaintext | string在父物件中必填 |
|
content.threadsOptions.text_attachment.link_attachment_url | string選填/項目 |
|
content.threadsOptions.text_attachment.text_with_styling_info | array選填/項目 |
|
content.threadsOptions.text_attachment.text_with_styling_info[] | object選填/項目 |
|
content.threadsOptions.text_attachment.text_with_styling_info[].offset | integer在父物件中必填 |
|
content.threadsOptions.text_attachment.text_with_styling_info[].length | integer在父物件中必填 |
|
content.threadsOptions.text_attachment.text_with_styling_info[].styling_info | array在父物件中必填 |
|
content.threadsOptions.text_attachment.text_with_styling_info[].styling_info[] | string選填/項目 |
|
content.threadsOptions.topic_tag | string選填/項目 |
|
content.threadsOptions.text_entities | array選填/項目 |
|
content.threadsOptions.text_entities[] | object選填/項目 |
|
content.threadsOptions.text_entities[].entity_type | string在父物件中必填 |
|
content.threadsOptions.text_entities[].offset | integer在父物件中必填 |
|
content.threadsOptions.text_entities[].length | integer在父物件中必填 |
|
content.threadsOptions.is_spoiler_media | boolean選填/項目 | — |
content.threadsOptions.is_ghost_post | boolean選填/項目 | — |
content.threadsOptions.location_id | string選填/項目 |
|
content.threadsOptions.allowlisted_country_codes | array選填/項目 |
|
content.threadsOptions.allowlisted_country_codes[] | string選填/項目 |
|
content.threadsOptions.crossreshare_to_ig | boolean選填/項目 | — |
content.threadsOptions.crossreshare_to_ig_dark_mode | boolean選填/項目 | — |
content.threadsOptions.auto_publish_text | boolean選填/項目 | — |
content.threadsOptions.media_options | array選填/項目 |
|
content.threadsOptions.media_options[] | object選填/項目 |
|
content.threadsOptions.media_options[].asset_id | integer在父物件中必填 |
|
content.threadsOptions.media_options[].alt_text | string選填/項目 |
|
content.threadsOptions.media_options[].is_spoiler_media | boolean選填/項目 | — |
content.instagramMode | string選填/項目 |
|
content.youtubeTitle | string選填/項目 |
|
content.youtubePrivacy | string選填/項目 |
|
content.youtubeSynthetic | boolean選填/項目 |
|
content.youtubeCategoryId | string選填/項目 |
|
content.youtubeShort | boolean選填/項目 |
|
content.linkUrl | string選填/項目 |
|
content.scheduledAt | string選填/項目 |
|
content.displayTimezone | string選填/項目 |
|
content.publishNow | boolean選填/項目 |
|
content.destinationOverrides | object選填/項目 |
|
content.destinationOverrides.* | object選填/項目 |
|
content.destinationOverrides.*.caption | string選填/項目 |
|
content.destinationOverrides.*.scheduledAt | string選填/項目 |
|
content.expiresAt | string選填/項目 |
|
完整 JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"workspace_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"mutation_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"brief_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"brief_revision": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"variant_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"variant_revision": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"content": {
"type": "object",
"properties": {
"schemaVersion": {
"default": 1,
"type": "number",
"const": 1
},
"accountIds": {
"default": [],
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"caption": {
"default": "",
"type": "string",
"maxLength": 5000
},
"hashtags": {
"default": "",
"type": "string",
"maxLength": 5000
},
"assetIds": {
"default": [],
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"maxLength": 16,
"pattern": "^[1-9][0-9]*$"
}
},
"threadsTextOnly": {
"default": false,
"type": "boolean"
},
"threadsOptions": {
"type": "object",
"properties": {
"post_type": {
"type": "string",
"enum": [
"TEXT",
"IMAGE",
"VIDEO",
"CAROUSEL",
"REPOST"
]
},
"reply_to_id": {
"type": "string",
"maxLength": 128
},
"quote_post_id": {
"type": "string",
"maxLength": 128
},
"repost_target_id": {
"type": "string",
"maxLength": 128
},
"reply_control": {
"type": "string",
"enum": [
"everyone",
"accounts_you_follow",
"mentioned_only",
"parent_post_author_only",
"followers_only"
]
},
"enable_reply_approvals": {
"type": "boolean"
},
"link_attachment": {
"type": "string",
"maxLength": 2048
},
"poll_attachment": {
"type": "object",
"properties": {
"option_a": {
"type": "string",
"maxLength": 25
},
"option_b": {
"type": "string",
"maxLength": 25
},
"option_c": {
"type": "string",
"maxLength": 25
},
"option_d": {
"type": "string",
"maxLength": 25
}
},
"required": [
"option_a",
"option_b"
],
"additionalProperties": false
},
"gif_attachment": {
"type": "object",
"properties": {
"gif_id": {
"type": "string",
"maxLength": 128
},
"provider": {
"type": "string",
"const": "GIPHY"
}
},
"required": [
"gif_id",
"provider"
],
"additionalProperties": false
},
"text_attachment": {
"type": "object",
"properties": {
"plaintext": {
"type": "string",
"maxLength": 10000
},
"link_attachment_url": {
"type": "string",
"maxLength": 2048
},
"text_with_styling_info": {
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"length": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"styling_info": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"enum": [
"bold",
"italic",
"highlight",
"underline",
"strikethrough"
]
}
}
},
"required": [
"offset",
"length",
"styling_info"
],
"additionalProperties": false
}
}
},
"required": [
"plaintext"
],
"additionalProperties": false
},
"topic_tag": {
"type": "string",
"maxLength": 50
},
"text_entities": {
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"entity_type": {
"type": "string",
"enum": [
"SPOILER",
"spoiler"
]
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"length": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"entity_type",
"offset",
"length"
],
"additionalProperties": false
}
},
"is_spoiler_media": {
"type": "boolean"
},
"is_ghost_post": {
"type": "boolean"
},
"location_id": {
"type": "string",
"maxLength": 128
},
"allowlisted_country_codes": {
"minItems": 1,
"maxItems": 249,
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Z]{2}$"
}
},
"crossreshare_to_ig": {
"type": "boolean"
},
"crossreshare_to_ig_dark_mode": {
"type": "boolean"
},
"auto_publish_text": {
"type": "boolean"
},
"media_options": {
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"asset_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"alt_text": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"is_spoiler_media": {
"type": "boolean"
}
},
"required": [
"asset_id"
],
"additionalProperties": false
}
}
},
"additionalProperties": false
},
"instagramMode": {
"default": "REELS",
"type": "string",
"enum": [
"IMAGE",
"REELS",
"CAROUSEL",
"STORY_IMAGE",
"STORY_VIDEO"
]
},
"youtubeTitle": {
"default": "",
"type": "string",
"maxLength": 100
},
"youtubePrivacy": {
"default": "private",
"type": "string",
"enum": [
"private",
"unlisted",
"public"
]
},
"youtubeSynthetic": {
"default": false,
"type": "boolean"
},
"youtubeCategoryId": {
"default": "",
"type": "string",
"maxLength": 32
},
"youtubeShort": {
"default": false,
"type": "boolean"
},
"linkUrl": {
"default": "",
"type": "string",
"maxLength": 2048
},
"scheduledAt": {
"default": "",
"type": "string",
"maxLength": 64
},
"displayTimezone": {
"default": "UTC",
"type": "string",
"minLength": 1,
"maxLength": 128
},
"publishNow": {
"default": false,
"type": "boolean"
},
"destinationOverrides": {
"default": {},
"type": "object",
"propertyNames": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"additionalProperties": {
"type": "object",
"properties": {
"caption": {
"type": "string",
"maxLength": 5000
},
"scheduledAt": {
"type": "string",
"maxLength": 64
}
},
"additionalProperties": false
}
},
"expiresAt": {
"default": "",
"type": "string",
"maxLength": 64
}
},
"additionalProperties": false
}
},
"required": [
"workspace_id",
"mutation_id",
"brief_id",
"brief_revision",
"variant_id",
"variant_revision",
"content"
],
"additionalProperties": false
}回應與完成
成功 HTTP 狀態:200。操作完成時: one committed canonical unscheduled Content Draft plus private source provenance; never submission/publication.
成功 HTTP 回應可能表示請求已接受,並非已完成。背景工作請儲存回傳 ID,持續檢查同一操作直到完成。已排程或已接受的貼文,只有平台確認後才算已發布;用戶端逾時無法證明結果。
「必填」是指在其父物件及所選分支內必填。必填子欄位不會使選填父物件變成必填。下列規則與欄位名稱均複製自契約。
| 欄位 / 分支 | 類型 / 必填 | 約束 |
|---|---|---|
$ | object在父物件中必填 | — |
handoff | object在父物件中必填 | — |
handoff.id | string在父物件中必填 |
|
handoff.workspace_id | string在父物件中必填 |
|
handoff.mutation_id | string在父物件中必填 |
|
handoff.brief_id | string在父物件中必填 |
|
handoff.brief_revision | integer在父物件中必填 |
|
handoff.variant | object在父物件中必填 | — |
handoff.variant.id | string在父物件中必填 |
|
handoff.variant.revision | integer在父物件中必填 |
|
handoff.variant.locale | string在父物件中必填 |
|
handoff.draft_id | string | null在父物件中必填 | — |
handoff.draft_idanyOf 1 | string在父物件中必填 |
|
handoff.draft_idanyOf 2 | null在父物件中必填 | — |
handoff.draft_revision | integer在父物件中必填 |
|
handoff.created_at | string在父物件中必填 |
|
handoff.evidence | array在父物件中必填 |
|
handoff.evidence[] | object選填/項目 | — |
handoff.evidence[].evidence_id | string在父物件中必填 |
|
handoff.evidence[].revision | integer在父物件中必填 |
|
handoff.locked_finding_ids | array在父物件中必填 |
|
handoff.locked_finding_ids[] | string選填/項目 |
|
handoff.availability | string在父物件中必填 |
|
handoff.reasons | array在父物件中必填 |
|
handoff.reasons[] | string選填/項目 |
|
handoff.method | string在父物件中必填 |
|
draft | object | null在父物件中必填 | — |
draftanyOf 1 | object在父物件中必填 | — |
draft.idanyOf 1 | string在父物件中必填 |
|
draft.workspace_idanyOf 1 | string在父物件中必填 |
|
draft.revisionanyOf 1 | integer在父物件中必填 |
|
draft.stateanyOf 1 | string在父物件中必填 |
|
draft.contentanyOf 1 | object在父物件中必填 | — |
draft.content.schemaVersionanyOf 1 | number在父物件中必填 |
|
draft.content.accountIdsanyOf 1 | array在父物件中必填 |
|
draft.content.accountIds[]anyOf 1 | string選填/項目 |
|
draft.content.captionanyOf 1 | string在父物件中必填 |
|
draft.content.hashtagsanyOf 1 | string在父物件中必填 |
|
draft.content.assetIdsanyOf 1 | array在父物件中必填 |
|
draft.content.assetIds[]anyOf 1 | string選填/項目 |
|
draft.content.threadsTextOnlyanyOf 1 | boolean在父物件中必填 |
|
draft.content.threadsOptionsanyOf 1 | object選填/項目 | — |
draft.content.threadsOptions.post_typeanyOf 1 | string選填/項目 |
|
draft.content.threadsOptions.reply_to_idanyOf 1 | string選填/項目 |
|
draft.content.threadsOptions.quote_post_idanyOf 1 | string選填/項目 |
|
draft.content.threadsOptions.repost_target_idanyOf 1 | string選填/項目 |
|
draft.content.threadsOptions.reply_controlanyOf 1 | string選填/項目 |
|
draft.content.threadsOptions.enable_reply_approvalsanyOf 1 | boolean選填/項目 | — |
draft.content.threadsOptions.link_attachmentanyOf 1 | string選填/項目 |
|
draft.content.threadsOptions.poll_attachmentanyOf 1 | object選填/項目 | — |
draft.content.threadsOptions.poll_attachment.option_aanyOf 1 | string在父物件中必填 |
|
draft.content.threadsOptions.poll_attachment.option_banyOf 1 | string在父物件中必填 |
|
draft.content.threadsOptions.poll_attachment.option_canyOf 1 | string選填/項目 |
|
draft.content.threadsOptions.poll_attachment.option_danyOf 1 | string選填/項目 |
|
draft.content.threadsOptions.gif_attachmentanyOf 1 | object選填/項目 | — |
draft.content.threadsOptions.gif_attachment.gif_idanyOf 1 | string在父物件中必填 |
|
draft.content.threadsOptions.gif_attachment.provideranyOf 1 | string在父物件中必填 |
|
draft.content.threadsOptions.text_attachmentanyOf 1 | object選填/項目 | — |
draft.content.threadsOptions.text_attachment.plaintextanyOf 1 | string在父物件中必填 |
|
draft.content.threadsOptions.text_attachment.link_attachment_urlanyOf 1 | string選填/項目 |
|
draft.content.threadsOptions.text_attachment.text_with_styling_infoanyOf 1 | array選填/項目 |
|
draft.content.threadsOptions.text_attachment.text_with_styling_info[]anyOf 1 | object選填/項目 | — |
draft.content.threadsOptions.text_attachment.text_with_styling_info[].offsetanyOf 1 | integer在父物件中必填 |
|
draft.content.threadsOptions.text_attachment.text_with_styling_info[].lengthanyOf 1 | integer在父物件中必填 |
|
draft.content.threadsOptions.text_attachment.text_with_styling_info[].styling_infoanyOf 1 | array在父物件中必填 |
|
draft.content.threadsOptions.text_attachment.text_with_styling_info[].styling_info[]anyOf 1 | string選填/項目 |
|
draft.content.threadsOptions.topic_taganyOf 1 | string選填/項目 |
|
draft.content.threadsOptions.text_entitiesanyOf 1 | array選填/項目 |
|
draft.content.threadsOptions.text_entities[]anyOf 1 | object選填/項目 | — |
draft.content.threadsOptions.text_entities[].entity_typeanyOf 1 | string在父物件中必填 |
|
draft.content.threadsOptions.text_entities[].offsetanyOf 1 | integer在父物件中必填 |
|
draft.content.threadsOptions.text_entities[].lengthanyOf 1 | integer在父物件中必填 |
|
draft.content.threadsOptions.is_spoiler_mediaanyOf 1 | boolean選填/項目 | — |
draft.content.threadsOptions.is_ghost_postanyOf 1 | boolean選填/項目 | — |
draft.content.threadsOptions.location_idanyOf 1 | string選填/項目 |
|
draft.content.threadsOptions.allowlisted_country_codesanyOf 1 | array選填/項目 |
|
draft.content.threadsOptions.allowlisted_country_codes[]anyOf 1 | string選填/項目 |
|
draft.content.threadsOptions.crossreshare_to_iganyOf 1 | boolean選填/項目 | — |
draft.content.threadsOptions.crossreshare_to_ig_dark_modeanyOf 1 | boolean選填/項目 | — |
draft.content.threadsOptions.auto_publish_textanyOf 1 | boolean選填/項目 | — |
draft.content.threadsOptions.media_optionsanyOf 1 | array選填/項目 |
|
draft.content.threadsOptions.media_options[]anyOf 1 | object選填/項目 | — |
draft.content.threadsOptions.media_options[].asset_idanyOf 1 | integer在父物件中必填 |
|
draft.content.threadsOptions.media_options[].alt_textanyOf 1 | string選填/項目 |
|
draft.content.threadsOptions.media_options[].is_spoiler_mediaanyOf 1 | boolean選填/項目 | — |
draft.content.instagramModeanyOf 1 | string在父物件中必填 |
|
draft.content.youtubeTitleanyOf 1 | string在父物件中必填 |
|
draft.content.youtubePrivacyanyOf 1 | string在父物件中必填 |
|
draft.content.youtubeSyntheticanyOf 1 | boolean在父物件中必填 |
|
draft.content.youtubeCategoryIdanyOf 1 | string在父物件中必填 |
|
draft.content.youtubeShortanyOf 1 | boolean在父物件中必填 |
|
draft.content.linkUrlanyOf 1 | string在父物件中必填 |
|
draft.content.scheduledAtanyOf 1 | string在父物件中必填 |
|
draft.content.displayTimezoneanyOf 1 | string在父物件中必填 |
|
draft.content.publishNowanyOf 1 | boolean在父物件中必填 |
|
draft.content.destinationOverridesanyOf 1 | object在父物件中必填 |
|
draft.content.destinationOverrides.*anyOf 1 | object選填/項目 | — |
draft.content.destinationOverrides.*.captionanyOf 1 | string選填/項目 |
|
draft.content.destinationOverrides.*.scheduledAtanyOf 1 | string選填/項目 |
|
draft.content.expiresAtanyOf 1 | string在父物件中必填 |
|
draft.created_byanyOf 1 | string | null在父物件中必填 | — |
draft.created_byanyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.created_byanyOf 1 / anyOf 2 | null在父物件中必填 | — |
draft.updated_byanyOf 1 | string | null在父物件中必填 | — |
draft.updated_byanyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.updated_byanyOf 1 / anyOf 2 | null在父物件中必填 | — |
draft.created_atanyOf 1 | string在父物件中必填 |
|
draft.updated_atanyOf 1 | string在父物件中必填 |
|
draft.submissionanyOf 1 | object | null在父物件中必填 | — |
draft.submissionanyOf 1 / anyOf 1 | object在父物件中必填 | — |
draft.submission.idanyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.submission.expected_revisionanyOf 1 / anyOf 1 | integer在父物件中必填 |
|
draft.submission.started_atanyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.submission.receiptanyOf 1 / anyOf 1 | object | null在父物件中必填 | — |
draft.submission.receiptanyOf 1 / anyOf 1 / anyOf 1 | object在父物件中必填 | — |
draft.submission.receipt.batch_idanyOf 1 / anyOf 1 / anyOf 1 | string | null在父物件中必填 | — |
draft.submission.receipt.batch_idanyOf 1 / anyOf 1 / anyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.submission.receipt.batch_idanyOf 1 / anyOf 1 / anyOf 1 / anyOf 2 | null在父物件中必填 | — |
draft.submission.receipt.successesanyOf 1 / anyOf 1 / anyOf 1 | array在父物件中必填 |
|
draft.submission.receipt.successes[]anyOf 1 / anyOf 1 / anyOf 1 | object選填/項目 | — |
draft.submission.receipt.successes[].social_account_idanyOf 1 / anyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.submission.receipt.successes[].post_idanyOf 1 / anyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.submission.receipt.failuresanyOf 1 / anyOf 1 / anyOf 1 | array在父物件中必填 |
|
draft.submission.receipt.failures[]anyOf 1 / anyOf 1 / anyOf 1 | object選填/項目 | — |
draft.submission.receipt.failures[].social_account_idanyOf 1 / anyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.submission.receipt.failures[].codeanyOf 1 / anyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.submission.receipt.failures[].messageanyOf 1 / anyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.submission.receiptanyOf 1 / anyOf 1 / anyOf 2 | null在父物件中必填 | — |
draft.submissionanyOf 1 / anyOf 2 | null在父物件中必填 | — |
draft.brand_contextanyOf 1 | object | null選填/項目 | — |
draft.brand_contextanyOf 1 / anyOf 1 | object選填/項目 | — |
draft.brand_context.workspace_idanyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_context.selectionanyOf 1 / anyOf 1 | object在父物件中必填 | — |
draft.brand_context.selection.profile_idanyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_context.selection.version_idanyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_context.selection.revisionanyOf 1 / anyOf 1 | integer在父物件中必填 |
|
draft.brand_context.selection.content_digestanyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_context.selection.context_digestanyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_context.availabilityanyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_context.profile_stateanyOf 1 / anyOf 1 | string | null在父物件中必填 | — |
draft.brand_context.profile_stateanyOf 1 / anyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_context.profile_stateanyOf 1 / anyOf 1 / anyOf 2 | null在父物件中必填 | — |
draft.brand_context.contentanyOf 1 / anyOf 1 | object | null在父物件中必填 | — |
draft.brand_context.contentanyOf 1 / anyOf 1 / anyOf 1 | object在父物件中必填 | — |
draft.brand_context.content.nameanyOf 1 / anyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_context.content.audienceanyOf 1 / anyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_context.content.voiceanyOf 1 / anyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_context.content.languageanyOf 1 / anyOf 1 / anyOf 1 | string | null在父物件中必填 | — |
draft.brand_context.content.languageanyOf 1 / anyOf 1 / anyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_context.content.languageanyOf 1 / anyOf 1 / anyOf 1 / anyOf 2 | null在父物件中必填 | — |
draft.brand_context.content.preferred_termsanyOf 1 / anyOf 1 / anyOf 1 | array在父物件中必填 |
|
draft.brand_context.content.preferred_terms[]anyOf 1 / anyOf 1 / anyOf 1 | string選填/項目 |
|
draft.brand_context.content.prohibited_termsanyOf 1 / anyOf 1 / anyOf 1 | array在父物件中必填 |
|
draft.brand_context.content.prohibited_terms[]anyOf 1 / anyOf 1 / anyOf 1 | string選填/項目 |
|
draft.brand_context.content.locked_factsanyOf 1 / anyOf 1 / anyOf 1 | array在父物件中必填 |
|
draft.brand_context.content.locked_facts[]anyOf 1 / anyOf 1 / anyOf 1 | string選填/項目 |
|
draft.brand_context.content.call_to_actionanyOf 1 / anyOf 1 / anyOf 1 | string | null在父物件中必填 | — |
draft.brand_context.content.call_to_actionanyOf 1 / anyOf 1 / anyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_context.content.call_to_actionanyOf 1 / anyOf 1 / anyOf 1 / anyOf 2 | null在父物件中必填 | — |
draft.brand_context.contentanyOf 1 / anyOf 1 / anyOf 2 | null在父物件中必填 | — |
draft.brand_context.sourcesanyOf 1 / anyOf 1 | object在父物件中必填 | — |
draft.brand_context.sources.websiteanyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_context.sources.logoanyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_context.sources.own_postsanyOf 1 / anyOf 1 | object在父物件中必填 | — |
draft.brand_context.sources.own_posts.selectedanyOf 1 / anyOf 1 | integer在父物件中必填 |
|
draft.brand_context.sources.own_posts.availableanyOf 1 / anyOf 1 | integer在父物件中必填 |
|
draft.brand_context.sources.own_posts.unavailableanyOf 1 / anyOf 1 | integer在父物件中必填 |
|
draft.brand_context.sources.own_posts.erasedanyOf 1 / anyOf 1 | integer在父物件中必填 |
|
draft.brand_contextanyOf 1 / anyOf 2 | null選填/項目 | — |
draft.brand_reviewanyOf 1 | object | null選填/項目 | — |
draft.brand_reviewanyOf 1 / anyOf 1 | object選填/項目 | — |
draft.brand_review.rule_versionanyOf 1 / anyOf 1 | number在父物件中必填 |
|
draft.brand_review.context_digestanyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_review.content_digestanyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_review.statusanyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_review.issuesanyOf 1 / anyOf 1 | array在父物件中必填 |
|
draft.brand_review.issues[]anyOf 1 / anyOf 1 | object選填/項目 | — |
draft.brand_review.issues[].codeanyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_review.issues[].targetanyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_review.issues[].rule_indexanyOf 1 / anyOf 1 | integer | null在父物件中必填 | — |
draft.brand_review.issues[].rule_indexanyOf 1 / anyOf 1 / anyOf 1 | integer在父物件中必填 |
|
draft.brand_review.issues[].rule_indexanyOf 1 / anyOf 1 / anyOf 2 | null在父物件中必填 | — |
draft.brand_review.issues[].messageanyOf 1 / anyOf 1 | string在父物件中必填 |
|
draft.brand_reviewanyOf 1 / anyOf 2 | null選填/項目 | — |
draftanyOf 2 | null在父物件中必填 | — |
完整 JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"handoff": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"workspace_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"mutation_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"brief_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"brief_revision": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"variant": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"revision": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"locale": {
"type": "string",
"enum": [
"en",
"zh-HK"
]
}
},
"required": [
"id",
"revision",
"locale"
]
},
"draft_id": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"draft_revision": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"created_at": {
"type": "string",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"format": "date-time"
},
"evidence": {
"maxItems": 500,
"type": "array",
"items": {
"type": "object",
"properties": {
"evidence_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"revision": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"evidence_id",
"revision"
]
}
},
"locked_finding_ids": {
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"availability": {
"type": "string",
"enum": [
"available",
"stale",
"unavailable"
]
},
"reasons": {
"maxItems": 6,
"type": "array",
"items": {
"type": "string",
"enum": [
"source_unavailable",
"source_changed",
"brief_changed",
"variant_changed",
"draft_changed",
"draft_unavailable",
"not_reviewed"
]
}
},
"method": {
"type": "string",
"const": "reviewed_manual_handoff/v1"
}
},
"required": [
"id",
"workspace_id",
"mutation_id",
"brief_id",
"brief_revision",
"variant",
"draft_id",
"draft_revision",
"created_at",
"evidence",
"locked_finding_ids",
"availability",
"reasons",
"method"
]
},
"draft": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"workspace_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"revision": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"state": {
"type": "string",
"enum": [
"draft",
"submitting",
"submitted"
]
},
"content": {
"type": "object",
"properties": {
"schemaVersion": {
"default": 1,
"type": "number",
"const": 1
},
"accountIds": {
"default": [],
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"caption": {
"default": "",
"type": "string",
"maxLength": 5000
},
"hashtags": {
"default": "",
"type": "string",
"maxLength": 5000
},
"assetIds": {
"default": [],
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"maxLength": 16,
"pattern": "^[1-9][0-9]*$"
}
},
"threadsTextOnly": {
"default": false,
"type": "boolean"
},
"threadsOptions": {
"type": "object",
"properties": {
"post_type": {
"type": "string",
"enum": [
"TEXT",
"IMAGE",
"VIDEO",
"CAROUSEL",
"REPOST"
]
},
"reply_to_id": {
"type": "string",
"maxLength": 128
},
"quote_post_id": {
"type": "string",
"maxLength": 128
},
"repost_target_id": {
"type": "string",
"maxLength": 128
},
"reply_control": {
"type": "string",
"enum": [
"everyone",
"accounts_you_follow",
"mentioned_only",
"parent_post_author_only",
"followers_only"
]
},
"enable_reply_approvals": {
"type": "boolean"
},
"link_attachment": {
"type": "string",
"maxLength": 2048
},
"poll_attachment": {
"type": "object",
"properties": {
"option_a": {
"type": "string",
"maxLength": 25
},
"option_b": {
"type": "string",
"maxLength": 25
},
"option_c": {
"type": "string",
"maxLength": 25
},
"option_d": {
"type": "string",
"maxLength": 25
}
},
"required": [
"option_a",
"option_b"
]
},
"gif_attachment": {
"type": "object",
"properties": {
"gif_id": {
"type": "string",
"maxLength": 128
},
"provider": {
"type": "string",
"const": "GIPHY"
}
},
"required": [
"gif_id",
"provider"
]
},
"text_attachment": {
"type": "object",
"properties": {
"plaintext": {
"type": "string",
"maxLength": 10000
},
"link_attachment_url": {
"type": "string",
"maxLength": 2048
},
"text_with_styling_info": {
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"length": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"styling_info": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"enum": [
"bold",
"italic",
"highlight",
"underline",
"strikethrough"
]
}
}
},
"required": [
"offset",
"length",
"styling_info"
]
}
}
},
"required": [
"plaintext"
]
},
"topic_tag": {
"type": "string",
"maxLength": 50
},
"text_entities": {
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"entity_type": {
"type": "string",
"enum": [
"SPOILER",
"spoiler"
]
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"length": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"entity_type",
"offset",
"length"
]
}
},
"is_spoiler_media": {
"type": "boolean"
},
"is_ghost_post": {
"type": "boolean"
},
"location_id": {
"type": "string",
"maxLength": 128
},
"allowlisted_country_codes": {
"minItems": 1,
"maxItems": 249,
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Z]{2}$"
}
},
"crossreshare_to_ig": {
"type": "boolean"
},
"crossreshare_to_ig_dark_mode": {
"type": "boolean"
},
"auto_publish_text": {
"type": "boolean"
},
"media_options": {
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"asset_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"alt_text": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"is_spoiler_media": {
"type": "boolean"
}
},
"required": [
"asset_id"
]
}
}
}
},
"instagramMode": {
"default": "REELS",
"type": "string",
"enum": [
"IMAGE",
"REELS",
"CAROUSEL",
"STORY_IMAGE",
"STORY_VIDEO"
]
},
"youtubeTitle": {
"default": "",
"type": "string",
"maxLength": 100
},
"youtubePrivacy": {
"default": "private",
"type": "string",
"enum": [
"private",
"unlisted",
"public"
]
},
"youtubeSynthetic": {
"default": false,
"type": "boolean"
},
"youtubeCategoryId": {
"default": "",
"type": "string",
"maxLength": 32
},
"youtubeShort": {
"default": false,
"type": "boolean"
},
"linkUrl": {
"default": "",
"type": "string",
"maxLength": 2048
},
"scheduledAt": {
"default": "",
"type": "string",
"maxLength": 64
},
"displayTimezone": {
"default": "UTC",
"type": "string",
"minLength": 1,
"maxLength": 128
},
"publishNow": {
"default": false,
"type": "boolean"
},
"destinationOverrides": {
"default": {},
"type": "object",
"propertyNames": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"additionalProperties": {
"type": "object",
"properties": {
"caption": {
"type": "string",
"maxLength": 5000
},
"scheduledAt": {
"type": "string",
"maxLength": 64
}
}
}
},
"expiresAt": {
"default": "",
"type": "string",
"maxLength": 64
}
},
"required": [
"schemaVersion",
"accountIds",
"caption",
"hashtags",
"assetIds",
"threadsTextOnly",
"instagramMode",
"youtubeTitle",
"youtubePrivacy",
"youtubeSynthetic",
"youtubeCategoryId",
"youtubeShort",
"linkUrl",
"scheduledAt",
"displayTimezone",
"publishNow",
"destinationOverrides",
"expiresAt"
]
},
"created_by": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"updated_by": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"created_at": {
"type": "string",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"format": "date-time"
},
"updated_at": {
"type": "string",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"format": "date-time"
},
"submission": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"expected_revision": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"started_at": {
"type": "string",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"format": "date-time"
},
"receipt": {
"anyOf": [
{
"type": "object",
"properties": {
"batch_id": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"successes": {
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"social_account_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"post_id": {
"type": "string",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
}
},
"required": [
"social_account_id",
"post_id"
]
}
},
"failures": {
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"social_account_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"code": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"message": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"social_account_id",
"code",
"message"
]
}
}
},
"required": [
"batch_id",
"successes",
"failures"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"expected_revision",
"started_at",
"receipt"
]
},
{
"type": "null"
}
]
},
"brand_context": {
"anyOf": [
{
"type": "object",
"properties": {
"workspace_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"selection": {
"type": "object",
"properties": {
"profile_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"version_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"revision": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"content_digest": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"context_digest": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"profile_id",
"version_id",
"revision",
"content_digest",
"context_digest"
]
},
"availability": {
"type": "string",
"enum": [
"available",
"missing"
]
},
"profile_state": {
"anyOf": [
{
"type": "string",
"enum": [
"active",
"archived"
]
},
{
"type": "null"
}
]
},
"content": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 120
},
"audience": {
"type": "string",
"maxLength": 2000
},
"voice": {
"type": "string",
"maxLength": 2000
},
"language": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 64
},
{
"type": "null"
}
]
},
"preferred_terms": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120
}
},
"prohibited_terms": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120
}
},
"locked_facts": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 500
}
},
"call_to_action": {
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"audience",
"voice",
"language",
"preferred_terms",
"prohibited_terms",
"locked_facts",
"call_to_action"
]
},
{
"type": "null"
}
]
},
"sources": {
"type": "object",
"properties": {
"website": {
"type": "string",
"enum": [
"available",
"not_available"
]
},
"logo": {
"type": "string",
"enum": [
"none",
"present",
"missing"
]
},
"own_posts": {
"type": "object",
"properties": {
"selected": {
"type": "integer",
"minimum": 0,
"maximum": 10
},
"available": {
"type": "integer",
"minimum": 0,
"maximum": 10
},
"unavailable": {
"type": "integer",
"minimum": 0,
"maximum": 10
},
"erased": {
"type": "integer",
"minimum": 0,
"maximum": 10
}
},
"required": [
"selected",
"available",
"unavailable",
"erased"
]
}
},
"required": [
"website",
"logo",
"own_posts"
]
}
},
"required": [
"workspace_id",
"selection",
"availability",
"profile_state",
"content",
"sources"
]
},
{
"type": "null"
}
]
},
"brand_review": {
"anyOf": [
{
"type": "object",
"properties": {
"rule_version": {
"type": "number",
"const": 1
},
"context_digest": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"content_digest": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"status": {
"type": "string",
"enum": [
"clear",
"attention",
"unavailable"
]
},
"issues": {
"maxItems": 5151,
"type": "array",
"items": {
"type": "object",
"properties": {
"code": {
"type": "string",
"enum": [
"prohibited_term",
"locked_fact_missing",
"conflicting_rule",
"context_unavailable"
]
},
"target": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"rule_index": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 49
},
{
"type": "null"
}
]
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 240
}
},
"required": [
"code",
"target",
"rule_index",
"message"
]
}
}
},
"required": [
"rule_version",
"context_digest",
"content_digest",
"status",
"issues"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"workspace_id",
"revision",
"state",
"content",
"created_by",
"updated_by",
"created_at",
"updated_at",
"submission"
]
},
{
"type": "null"
}
]
}
},
"required": [
"handoff",
"draft"
]
}錯誤與安全重試
檢查 HTTP 狀態和回應內容。400 驗證錯誤可能包含 ZodError;處理常式錯誤使用 error、message 和 code 欄位。保留 request_id 或 x-request-id 以便診斷,但不要保留憑證。先解決 401/403 存取錯誤再重試,並在收到 429 時遵循 Retry-After。如寫入結果不確定或回傳 5xx,先讀取現有結果。僅在支援時重複使用冪等鍵;重試行為因操作而異,並不保證恰好傳送一次。
故障排查指南範例
這些範例使用已依結構描述檢查的虛構值。請將 ID 替換為您有權使用的 ID、將媒體替換為已就緒素材,並將日期替換為已確認的發布時間。提交寫入前,請檢查帳號資格。本頁不會傳送 API 請求。
在伺服器上將 SOSOAPI_ACCESS_TOKEN 設為此操作接受的憑證,且不要放入瀏覽器程式碼。AI 代理程式請使用 sosoapi auth login 透過瀏覽器登入,並由 CLI 更新憑證。
request.json
{
"workspace_id": "11111111-1111-4111-8111-111111111111",
"mutation_id": "11111111-1111-4111-8111-111111111111",
"brief_id": "11111111-1111-4111-8111-111111111111",
"brief_revision": 1,
"variant_id": "11111111-1111-4111-8111-111111111111",
"variant_revision": 1,
"content": {}
}cURL
curl --request POST \
"https://gqeshlawtcexsapabaui.supabase.co/functions/v1/research-api/briefs/handoff" \
-H "Authorization: Bearer $SOSOAPI_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
--data-binary @request.jsonJavaScript
// Server-side JavaScript. Do not print tokens or credential-bearing responses.
const token = process.env.SOSOAPI_ACCESS_TOKEN;
if (!token) throw new Error("Set an accepted credential for this operation");
const response = await fetch("https://gqeshlawtcexsapabaui.supabase.co/functions/v1/research-api/briefs/handoff", {
method: "POST",
headers: { "Content-Type": "application/json", Authorization: "Bearer " + token },
body: JSON.stringify({
"workspace_id": "11111111-1111-4111-8111-111111111111",
"mutation_id": "11111111-1111-4111-8111-111111111111",
"brief_id": "11111111-1111-4111-8111-111111111111",
"brief_revision": 1,
"variant_id": "11111111-1111-4111-8111-111111111111",
"variant_revision": 1,
"content": {}
})
});
const result = await response.json();
// Check response.ok, the operation-specific body and completion state before continuing.CLI
npx sosoapi api post /research-api/briefs/handoff < request.json合成回應範例
{
"handoff": {
"id": "11111111-1111-4111-8111-111111111111",
"workspace_id": "11111111-1111-4111-8111-111111111111",
"mutation_id": "11111111-1111-4111-8111-111111111111",
"brief_id": "11111111-1111-4111-8111-111111111111",
"brief_revision": 1,
"variant": {
"id": "11111111-1111-4111-8111-111111111111",
"revision": 1,
"locale": "en"
},
"draft_id": null,
"draft_revision": 1,
"created_at": "2099-01-15T09:00:00Z",
"evidence": [],
"locked_finding_ids": [],
"availability": "available",
"reasons": [],
"method": "reviewed_manual_handoff/v1"
},
"draft": null
}