隱私偏好

必要功能

用於安全驗證及網站基本功能。

一律啟用

Landing 診斷與遮蔽重播

使用僅限此分頁的匿名識別碼,衡量公開網站造訪、流失及註冊連結互動,不會連結帳號。所有文字均會遮蔽,表單也會封鎖。

選用的使用分析

允許 PostHog 使用分析嗎?可隨時在頁尾更改選擇。

同時允許在此公開網站進行工作階段重播

選用跨網站模式的重播會顯示公開頁面與互動,並遮蔽輸入內容及私人內容。應用程式重播需另外選擇。

需要允許選用分析;此跨網站模式的重播預設關閉。上方的 Landing 模式會獨立運作。

瀏覽器分析選擇不會啟用帳戶分析。

僅在使用時載入搜尋。在下方瀏覽所有類別。

廣告

核對廣告操作

重新讀取確切且結果不明的廣告操作,不會重新傳送。預期狀態的觀察與原有平台結果分開保留。

POST /advertising-api/actions/reconcile

契約檢閱日期: · sha256:9aedef8d43dd4514

概覽

重新讀取確切且結果不明的廣告操作,不會重新傳送。預期狀態的觀察與原有平台結果分開保留。

成功 HTTP 回應可能表示請求已接受,並非已完成。背景工作請儲存回傳 ID,持續檢查同一操作直到完成。已排程或已接受的貼文,只有平台確認後才算已發布;用戶端逾時無法證明結果。

驗證與權限

接受的憑證類別
user_session, delegated_oauth, personal_access_token
委派能力
agent:advertising_manage
最低工作空間角色
editor
存取範圍
此使用者有權存取的資源
需要所有工作空間同意
否
變更狀態
是
操作完成時
synchronous_http_response

權杖只能使用其擁有者持有的權利。每次請求會檢查工作空間成員資格、資源擁有權、所選工作空間及已授予能力。core 與 full 設定檔只變更顯示的工具,不會授予存取權。

請求欄位

「必填」是指在其父物件及所選分支內必填。必填子欄位不會使選填父物件變成必填。下列規則與欄位名稱均複製自契約。

請求欄位
欄位 / 分支類型 / 必填約束
$object在父物件中必填
  • additionalProperties: false
workspace_idstring在父物件中必填
  • 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)$"
action_idstring在父物件中必填
  • 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)$"
candidate_provider_idstring選填/項目
  • pattern: "^[1-9]\\d{1,24}$"
完整 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)$"
    },
    "action_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)$"
    },
    "candidate_provider_id": {
      "type": "string",
      "pattern": "^[1-9]\\d{1,24}$"
    }
  },
  "required": [
    "workspace_id",
    "action_id"
  ],
  "additionalProperties": false
}

回應與完成

成功 HTTP 狀態:200。操作完成時: synchronous_http_response.

成功 HTTP 回應可能表示請求已接受,並非已完成。背景工作請儲存回傳 ID,持續檢查同一操作直到完成。已排程或已接受的貼文,只有平台確認後才算已發布;用戶端逾時無法證明結果。

「必填」是指在其父物件及所選分支內必填。必填子欄位不會使選填父物件變成必填。下列規則與欄位名稱均複製自契約。

回應與完成
欄位 / 分支類型 / 必填約束
$object在父物件中必填—
contract_versionstring在父物件中必填
  • const: "advertising/v1"
actionobject在父物件中必填—
action.idstring在父物件中必填
  • 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)$"
action.workspace_idstring在父物件中必填
  • 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)$"
action.advertising_account_idstring在父物件中必填
  • 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)$"
action.mutation_idstring在父物件中必填
  • 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)$"
action.statusstring在父物件中必填
  • enum: ["prepared","queued","processing","succeeded","failed","unknown","cancelled"]
action.commandobject在父物件中必填—
action.commandoneOf 1object在父物件中必填—
action.command.operationoneOf 1string在父物件中必填
  • const: "create_campaign"
action.command.nameoneOf 1string在父物件中必填
  • minLength: 1
  • maxLength: 200
action.command.budgetoneOf 1object選填/項目—
action.command.budget.kindoneOf 1string在父物件中必填
  • enum: ["daily","lifetime"]
action.command.budget.amount_minoroneOf 1string在父物件中必填
  • pattern: "^[1-9]\\d{0,11}$"
action.command.objectiveoneOf 1string在父物件中必填
  • enum: ["OUTCOME_AWARENESS","OUTCOME_ENGAGEMENT","OUTCOME_LEADS","OUTCOME_SALES","OUTCOME_TRAFFIC","OUTCOME_APP_PROMOTION"]
action.command.special_ad_categoriesoneOf 1array在父物件中必填
  • maxItems: 4
  • default: []
action.command.special_ad_categories[]oneOf 1string選填/項目
  • enum: ["CREDIT","EMPLOYMENT","HOUSING","ISSUES_ELECTIONS_POLITICS"]
action.command.statusoneOf 1string在父物件中必填
  • const: "PAUSED"
  • default: "PAUSED"
action.commandoneOf 2object在父物件中必填—
action.command.operationoneOf 2string在父物件中必填
  • const: "update_campaign"
action.command.object_idoneOf 2string在父物件中必填
  • pattern: "^[1-9]\\d{1,24}$"
action.command.nameoneOf 2string選填/項目
  • minLength: 1
  • maxLength: 200
action.command.budgetoneOf 2object選填/項目—
action.command.budget.kindoneOf 2string在父物件中必填
  • enum: ["daily","lifetime"]
action.command.budget.amount_minoroneOf 2string在父物件中必填
  • pattern: "^[1-9]\\d{0,11}$"
action.command.statusoneOf 2string選填/項目
  • enum: ["ACTIVE","PAUSED","ARCHIVED"]
action.commandoneOf 3object在父物件中必填—
action.command.operationoneOf 3string在父物件中必填
  • const: "create_adset"
action.command.campaign_idoneOf 3string在父物件中必填
  • pattern: "^[1-9]\\d{1,24}$"
action.command.nameoneOf 3string在父物件中必填
  • minLength: 1
  • maxLength: 200
action.command.budgetoneOf 3object選填/項目—
action.command.budget.kindoneOf 3string在父物件中必填
  • enum: ["daily","lifetime"]
action.command.budget.amount_minoroneOf 3string在父物件中必填
  • pattern: "^[1-9]\\d{0,11}$"
action.command.targetingoneOf 3object在父物件中必填—
action.command.targeting.geo_locationsoneOf 3object在父物件中必填—
action.command.targeting.geo_locations.countriesoneOf 3array在父物件中必填
  • minItems: 1
  • maxItems: 25
action.command.targeting.geo_locations.countries[]oneOf 3string選填/項目
  • pattern: "^[A-Z]{2}$"
action.command.targeting.age_minoneOf 3integer在父物件中必填
  • minimum: 18
  • maximum: 65
  • default: 18
action.command.targeting.age_maxoneOf 3integer在父物件中必填
  • minimum: 18
  • maximum: 65
  • default: 65
action.command.targeting.gendersoneOf 3array選填/項目
  • minItems: 1
  • maxItems: 2
action.command.targeting.genders[]oneOf 3number選填/項目—
action.command.targeting.genders[]oneOf 3 / anyOf 1number選填/項目
  • const: 1
action.command.targeting.genders[]oneOf 3 / anyOf 2number選填/項目
  • const: 2
action.command.targeting.localesoneOf 3array選填/項目
  • maxItems: 25
action.command.targeting.locales[]oneOf 3integer選填/項目
  • maximum: 9007199254740991
  • exclusiveMinimum: 0
action.command.targeting.publisher_platformsoneOf 3array在父物件中必填
  • minItems: 1
  • maxItems: 3
action.command.targeting.publisher_platforms[]oneOf 3string選填/項目
  • enum: ["facebook","instagram","threads"]
action.command.targeting.facebook_positionsoneOf 3array選填/項目
  • maxItems: 4
action.command.targeting.facebook_positions[]oneOf 3string選填/項目
  • enum: ["feed","story","facebook_reels","video_feeds"]
action.command.targeting.instagram_positionsoneOf 3array選填/項目
  • maxItems: 4
action.command.targeting.instagram_positions[]oneOf 3string選填/項目
  • enum: ["stream","story","reels","explore"]
action.command.targeting.threads_positionsoneOf 3array選填/項目
  • maxItems: 1
action.command.targeting.threads_positions[]oneOf 3string選填/項目
  • const: "threads_stream"
action.command.targeting.custom_audience_idsoneOf 3array選填/項目
  • maxItems: 4
action.command.targeting.custom_audience_ids[]oneOf 3string選填/項目
  • pattern: "^[1-9]\\d{1,24}$"
action.command.targeting.excluded_custom_audience_idsoneOf 3array選填/項目
  • maxItems: 4
action.command.targeting.excluded_custom_audience_ids[]oneOf 3string選填/項目
  • pattern: "^[1-9]\\d{1,24}$"
action.command.billing_eventoneOf 3string在父物件中必填
  • enum: ["IMPRESSIONS","LINK_CLICKS"]
action.command.optimization_goaloneOf 3string在父物件中必填
  • enum: ["REACH","IMPRESSIONS","LINK_CLICKS","LANDING_PAGE_VIEWS","OFFSITE_CONVERSIONS","LEAD_GENERATION"]
action.command.bid_strategyoneOf 3string在父物件中必填
  • const: "LOWEST_COST_WITHOUT_CAP"
  • default: "LOWEST_COST_WITHOUT_CAP"
action.command.start_timeoneOf 3string選填/項目
  • format: "date-time"
  • 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)))$"
action.command.end_timeoneOf 3string選填/項目
  • format: "date-time"
  • 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)))$"
action.command.promoted_objectoneOf 3object選填/項目—
action.command.promoted_object.page_idoneOf 3string選填/項目
  • pattern: "^[1-9]\\d{1,24}$"
action.command.promoted_object.pixel_idoneOf 3string選填/項目
  • pattern: "^[1-9]\\d{1,24}$"
action.command.promoted_object.custom_event_typeoneOf 3string選填/項目
  • enum: ["PURCHASE","LEAD","COMPLETE_REGISTRATION","ADD_TO_CART"]
action.command.statusoneOf 3string在父物件中必填
  • const: "PAUSED"
  • default: "PAUSED"
action.commandoneOf 4object在父物件中必填—
action.command.operationoneOf 4string在父物件中必填
  • const: "update_adset"
action.command.object_idoneOf 4string在父物件中必填
  • pattern: "^[1-9]\\d{1,24}$"
action.command.nameoneOf 4string選填/項目
  • minLength: 1
  • maxLength: 200
action.command.budgetoneOf 4object選填/項目—
action.command.budget.kindoneOf 4string在父物件中必填
  • enum: ["daily","lifetime"]
action.command.budget.amount_minoroneOf 4string在父物件中必填
  • pattern: "^[1-9]\\d{0,11}$"
action.command.statusoneOf 4string選填/項目
  • enum: ["ACTIVE","PAUSED","ARCHIVED"]
action.command.targetingoneOf 4object選填/項目—
action.command.targeting.geo_locationsoneOf 4object在父物件中必填—
action.command.targeting.geo_locations.countriesoneOf 4array在父物件中必填
  • minItems: 1
  • maxItems: 25
action.command.targeting.geo_locations.countries[]oneOf 4string選填/項目
  • pattern: "^[A-Z]{2}$"
action.command.targeting.age_minoneOf 4integer在父物件中必填
  • minimum: 18
  • maximum: 65
  • default: 18
action.command.targeting.age_maxoneOf 4integer在父物件中必填
  • minimum: 18
  • maximum: 65
  • default: 65
action.command.targeting.gendersoneOf 4array選填/項目
  • minItems: 1
  • maxItems: 2
action.command.targeting.genders[]oneOf 4number選填/項目—
action.command.targeting.genders[]oneOf 4 / anyOf 1number選填/項目
  • const: 1
action.command.targeting.genders[]oneOf 4 / anyOf 2number選填/項目
  • const: 2
action.command.targeting.localesoneOf 4array選填/項目
  • maxItems: 25
action.command.targeting.locales[]oneOf 4integer選填/項目
  • maximum: 9007199254740991
  • exclusiveMinimum: 0
action.command.targeting.publisher_platformsoneOf 4array在父物件中必填
  • minItems: 1
  • maxItems: 3
action.command.targeting.publisher_platforms[]oneOf 4string選填/項目
  • enum: ["facebook","instagram","threads"]
action.command.targeting.facebook_positionsoneOf 4array選填/項目
  • maxItems: 4
action.command.targeting.facebook_positions[]oneOf 4string選填/項目
  • enum: ["feed","story","facebook_reels","video_feeds"]
action.command.targeting.instagram_positionsoneOf 4array選填/項目
  • maxItems: 4
action.command.targeting.instagram_positions[]oneOf 4string選填/項目
  • enum: ["stream","story","reels","explore"]
action.command.targeting.threads_positionsoneOf 4array選填/項目
  • maxItems: 1
action.command.targeting.threads_positions[]oneOf 4string選填/項目
  • const: "threads_stream"
action.command.targeting.custom_audience_idsoneOf 4array選填/項目
  • maxItems: 4
action.command.targeting.custom_audience_ids[]oneOf 4string選填/項目
  • pattern: "^[1-9]\\d{1,24}$"
action.command.targeting.excluded_custom_audience_idsoneOf 4array選填/項目
  • maxItems: 4
action.command.targeting.excluded_custom_audience_ids[]oneOf 4string選填/項目
  • pattern: "^[1-9]\\d{1,24}$"
action.command.start_timeoneOf 4string選填/項目
  • format: "date-time"
  • 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)))$"
action.command.end_timeoneOf 4string選填/項目
  • format: "date-time"
  • 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)))$"
action.commandoneOf 5object在父物件中必填—
action.command.operationoneOf 5string在父物件中必填
  • const: "create_ad"
action.command.nameoneOf 5string在父物件中必填
  • minLength: 1
  • maxLength: 200
action.command.adset_idoneOf 5string在父物件中必填
  • pattern: "^[1-9]\\d{1,24}$"
action.command.creative_idoneOf 5string在父物件中必填
  • pattern: "^[1-9]\\d{1,24}$"
action.command.statusoneOf 5string在父物件中必填
  • const: "PAUSED"
  • default: "PAUSED"
action.commandoneOf 6object在父物件中必填—
action.command.operationoneOf 6string在父物件中必填
  • const: "update_ad"
action.command.object_idoneOf 6string在父物件中必填
  • pattern: "^[1-9]\\d{1,24}$"
action.command.nameoneOf 6string選填/項目
  • minLength: 1
  • maxLength: 200
action.command.creative_idoneOf 6string選填/項目
  • pattern: "^[1-9]\\d{1,24}$"
action.command.statusoneOf 6string選填/項目
  • enum: ["ACTIVE","PAUSED","ARCHIVED"]
action.commandoneOf 7object在父物件中必填—
action.command.operationoneOf 7string在父物件中必填
  • const: "create_creative"
action.command.nameoneOf 7string在父物件中必填
  • minLength: 1
  • maxLength: 200
action.command.object_story_speconeOf 7object選填/項目—
action.command.object_story_spec.page_idoneOf 7string在父物件中必填
  • pattern: "^[1-9]\\d{1,24}$"
action.command.object_story_spec.instagram_user_idoneOf 7string選填/項目
  • pattern: "^[1-9]\\d{1,24}$"
action.command.object_story_spec.link_dataoneOf 7object在父物件中必填—
action.command.object_story_spec.link_data.linkoneOf 7string在父物件中必填
  • format: "uri"
  • maxLength: 2048
action.command.object_story_spec.link_data.messageoneOf 7string在父物件中必填
  • maxLength: 5000
action.command.object_story_spec.link_data.nameoneOf 7string選填/項目
  • minLength: 1
  • maxLength: 200
action.command.object_story_spec.link_data.image_hashoneOf 7string在父物件中必填
  • pattern: "^[a-fA-F0-9]{16,128}$"
action.command.object_story_spec.link_data.call_to_actiononeOf 7string選填/項目
  • enum: ["LEARN_MORE","SHOP_NOW","SIGN_UP","CONTACT_US"]
action.command.object_story_idoneOf 7string選填/項目
  • pattern: "^[1-9]\\d{1,24}_[1-9]\\d{1,24}$"
action.commandoneOf 8object在父物件中必填—
action.command.operationoneOf 8string在父物件中必填
  • const: "create_saved_audience"
action.command.nameoneOf 8string在父物件中必填
  • minLength: 1
  • maxLength: 200
action.command.targetingoneOf 8object在父物件中必填—
action.command.targeting.geo_locationsoneOf 8object在父物件中必填—
action.command.targeting.geo_locations.countriesoneOf 8array在父物件中必填
  • minItems: 1
  • maxItems: 25
action.command.targeting.geo_locations.countries[]oneOf 8string選填/項目
  • pattern: "^[A-Z]{2}$"
action.command.targeting.age_minoneOf 8integer在父物件中必填
  • minimum: 18
  • maximum: 65
  • default: 18
action.command.targeting.age_maxoneOf 8integer在父物件中必填
  • minimum: 18
  • maximum: 65
  • default: 65
action.command.targeting.gendersoneOf 8array選填/項目
  • minItems: 1
  • maxItems: 2
action.command.targeting.genders[]oneOf 8number選填/項目—
action.command.targeting.genders[]oneOf 8 / anyOf 1number選填/項目
  • const: 1
action.command.targeting.genders[]oneOf 8 / anyOf 2number選填/項目
  • const: 2
action.command.targeting.localesoneOf 8array選填/項目
  • maxItems: 25
action.command.targeting.locales[]oneOf 8integer選填/項目
  • maximum: 9007199254740991
  • exclusiveMinimum: 0
action.command.targeting.publisher_platformsoneOf 8array在父物件中必填
  • minItems: 1
  • maxItems: 3
action.command.targeting.publisher_platforms[]oneOf 8string選填/項目
  • enum: ["facebook","instagram","threads"]
action.command.targeting.facebook_positionsoneOf 8array選填/項目
  • maxItems: 4
action.command.targeting.facebook_positions[]oneOf 8string選填/項目
  • enum: ["feed","story","facebook_reels","video_feeds"]
action.command.targeting.instagram_positionsoneOf 8array選填/項目
  • maxItems: 4
action.command.targeting.instagram_positions[]oneOf 8string選填/項目
  • enum: ["stream","story","reels","explore"]
action.command.targeting.threads_positionsoneOf 8array選填/項目
  • maxItems: 1
action.command.targeting.threads_positions[]oneOf 8string選填/項目
  • const: "threads_stream"
action.command.targeting.custom_audience_idsoneOf 8array選填/項目
  • maxItems: 4
action.command.targeting.custom_audience_ids[]oneOf 8string選填/項目
  • pattern: "^[1-9]\\d{1,24}$"
action.command.targeting.excluded_custom_audience_idsoneOf 8array選填/項目
  • maxItems: 4
action.command.targeting.excluded_custom_audience_ids[]oneOf 8string選填/項目
  • pattern: "^[1-9]\\d{1,24}$"
action.commandoneOf 9object在父物件中必填—
action.command.operationoneOf 9string在父物件中必填
  • const: "update_saved_audience"
action.command.object_idoneOf 9string在父物件中必填
  • pattern: "^[1-9]\\d{1,24}$"
action.command.nameoneOf 9string選填/項目
  • minLength: 1
  • maxLength: 200
action.command.targetingoneOf 9object選填/項目—
action.command.targeting.geo_locationsoneOf 9object在父物件中必填—
action.command.targeting.geo_locations.countriesoneOf 9array在父物件中必填
  • minItems: 1
  • maxItems: 25
action.command.targeting.geo_locations.countries[]oneOf 9string選填/項目
  • pattern: "^[A-Z]{2}$"
action.command.targeting.age_minoneOf 9integer在父物件中必填
  • minimum: 18
  • maximum: 65
  • default: 18
action.command.targeting.age_maxoneOf 9integer在父物件中必填
  • minimum: 18
  • maximum: 65
  • default: 65
action.command.targeting.gendersoneOf 9array選填/項目
  • minItems: 1
  • maxItems: 2
action.command.targeting.genders[]oneOf 9number選填/項目—
action.command.targeting.genders[]oneOf 9 / anyOf 1number選填/項目
  • const: 1
action.command.targeting.genders[]oneOf 9 / anyOf 2number選填/項目
  • const: 2
action.command.targeting.localesoneOf 9array選填/項目
  • maxItems: 25
action.command.targeting.locales[]oneOf 9integer選填/項目
  • maximum: 9007199254740991
  • exclusiveMinimum: 0
action.command.targeting.publisher_platformsoneOf 9array在父物件中必填
  • minItems: 1
  • maxItems: 3
action.command.targeting.publisher_platforms[]oneOf 9string選填/項目
  • enum: ["facebook","instagram","threads"]
action.command.targeting.facebook_positionsoneOf 9array選填/項目
  • maxItems: 4
action.command.targeting.facebook_positions[]oneOf 9string選填/項目
  • enum: ["feed","story","facebook_reels","video_feeds"]
action.command.targeting.instagram_positionsoneOf 9array選填/項目
  • maxItems: 4
action.command.targeting.instagram_positions[]oneOf 9string選填/項目
  • enum: ["stream","story","reels","explore"]
action.command.targeting.threads_positionsoneOf 9array選填/項目
  • maxItems: 1
action.command.targeting.threads_positions[]oneOf 9string選填/項目
  • const: "threads_stream"
action.command.targeting.custom_audience_idsoneOf 9array選填/項目
  • maxItems: 4
action.command.targeting.custom_audience_ids[]oneOf 9string選填/項目
  • pattern: "^[1-9]\\d{1,24}$"
action.command.targeting.excluded_custom_audience_idsoneOf 9array選填/項目
  • maxItems: 4
action.command.targeting.excluded_custom_audience_ids[]oneOf 9string選填/項目
  • pattern: "^[1-9]\\d{1,24}$"
action.reviewed_digeststring在父物件中必填
  • pattern: "^[a-f0-9]{64}$"
action.effectsobject在父物件中必填—
action.effects.creates_objectboolean在父物件中必填—
action.effects.initial_statusstring | null在父物件中必填—
action.effects.initial_statusanyOf 1string在父物件中必填
  • const: "PAUSED"
action.effects.initial_statusanyOf 2null在父物件中必填—
action.effects.activates_deliveryboolean在父物件中必填—
action.effects.changes_budgetboolean在父物件中必填—
action.effects.changes_audienceboolean在父物件中必填—
action.effects.changes_creativeboolean在父物件中必填—
action.effects.currencystring在父物件中必填
  • pattern: "^[A-Z]{3}$"
action.effects.timezonestring在父物件中必填
  • minLength: 1
  • maxLength: 100
action.effects.budgetobject | null在父物件中必填—
action.effects.budgetanyOf 1object在父物件中必填—
action.effects.budget.kindanyOf 1string在父物件中必填
  • enum: ["daily","lifetime"]
action.effects.budget.amount_minoranyOf 1string在父物件中必填
  • pattern: "^[1-9]\\d{0,11}$"
action.effects.budgetanyOf 2null在父物件中必填—
action.live_approvalobject在父物件中必填—
action.live_approval.requiredboolean在父物件中必填—
action.live_approval.statestring在父物件中必填
  • enum: ["not_required","missing","approved","expired","revoked","invalid"]
action.live_approval.reasonstring | null在父物件中必填—
action.live_approval.reasonanyOf 1string在父物件中必填
  • maxLength: 100
action.live_approval.reasonanyOf 2null在父物件中必填—
action.live_approval.expires_atstring | null在父物件中必填—
action.live_approval.expires_atanyOf 1string在父物件中必填
  • format: "date-time"
  • 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)))$"
action.live_approval.expires_atanyOf 2null在父物件中必填—
action.live_approval.approved_bystring | null在父物件中必填—
action.live_approval.approved_byanyOf 1string在父物件中必填
  • 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)$"
action.live_approval.approved_byanyOf 2null在父物件中必填—
action.provider_object_idstring | null在父物件中必填—
action.provider_object_idanyOf 1string在父物件中必填
  • pattern: "^[1-9]\\d{1,24}$"
action.provider_object_idanyOf 2null在父物件中必填—
action.failure_codestring | null在父物件中必填—
action.failure_codeanyOf 1string在父物件中必填
  • maxLength: 100
action.failure_codeanyOf 2null在父物件中必填—
action.created_atstring在父物件中必填
  • format: "date-time"
  • 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)))$"
action.completed_atstring | null在父物件中必填—
action.completed_atanyOf 1string在父物件中必填
  • format: "date-time"
  • 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)))$"
action.completed_atanyOf 2null在父物件中必填—
resultstring在父物件中必填
  • enum: ["desired_state_observed","unresolved"]
provider_object_idstring | null在父物件中必填—
provider_object_idanyOf 1string在父物件中必填
  • pattern: "^[1-9]\\d{1,24}$"
provider_object_idanyOf 2null在父物件中必填—
observed_atstring在父物件中必填
  • format: "date-time"
  • 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)))$"
完整 JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "contract_version": {
      "type": "string",
      "const": "advertising/v1"
    },
    "action": {
      "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)$"
        },
        "advertising_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)$"
        },
        "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)$"
        },
        "status": {
          "type": "string",
          "enum": [
            "prepared",
            "queued",
            "processing",
            "succeeded",
            "failed",
            "unknown",
            "cancelled"
          ]
        },
        "command": {
          "oneOf": [
            {
              "type": "object",
              "properties": {
                "operation": {
                  "type": "string",
                  "const": "create_campaign"
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "budget": {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "enum": [
                        "daily",
                        "lifetime"
                      ]
                    },
                    "amount_minor": {
                      "type": "string",
                      "pattern": "^[1-9]\\d{0,11}$"
                    }
                  },
                  "required": [
                    "kind",
                    "amount_minor"
                  ]
                },
                "objective": {
                  "type": "string",
                  "enum": [
                    "OUTCOME_AWARENESS",
                    "OUTCOME_ENGAGEMENT",
                    "OUTCOME_LEADS",
                    "OUTCOME_SALES",
                    "OUTCOME_TRAFFIC",
                    "OUTCOME_APP_PROMOTION"
                  ]
                },
                "special_ad_categories": {
                  "default": [],
                  "maxItems": 4,
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "CREDIT",
                      "EMPLOYMENT",
                      "HOUSING",
                      "ISSUES_ELECTIONS_POLITICS"
                    ]
                  }
                },
                "status": {
                  "default": "PAUSED",
                  "type": "string",
                  "const": "PAUSED"
                }
              },
              "required": [
                "operation",
                "name",
                "objective",
                "special_ad_categories",
                "status"
              ]
            },
            {
              "type": "object",
              "properties": {
                "operation": {
                  "type": "string",
                  "const": "update_campaign"
                },
                "object_id": {
                  "type": "string",
                  "pattern": "^[1-9]\\d{1,24}$"
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "budget": {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "enum": [
                        "daily",
                        "lifetime"
                      ]
                    },
                    "amount_minor": {
                      "type": "string",
                      "pattern": "^[1-9]\\d{0,11}$"
                    }
                  },
                  "required": [
                    "kind",
                    "amount_minor"
                  ]
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "ACTIVE",
                    "PAUSED",
                    "ARCHIVED"
                  ]
                }
              },
              "required": [
                "operation",
                "object_id"
              ]
            },
            {
              "type": "object",
              "properties": {
                "operation": {
                  "type": "string",
                  "const": "create_adset"
                },
                "campaign_id": {
                  "type": "string",
                  "pattern": "^[1-9]\\d{1,24}$"
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "budget": {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "enum": [
                        "daily",
                        "lifetime"
                      ]
                    },
                    "amount_minor": {
                      "type": "string",
                      "pattern": "^[1-9]\\d{0,11}$"
                    }
                  },
                  "required": [
                    "kind",
                    "amount_minor"
                  ]
                },
                "targeting": {
                  "type": "object",
                  "properties": {
                    "geo_locations": {
                      "type": "object",
                      "properties": {
                        "countries": {
                          "minItems": 1,
                          "maxItems": 25,
                          "type": "array",
                          "items": {
                            "type": "string",
                            "pattern": "^[A-Z]{2}$"
                          }
                        }
                      },
                      "required": [
                        "countries"
                      ]
                    },
                    "age_min": {
                      "default": 18,
                      "type": "integer",
                      "minimum": 18,
                      "maximum": 65
                    },
                    "age_max": {
                      "default": 65,
                      "type": "integer",
                      "minimum": 18,
                      "maximum": 65
                    },
                    "genders": {
                      "minItems": 1,
                      "maxItems": 2,
                      "type": "array",
                      "items": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 1
                          },
                          {
                            "type": "number",
                            "const": 2
                          }
                        ]
                      }
                    },
                    "locales": {
                      "maxItems": 25,
                      "type": "array",
                      "items": {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      }
                    },
                    "publisher_platforms": {
                      "minItems": 1,
                      "maxItems": 3,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "facebook",
                          "instagram",
                          "threads"
                        ]
                      }
                    },
                    "facebook_positions": {
                      "maxItems": 4,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "feed",
                          "story",
                          "facebook_reels",
                          "video_feeds"
                        ]
                      }
                    },
                    "instagram_positions": {
                      "maxItems": 4,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "stream",
                          "story",
                          "reels",
                          "explore"
                        ]
                      }
                    },
                    "threads_positions": {
                      "maxItems": 1,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "const": "threads_stream"
                      }
                    },
                    "custom_audience_ids": {
                      "maxItems": 4,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "pattern": "^[1-9]\\d{1,24}$"
                      }
                    },
                    "excluded_custom_audience_ids": {
                      "maxItems": 4,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "pattern": "^[1-9]\\d{1,24}$"
                      }
                    }
                  },
                  "required": [
                    "geo_locations",
                    "age_min",
                    "age_max",
                    "publisher_platforms"
                  ]
                },
                "billing_event": {
                  "type": "string",
                  "enum": [
                    "IMPRESSIONS",
                    "LINK_CLICKS"
                  ]
                },
                "optimization_goal": {
                  "type": "string",
                  "enum": [
                    "REACH",
                    "IMPRESSIONS",
                    "LINK_CLICKS",
                    "LANDING_PAGE_VIEWS",
                    "OFFSITE_CONVERSIONS",
                    "LEAD_GENERATION"
                  ]
                },
                "bid_strategy": {
                  "default": "LOWEST_COST_WITHOUT_CAP",
                  "type": "string",
                  "const": "LOWEST_COST_WITHOUT_CAP"
                },
                "start_time": {
                  "type": "string",
                  "format": "date-time",
                  "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)))$"
                },
                "end_time": {
                  "type": "string",
                  "format": "date-time",
                  "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)))$"
                },
                "promoted_object": {
                  "type": "object",
                  "properties": {
                    "page_id": {
                      "type": "string",
                      "pattern": "^[1-9]\\d{1,24}$"
                    },
                    "pixel_id": {
                      "type": "string",
                      "pattern": "^[1-9]\\d{1,24}$"
                    },
                    "custom_event_type": {
                      "type": "string",
                      "enum": [
                        "PURCHASE",
                        "LEAD",
                        "COMPLETE_REGISTRATION",
                        "ADD_TO_CART"
                      ]
                    }
                  }
                },
                "status": {
                  "default": "PAUSED",
                  "type": "string",
                  "const": "PAUSED"
                }
              },
              "required": [
                "operation",
                "campaign_id",
                "name",
                "targeting",
                "billing_event",
                "optimization_goal",
                "bid_strategy",
                "status"
              ]
            },
            {
              "type": "object",
              "properties": {
                "operation": {
                  "type": "string",
                  "const": "update_adset"
                },
                "object_id": {
                  "type": "string",
                  "pattern": "^[1-9]\\d{1,24}$"
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "budget": {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "enum": [
                        "daily",
                        "lifetime"
                      ]
                    },
                    "amount_minor": {
                      "type": "string",
                      "pattern": "^[1-9]\\d{0,11}$"
                    }
                  },
                  "required": [
                    "kind",
                    "amount_minor"
                  ]
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "ACTIVE",
                    "PAUSED",
                    "ARCHIVED"
                  ]
                },
                "targeting": {
                  "type": "object",
                  "properties": {
                    "geo_locations": {
                      "type": "object",
                      "properties": {
                        "countries": {
                          "minItems": 1,
                          "maxItems": 25,
                          "type": "array",
                          "items": {
                            "type": "string",
                            "pattern": "^[A-Z]{2}$"
                          }
                        }
                      },
                      "required": [
                        "countries"
                      ]
                    },
                    "age_min": {
                      "default": 18,
                      "type": "integer",
                      "minimum": 18,
                      "maximum": 65
                    },
                    "age_max": {
                      "default": 65,
                      "type": "integer",
                      "minimum": 18,
                      "maximum": 65
                    },
                    "genders": {
                      "minItems": 1,
                      "maxItems": 2,
                      "type": "array",
                      "items": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 1
                          },
                          {
                            "type": "number",
                            "const": 2
                          }
                        ]
                      }
                    },
                    "locales": {
                      "maxItems": 25,
                      "type": "array",
                      "items": {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      }
                    },
                    "publisher_platforms": {
                      "minItems": 1,
                      "maxItems": 3,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "facebook",
                          "instagram",
                          "threads"
                        ]
                      }
                    },
                    "facebook_positions": {
                      "maxItems": 4,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "feed",
                          "story",
                          "facebook_reels",
                          "video_feeds"
                        ]
                      }
                    },
                    "instagram_positions": {
                      "maxItems": 4,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "stream",
                          "story",
                          "reels",
                          "explore"
                        ]
                      }
                    },
                    "threads_positions": {
                      "maxItems": 1,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "const": "threads_stream"
                      }
                    },
                    "custom_audience_ids": {
                      "maxItems": 4,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "pattern": "^[1-9]\\d{1,24}$"
                      }
                    },
                    "excluded_custom_audience_ids": {
                      "maxItems": 4,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "pattern": "^[1-9]\\d{1,24}$"
                      }
                    }
                  },
                  "required": [
                    "geo_locations",
                    "age_min",
                    "age_max",
                    "publisher_platforms"
                  ]
                },
                "start_time": {
                  "type": "string",
                  "format": "date-time",
                  "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)))$"
                },
                "end_time": {
                  "type": "string",
                  "format": "date-time",
                  "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)))$"
                }
              },
              "required": [
                "operation",
                "object_id"
              ]
            },
            {
              "type": "object",
              "properties": {
                "operation": {
                  "type": "string",
                  "const": "create_ad"
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "adset_id": {
                  "type": "string",
                  "pattern": "^[1-9]\\d{1,24}$"
                },
                "creative_id": {
                  "type": "string",
                  "pattern": "^[1-9]\\d{1,24}$"
                },
                "status": {
                  "default": "PAUSED",
                  "type": "string",
                  "const": "PAUSED"
                }
              },
              "required": [
                "operation",
                "name",
                "adset_id",
                "creative_id",
                "status"
              ]
            },
            {
              "type": "object",
              "properties": {
                "operation": {
                  "type": "string",
                  "const": "update_ad"
                },
                "object_id": {
                  "type": "string",
                  "pattern": "^[1-9]\\d{1,24}$"
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "creative_id": {
                  "type": "string",
                  "pattern": "^[1-9]\\d{1,24}$"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "ACTIVE",
                    "PAUSED",
                    "ARCHIVED"
                  ]
                }
              },
              "required": [
                "operation",
                "object_id"
              ]
            },
            {
              "type": "object",
              "properties": {
                "operation": {
                  "type": "string",
                  "const": "create_creative"
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "object_story_spec": {
                  "type": "object",
                  "properties": {
                    "page_id": {
                      "type": "string",
                      "pattern": "^[1-9]\\d{1,24}$"
                    },
                    "instagram_user_id": {
                      "type": "string",
                      "pattern": "^[1-9]\\d{1,24}$"
                    },
                    "link_data": {
                      "type": "object",
                      "properties": {
                        "link": {
                          "type": "string",
                          "maxLength": 2048,
                          "format": "uri"
                        },
                        "message": {
                          "type": "string",
                          "maxLength": 5000
                        },
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 200
                        },
                        "image_hash": {
                          "type": "string",
                          "pattern": "^[a-fA-F0-9]{16,128}$"
                        },
                        "call_to_action": {
                          "type": "string",
                          "enum": [
                            "LEARN_MORE",
                            "SHOP_NOW",
                            "SIGN_UP",
                            "CONTACT_US"
                          ]
                        }
                      },
                      "required": [
                        "link",
                        "message",
                        "image_hash"
                      ]
                    }
                  },
                  "required": [
                    "page_id",
                    "link_data"
                  ]
                },
                "object_story_id": {
                  "type": "string",
                  "pattern": "^[1-9]\\d{1,24}_[1-9]\\d{1,24}$"
                }
              },
              "required": [
                "operation",
                "name"
              ]
            },
            {
              "type": "object",
              "properties": {
                "operation": {
                  "type": "string",
                  "const": "create_saved_audience"
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "targeting": {
                  "type": "object",
                  "properties": {
                    "geo_locations": {
                      "type": "object",
                      "properties": {
                        "countries": {
                          "minItems": 1,
                          "maxItems": 25,
                          "type": "array",
                          "items": {
                            "type": "string",
                            "pattern": "^[A-Z]{2}$"
                          }
                        }
                      },
                      "required": [
                        "countries"
                      ]
                    },
                    "age_min": {
                      "default": 18,
                      "type": "integer",
                      "minimum": 18,
                      "maximum": 65
                    },
                    "age_max": {
                      "default": 65,
                      "type": "integer",
                      "minimum": 18,
                      "maximum": 65
                    },
                    "genders": {
                      "minItems": 1,
                      "maxItems": 2,
                      "type": "array",
                      "items": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 1
                          },
                          {
                            "type": "number",
                            "const": 2
                          }
                        ]
                      }
                    },
                    "locales": {
                      "maxItems": 25,
                      "type": "array",
                      "items": {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      }
                    },
                    "publisher_platforms": {
                      "minItems": 1,
                      "maxItems": 3,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "facebook",
                          "instagram",
                          "threads"
                        ]
                      }
                    },
                    "facebook_positions": {
                      "maxItems": 4,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "feed",
                          "story",
                          "facebook_reels",
                          "video_feeds"
                        ]
                      }
                    },
                    "instagram_positions": {
                      "maxItems": 4,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "stream",
                          "story",
                          "reels",
                          "explore"
                        ]
                      }
                    },
                    "threads_positions": {
                      "maxItems": 1,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "const": "threads_stream"
                      }
                    },
                    "custom_audience_ids": {
                      "maxItems": 4,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "pattern": "^[1-9]\\d{1,24}$"
                      }
                    },
                    "excluded_custom_audience_ids": {
                      "maxItems": 4,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "pattern": "^[1-9]\\d{1,24}$"
                      }
                    }
                  },
                  "required": [
                    "geo_locations",
                    "age_min",
                    "age_max",
                    "publisher_platforms"
                  ]
                }
              },
              "required": [
                "operation",
                "name",
                "targeting"
              ]
            },
            {
              "type": "object",
              "properties": {
                "operation": {
                  "type": "string",
                  "const": "update_saved_audience"
                },
                "object_id": {
                  "type": "string",
                  "pattern": "^[1-9]\\d{1,24}$"
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "targeting": {
                  "type": "object",
                  "properties": {
                    "geo_locations": {
                      "type": "object",
                      "properties": {
                        "countries": {
                          "minItems": 1,
                          "maxItems": 25,
                          "type": "array",
                          "items": {
                            "type": "string",
                            "pattern": "^[A-Z]{2}$"
                          }
                        }
                      },
                      "required": [
                        "countries"
                      ]
                    },
                    "age_min": {
                      "default": 18,
                      "type": "integer",
                      "minimum": 18,
                      "maximum": 65
                    },
                    "age_max": {
                      "default": 65,
                      "type": "integer",
                      "minimum": 18,
                      "maximum": 65
                    },
                    "genders": {
                      "minItems": 1,
                      "maxItems": 2,
                      "type": "array",
                      "items": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 1
                          },
                          {
                            "type": "number",
                            "const": 2
                          }
                        ]
                      }
                    },
                    "locales": {
                      "maxItems": 25,
                      "type": "array",
                      "items": {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      }
                    },
                    "publisher_platforms": {
                      "minItems": 1,
                      "maxItems": 3,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "facebook",
                          "instagram",
                          "threads"
                        ]
                      }
                    },
                    "facebook_positions": {
                      "maxItems": 4,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "feed",
                          "story",
                          "facebook_reels",
                          "video_feeds"
                        ]
                      }
                    },
                    "instagram_positions": {
                      "maxItems": 4,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "stream",
                          "story",
                          "reels",
                          "explore"
                        ]
                      }
                    },
                    "threads_positions": {
                      "maxItems": 1,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "const": "threads_stream"
                      }
                    },
                    "custom_audience_ids": {
                      "maxItems": 4,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "pattern": "^[1-9]\\d{1,24}$"
                      }
                    },
                    "excluded_custom_audience_ids": {
                      "maxItems": 4,
                      "type": "array",
                      "items": {
                        "type": "string",
                        "pattern": "^[1-9]\\d{1,24}$"
                      }
                    }
                  },
                  "required": [
                    "geo_locations",
                    "age_min",
                    "age_max",
                    "publisher_platforms"
                  ]
                }
              },
              "required": [
                "operation",
                "object_id"
              ]
            }
          ]
        },
        "reviewed_digest": {
          "type": "string",
          "pattern": "^[a-f0-9]{64}$"
        },
        "effects": {
          "type": "object",
          "properties": {
            "creates_object": {
              "type": "boolean"
            },
            "initial_status": {
              "anyOf": [
                {
                  "type": "string",
                  "const": "PAUSED"
                },
                {
                  "type": "null"
                }
              ]
            },
            "activates_delivery": {
              "type": "boolean"
            },
            "changes_budget": {
              "type": "boolean"
            },
            "changes_audience": {
              "type": "boolean"
            },
            "changes_creative": {
              "type": "boolean"
            },
            "currency": {
              "type": "string",
              "pattern": "^[A-Z]{3}$"
            },
            "timezone": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "budget": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "enum": [
                        "daily",
                        "lifetime"
                      ]
                    },
                    "amount_minor": {
                      "type": "string",
                      "pattern": "^[1-9]\\d{0,11}$"
                    }
                  },
                  "required": [
                    "kind",
                    "amount_minor"
                  ]
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "creates_object",
            "initial_status",
            "activates_delivery",
            "changes_budget",
            "changes_audience",
            "changes_creative",
            "currency",
            "timezone",
            "budget"
          ]
        },
        "live_approval": {
          "type": "object",
          "properties": {
            "required": {
              "type": "boolean"
            },
            "state": {
              "type": "string",
              "enum": [
                "not_required",
                "missing",
                "approved",
                "expired",
                "revoked",
                "invalid"
              ]
            },
            "reason": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 100
                },
                {
                  "type": "null"
                }
              ]
            },
            "expires_at": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "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)))$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "approved_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"
                }
              ]
            }
          },
          "required": [
            "required",
            "state",
            "reason",
            "expires_at",
            "approved_by"
          ]
        },
        "provider_object_id": {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^[1-9]\\d{1,24}$"
            },
            {
              "type": "null"
            }
          ]
        },
        "failure_code": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 100
            },
            {
              "type": "null"
            }
          ]
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "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)))$"
        },
        "completed_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "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)))$"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "id",
        "workspace_id",
        "advertising_account_id",
        "mutation_id",
        "status",
        "command",
        "reviewed_digest",
        "effects",
        "live_approval",
        "provider_object_id",
        "failure_code",
        "created_at",
        "completed_at"
      ]
    },
    "result": {
      "type": "string",
      "enum": [
        "desired_state_observed",
        "unresolved"
      ]
    },
    "provider_object_id": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^[1-9]\\d{1,24}$"
        },
        {
          "type": "null"
        }
      ]
    },
    "observed_at": {
      "type": "string",
      "format": "date-time",
      "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)))$"
    }
  },
  "required": [
    "contract_version",
    "action",
    "result",
    "provider_object_id",
    "observed_at"
  ]
}

錯誤與安全重試

檢查 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",
  "action_id": "11111111-1111-4111-8111-111111111111"
}

cURL

curl --request POST \
  "https://gqeshlawtcexsapabaui.supabase.co/functions/v1/advertising-api/actions/reconcile" \
  -H "Authorization: Bearer $SOSOAPI_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @request.json

JavaScript

// 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/advertising-api/actions/reconcile", {
  method: "POST",
  headers: { "Content-Type": "application/json", Authorization: "Bearer " + token },
  body: JSON.stringify({
  "workspace_id": "11111111-1111-4111-8111-111111111111",
  "action_id": "11111111-1111-4111-8111-111111111111"
})
});
const result = await response.json();
// Check response.ok, the operation-specific body and completion state before continuing.

CLI

npx sosoapi api post /advertising-api/actions/reconcile < request.json

合成回應範例

{
  "contract_version": "advertising/v1",
  "action": {
    "id": "11111111-1111-4111-8111-111111111111",
    "workspace_id": "11111111-1111-4111-8111-111111111111",
    "advertising_account_id": "11111111-1111-4111-8111-111111111111",
    "mutation_id": "11111111-1111-4111-8111-111111111111",
    "status": "prepared",
    "command": {
      "operation": "create_campaign",
      "name": "example",
      "objective": "OUTCOME_AWARENESS",
      "special_ad_categories": [],
      "status": "PAUSED"
    },
    "reviewed_digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "effects": {
      "creates_object": false,
      "initial_status": null,
      "activates_delivery": false,
      "changes_budget": false,
      "changes_audience": false,
      "changes_creative": false,
      "currency": "USD",
      "timezone": "UTC",
      "budget": null
    },
    "live_approval": {
      "required": false,
      "state": "not_required",
      "reason": null,
      "expires_at": null,
      "approved_by": null
    },
    "provider_object_id": null,
    "failure_code": null,
    "created_at": "2099-01-15T09:00:00Z",
    "completed_at": null
  },
  "result": "desired_state_observed",
  "provider_object_id": null,
  "observed_at": "2099-01-15T09:00:00Z"
}

MCP: sosoapi_ads_actions_reconcile