Skip to main content
Glama

manage_campaign

Destructive

Create or update a campaign (AW/FA/TIK/LIA/AC/CGPTA/SCM). Provide campaign_id to update an existing campaign; omit it to create a new one (a budget is required when creating). On update only provided fields change. Also creates/updates ad groups/ads — see ad_groups (operations inferred from id presence). Partial success possible: check write_status and failures if present, otherwise notes; don't retry blindly. Creative: use asset_url (public https:// URL), asset_id, upload_ref (from creative_picker), or object_story_id (existing post). AI images: always generate them in creative_picker first so the user reviews them, then pass its upload_ref; send *_prompt fields only if the user explicitly said they don't need to review. Before writing to a platform, read its rules with supermetrics_guide mode: AW google_ads_capabilities, FA facebook_meta_capabilities, AC microsoft_advertising_capabilities, TIK tiktok_ads_capabilities, LIA linkedin_ads_capabilities, CGPTA chatgpt_ads_capabilities, SCM snapchat_marketing_capabilities. Platform rules are not repeated here. Use campaign_and_resource_get for full details after writing.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "ds_id": "<ds_id>",
      "account_id": "<account_id>"
    },
    "name": "manage_campaign"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameNoCampaign name. Required when creating.
ds_idYesAd platform: AW (Google), FA (Meta), AC (Microsoft), TIK (TikTok), LIA (LinkedIn), CGPTA (ChatGPT), SCM (Snapchat)
statusNoOn create: always forced to PAUSED. On update: ENABLED, PAUSED, or REMOVED.
end_dateNoYYYY-MM-DD or YYYY-MM-DDThh:mm:ss (required for LIFETIME budgets).
url_tagsNoCampaign-level URL tracking parameters (AW: Final URL suffix)
ad_groupsNoAd groups (AW/AC) or ad sets (FA/TIK). Operations are inferred from id presence: create new ad set [{name, ads: [...]}] (no id); create ads in an existing ad set [{id: 'ad_set_id', ads: [{name, creative, platform_settings}]}]; update ad set settings [{id: 'ad_set_id', budget_amount, ...}].
targetingNoCampaign-level targeting, same fields as ad_groups[].targeting. On update: omitted fields kept, sent ones replaced, [] clears one; whether existing ad groups receive it depends on the platform.
account_idYesAd account ID from accounts_discovery (e.g. '1234567890' or 'act_123456')
extensionsNoAd extensions (AW/AC), campaign level.
start_dateNoYYYY-MM-DD or YYYY-MM-DDThh:mm:ss.
budget_typeNoDAILY or LIFETIME. Update: omit to keep current type.
campaign_idNoCampaign ID from campaign_and_resource_get. Provide it to UPDATE an existing campaign; omit it to CREATE a new one.
budget_amountNoBudget in account currency. Some setups put the budget on each ad group instead.
remove_ad_idsNoAd IDs to remove (update only). Removed ids show in removed_ad_ids in the result; absent means the platform does not report it, so read the campaign to confirm.
bidding_strategyNoBid strategy name (values and level per platform).
platform_settingsNoPlatform-specific campaign settings; each key names its platforms. campaign_type/objective cannot change after creation. AW: geo_target_type and network_settings decide where ads serve (spend).
remove_ad_group_idsNoAd group IDs to remove (update only). Removed ids show in removed_ad_group_ids in the result; absent means the platform does not report it, so read the campaign to confirm.
contains_eu_political_adsNoAW: true only for EU political ads (omitted = false); ask the user if unsure, never guess true.

Output Schema

NameRequiredDescriptionDefault
dataNo
errorNo
notesNo
successYes
failuresNoRequested changes the platform did not apply. Not deduplicated: one entry per object
write_statusNoapplied, partial_failure, or failed. Absent means this connector does not report it
business_contextNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / extensions / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "callouts": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "calls": {
      -        "items": {
      -          "properties": {
      -            "country_code": {
      -              "type": "string"
      -            },
      -            "phone_number": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "phone_number"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "images": {
      -        "description": "AW only",
      -        "items": {
      -          "description": "One of url, data (base64), id (existing asset) or upload_ref (from creative_picker).",
      -          "properties": {
      -            "data": {
      -              "type": "string"
      -            },
      -            "id": {
      -              "type": "string"
      -            },
      -            "upload_ref": {
      -              "type": "string"
      -            },
      -            "url": {
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "lead_forms": {
      -        "items": {
      -          "properties": {
      -            "business_name": {
      -              "type": "string"
      -            },
      -            "call_to_action_description": {
      -              "type": "string"
      -            },
      -            "call_to_action_type": {
      -              "type": "string"
      -            },
      -            "description": {
      -              "type": "string"
      -            },
      -            "fields": {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "headline": {
      -              "type": "string"
      -            },
      -            "privacy_policy_url": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "business_name",
      -            "headline",
      -            "description",
      -            "privacy_policy_url"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "locations": {
      -        "description": "AW: Google Business Profile locations",
      -        "items": {
      -          "properties": {
      -            "place_id": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "place_id"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "promotions": {
      -        "items": {
      -          "properties": {
      -            "currency_code": {
      -              "type": "string"
      -            },
      -            "discount_modifier": {
      -              "type": "string"
      -            },
      -            "end_date": {
      -              "type": "string"
      -            },
      -            "language_code": {
      -              "type": "string"
      -            },
      -            "money_amount_off": {
      -              "type": "number"
      -            },
      -            "occasion": {
      -              "type": "string"
      -            },
      -            "orders_over_amount": {
      -              "type": "number"
      -            },
      -            "percent_off": {
      -              "type": "number"
      -            },
      -            "promotion_code": {
      -              "type": "string"
      -            },
      -            "promotion_target": {
      -              "type": "string"
      -            },
      -            "start_date": {
      -              "type": "string"
      -            },
      -            "url": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "promotion_target",
      -            "url"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "sitelinks": {
      -        "items": {
      -          "description": "Sitelink (AW/AC).",
      -          "properties": {
      -            "description1": {
      -              "type": "string"
      -            },
      -            "description2": {
      -              "type": "string"
      -            },
      -            "text": {
      -              "type": "string"
      -            },
      -            "url": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "text",
      -            "url"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "structured_snippets": {
      -        "items": {
      -          "description": "Structured snippet (AW/AC).",
      -          "properties": {
      -            "header": {
      -              "description": "One of (English): Amenities, Brands, Courses, Degree programs, Destinations, Featured hotels, Highlights, Insurance coverage, Models, Neighborhoods, Service catalog, Shows, Styles, Types",
      -              "type": "string"
      -            },
      -            "values": {
      -              "description": "Minimum 3",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            }
      -          },
      -          "required": [
      -            "header",
      -            "values"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "callouts": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "calls": {
      +        "items": {
      +          "properties": {
      +            "country_code": {
      +              "type": "string"
      +            },
      +            "phone_number": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "phone_number"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "images": {
      +        "description": "AW only",
      +        "items": {
      +          "description": "One of url, data (base64), id (existing asset) or upload_ref (from creative_picker).",
      +          "properties": {
      +            "data": {
      +              "type": "string"
      +            },
      +            "id": {
      +              "type": "string"
      +            },
      +            "upload_ref": {
      +              "type": "string"
      +            },
      +            "url": {
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "lead_forms": {
      +        "items": {
      +          "properties": {
      +            "business_name": {
      +              "type": "string"
      +            },
      +            "call_to_action_description": {
      +              "type": "string"
      +            },
      +            "call_to_action_type": {
      +              "type": "string"
      +            },
      +            "description": {
      +              "type": "string"
      +            },
      +            "fields": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "headline": {
      +              "type": "string"
      +            },
      +            "privacy_policy_url": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "business_name",
      +            "headline",
      +            "description",
      +            "privacy_policy_url"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "locations": {
      +        "description": "AW: don't send; never linked or returned on read. Campaigns use the account's location assets or a location group set in Google Ads",
      +        "items": {
      +          "properties": {
      +            "place_id": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "place_id"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "promotions": {
      +        "items": {
      +          "properties": {
      +            "currency_code": {
      +              "type": "string"
      +            },
      +            "discount_modifier": {
      +              "type": "string"
      +            },
      +            "end_date": {
      +              "type": "string"
      +            },
      +            "language_code": {
      +              "type": "string"
      +            },
      +            "money_amount_off": {
      +              "type": "number"
      +            },
      +            "occasion": {
      +              "type": "string"
      +            },
      +            "orders_over_amount": {
      +              "type": "number"
      +            },
      +            "percent_off": {
      +              "type": "number"
      +            },
      +            "promotion_code": {
      +              "type": "string"
      +            },
      +            "promotion_target": {
      +              "type": "string"
      +            },
      +            "start_date": {
      +              "type": "string"
      +            },
      +            "url": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "promotion_target",
      +            "url"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "sitelinks": {
      +        "items": {
      +          "description": "Sitelink (AW/AC).",
      +          "properties": {
      +            "description1": {
      +              "type": "string"
      +            },
      +            "description2": {
      +              "type": "string"
      +            },
      +            "text": {
      +              "type": "string"
      +            },
      +            "url": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "text",
      +            "url"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "structured_snippets": {
      +        "items": {
      +          "description": "Structured snippet (AW/AC).",
      +          "properties": {
      +            "header": {
      +              "description": "One of (English): Amenities, Brands, Courses, Degree programs, Destinations, Featured hotels, Highlights, Insurance coverage, Models, Neighborhoods, Service catalog, Shows, Styles, Types",
      +              "type": "string"
      +            },
      +            "values": {
      +              "description": "Minimum 3",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            }
      +          },
      +          "required": [
      +            "header",
      +            "values"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed2 schema fields changed
    • changedInput schema / properties / ad_groups / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "properties": {
      -        "add_keywords": {
      -          "description": "Append positive keywords (duplicates skipped, status unchanged); targeting.keywords replaces instead.",
      -          "items": {
      -            "anyOf": [
      -              {
      -                "type": "string"
      -              },
      -              {
      -                "properties": {
      -                  "cpc_bid": {
      -                    "description": "Max CPC, account currency",
      -                    "type": "number"
      -                  },
      -                  "match_type": {
      -                    "enum": [
      -                      "BROAD",
      -                      "PHRASE",
      -                      "EXACT"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "status": {
      -                    "enum": [
      -                      "ENABLED",
      -                      "PAUSED"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "text": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "text"
      -                ],
      -                "type": "object"
      -              }
      -            ]
      -          },
      -          "type": "array"
      -        },
      -        "ads": {
      -          "description": "Ads to create (no id) or update (with id). Each new ad needs name + creative (headlines, descriptions, final_urls).",
      -          "items": {
      -            "description": "An ad. Omit id to create, include id to update.\n\nEditing a creative may replace the ad under a new id; its status carries over unless this call\nsets status. Send only the creative keys you change.",
      -            "properties": {
      -              "creative": {
      -                "description": "Ad creative. Text ads: headlines + descriptions + final_urls.\n\nNever put a creative_picker token in asset_url — it belongs in upload_ref.",
      -                "properties": {
      -                  "action_button": {
      -                    "description": "AW Video",
      -                    "type": "string"
      -                  },
      -                  "action_headline": {
      -                    "description": "AW Video",
      -                    "type": "string"
      -                  },
      -                  "ad_to_call_properties": {
      -                    "description": "SCM AD_TO_CALL",
      -                    "properties": {
      -                      "message": {
      -                        "description": "AD_TO_MESSAGE text",
      -                        "type": "string"
      -                      },
      -                      "phone_number_id": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "phone_number_id"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "ad_to_lens_properties": {
      -                    "description": "SCM AD_TO_LENS",
      -                    "properties": {
      -                      "lens_media_id": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "lens_media_id"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "ad_to_message_properties": {
      -                    "description": "SCM AD_TO_MESSAGE",
      -                    "properties": {
      -                      "message": {
      -                        "description": "AD_TO_MESSAGE text",
      -                        "type": "string"
      -                      },
      -                      "phone_number_id": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "phone_number_id"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "app_install_properties": {
      -                    "description": "SCM APP_INSTALL",
      -                    "properties": {
      -                      "android_app_url": {
      -                        "type": "string"
      -                      },
      -                      "app_name": {
      -                        "type": "string"
      -                      },
      -                      "icon_media_id": {
      -                        "type": "string"
      -                      },
      -                      "ios_app_id": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "type": "object"
      -                  },
      -                  "ar_extension_properties": {
      -                    "description": "SCM",
      -                    "properties": {
      -                      "lens_media_id": {
      -                        "type": "string"
      -                      },
      -                      "product_info_card_display_mode": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "lens_media_id"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "asset_data": {
      -                    "description": "Base64, small files only",
      -                    "type": "string"
      -                  },
      -                  "asset_height": {
      -                    "type": "number"
      -                  },
      -                  "asset_id": {
      -                    "type": "string"
      -                  },
      -                  "asset_prompt": {
      -                    "description": "AI image prompt; only if the user declined review, else a creative_picker upload_ref",
      -                    "type": "string"
      -                  },
      -                  "asset_type": {
      -                    "description": "Asset type hint: 'image' (default) or 'video'. Helps detect video ads when URL has no extension.",
      -                    "enum": [
      -                      "image",
      -                      "video"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "asset_url": {
      -                    "description": "Single asset: public URL",
      -                    "type": "string"
      -                  },
      -                  "asset_width": {
      -                    "type": "number"
      -                  },
      -                  "assets": {
      -                    "description": "Image/video assets, one source each (preference: asset_url, asset_id, upload_ref, asset_data, asset_prompt; asset_prompt only if the user explicitly declined to review images, otherwise generate in creative_picker and pass its upload_ref). No image yet? creative_picker browses/uploads/generates first. Single item = single image ad. FA: several items need platform_settings.is_dynamic_creative true; for a creative per placement use placement_assets.",
      -                    "items": {
      -                      "properties": {
      -                        "asset_data": {
      -                          "description": "Base64, small files only",
      -                          "type": "string"
      -                        },
      -                        "asset_height": {
      -                          "type": "integer"
      -                        },
      -                        "asset_id": {
      -                          "description": "Hash/ID from campaign_and_resource_get assets",
      -                          "type": "string"
      -                        },
      -                        "asset_prompt": {
      -                          "description": "AI image prompt; only if the user explicitly declined to review images — otherwise generate in creative_picker and pass its upload_ref",
      -                          "type": "string"
      -                        },
      -                        "asset_type": {
      -                          "enum": [
      -                            "image",
      -                            "video"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "asset_url": {
      -                          "description": "Public URL; auto-uploaded to the ad account",
      -                          "type": "string"
      -                        },
      -                        "asset_width": {
      -                          "type": "integer"
      -                        },
      -                        "type": {
      -                          "description": "AW: 'logo' for a logo image",
      -                          "type": "string"
      -                        },
      -                        "upload_ref": {
      -                          "description": "From creative_picker",
      -                          "type": "string"
      -                        }
      -                      },
      -                      "type": "object"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "brand_name": {
      -                    "description": "SCM brand name",
      -                    "type": "string"
      -                  },
      -                  "business_name": {
      -                    "description": "Business name (AW display/PMax).",
      -                    "type": "string"
      -                  },
      -                  "call_to_action": {
      -                    "description": "CTA button (e.g. LEARN_MORE, SHOP_NOW, SIGN_UP, CONTACT_US, DOWNLOAD)",
      -                    "type": "string"
      -                  },
      -                  "carousel_cards": {
      -                    "description": "Carousel cards; use instead of assets.",
      -                    "items": {
      -                      "properties": {
      -                        "asset_id": {
      -                          "type": "string"
      -                        },
      -                        "asset_url": {
      -                          "type": "string"
      -                        },
      -                        "call_to_action": {
      -                          "type": "string"
      -                        },
      -                        "description": {
      -                          "type": "string"
      -                        },
      -                        "headline": {
      -                          "type": "string"
      -                        },
      -                        "link": {
      -                          "type": "string"
      -                        },
      -                        "upload_ref": {
      -                          "type": "string"
      -                        }
      -                      },
      -                      "type": "object"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "collection_properties": {
      -                    "description": "SCM COLLECTION",
      -                    "properties": {
      -                      "default_fallback_interaction_type": {
      -                        "type": "string"
      -                      },
      -                      "interaction_zone_id": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "interaction_zone_id",
      -                      "default_fallback_interaction_type"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "companion_banner_id": {
      -                    "description": "AW Video",
      -                    "type": "string"
      -                  },
      -                  "companion_banner_url": {
      -                    "description": "AW Video",
      -                    "type": "string"
      -                  },
      -                  "composite_properties": {
      -                    "description": "SCM COMPOSITE",
      -                    "properties": {
      -                      "creative_ids": {
      -                        "description": "SNAP_AD creative ids",
      -                        "items": {
      -                          "type": "string"
      -                        },
      -                        "type": "array"
      -                      }
      -                    },
      -                    "required": [
      -                      "creative_ids"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "deep_link_properties": {
      -                    "description": "SCM DEEP_LINK",
      -                    "properties": {
      -                      "android_app_url": {
      -                        "type": "string"
      -                      },
      -                      "app_name": {
      -                        "type": "string"
      -                      },
      -                      "deep_link_uri": {
      -                        "type": "string"
      -                      },
      -                      "fallback_type": {
      -                        "type": "string"
      -                      },
      -                      "icon_media_id": {
      -                        "type": "string"
      -                      },
      -                      "ios_app_id": {
      -                        "type": "string"
      -                      },
      -                      "web_view_fallback_url": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "type": "object"
      -                  },
      -                  "descriptions": {
      -                    "description": "Description texts. An item may be {text, pinned_field: DESCRIPTION_1..2 or null} (AW only).",
      -                    "items": {
      -                      "anyOf": [
      -                        {
      -                          "type": "string"
      -                        },
      -                        {
      -                          "properties": {
      -                            "pinned_field": {
      -                              "anyOf": [
      -                                {
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ],
      -                              "description": "null unpins"
      -                            },
      -                            "text": {
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "text"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      ]
      -                    },
      -                    "type": "array"
      -                  },
      -                  "file_id": {
      -                    "description": "CGPTA: image file id",
      -                    "type": "string"
      -                  },
      -                  "final_urls": {
      -                    "description": "Landing page URLs",
      -                    "items": {
      -                      "type": "string"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "headline": {
      -                    "description": "SCM: single headline (else headlines[0])",
      -                    "type": "string"
      -                  },
      -                  "headlines": {
      -                    "description": "Headline texts. An item may be {text, pinned_field: HEADLINE_1..3 or null to unpin} (AW only).",
      -                    "items": {
      -                      "anyOf": [
      -                        {
      -                          "type": "string"
      -                        },
      -                        {
      -                          "properties": {
      -                            "pinned_field": {
      -                              "anyOf": [
      -                                {
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ],
      -                              "description": "null unpins"
      -                            },
      -                            "text": {
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "text"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      ]
      -                    },
      -                    "type": "array"
      -                  },
      -                  "image_ids": {
      -                    "description": "Video ad cover image id (one item).",
      -                    "items": {
      -                      "type": "string"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "lead_gen_form_id": {
      -                    "description": "FA lead form",
      -                    "type": "string"
      -                  },
      -                  "lead_generation_form_id": {
      -                    "description": "SCM LEAD_GENERATION",
      -                    "type": "string"
      -                  },
      -                  "link_descriptions": {
      -                    "description": "Link description (line under the headline); one per ad — more than one needs the ad set's platform_settings.is_dynamic_creative true, which cannot be undone.",
      -                    "items": {
      -                      "type": "string"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "logo_data": {
      -                    "description": "AW display/PMax: logo base64",
      -                    "type": "string"
      -                  },
      -                  "logo_id": {
      -                    "description": "AW display/PMax: logo asset ID",
      -                    "type": "string"
      -                  },
      -                  "logo_prompt": {
      -                    "description": "AW display/PMax: logo AI prompt (only if user declined review; else creative_picker, then its upload_ref in logo_url)",
      -                    "type": "string"
      -                  },
      -                  "logo_url": {
      -                    "description": "AW display/PMax: logo URL",
      -                    "type": "string"
      -                  },
      -                  "long_headline": {
      -                    "description": "AW display: single long headline (use long_headlines for PMax)",
      -                    "type": "string"
      -                  },
      -                  "long_headlines": {
      -                    "description": "Long headlines (list; preferred over long_headline).",
      -                    "items": {
      -                      "type": "string"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "object_story_id": {
      -                    "description": "Existing post to boost, '{page_id}_{post_id}' (resource_type posts). FA reads return it. With a destination_type of more than one messaging app an existing post is refused; with one messaging app (WhatsApp, Messenger, Instagram Direct) Meta may refuse it. A single image or video is the safer choice.",
      -                    "type": "string"
      -                  },
      -                  "page_welcome_message": {
      -                    "description": "FA messaging",
      -                    "type": "string"
      -                  },
      -                  "path1": {
      -                    "description": "Display path 1 (max 15 chars, no \"/\"). Omit keeps, \"\" removes.",
      -                    "maxLength": 15,
      -                    "type": "string"
      -                  },
      -                  "path2": {
      -                    "description": "Display path 2 (needs path1; max 15, no \"/\"). Omit keeps, \"\" removes.",
      -                    "maxLength": 15,
      -                    "type": "string"
      -                  },
      -                  "placement_assets": {
      -                    "description": "FA only: a different image or video per placement, without Dynamic Creative. An entry's source may be an upload_ref. Shape, rules and position values: supermetrics_guide mode facebook_meta_capabilities.",
      -                    "items": {
      -                      "properties": {
      -                        "asset_data": {
      -                          "description": "Base64, small files only",
      -                          "type": "string"
      -                        },
      -                        "asset_id": {
      -                          "description": "Hash/ID from campaign_and_resource_get assets",
      -                          "type": "string"
      -                        },
      -                        "asset_prompt": {
      -                          "description": "AI image prompt; only if the user explicitly declined to review images — otherwise generate in creative_picker and pass its upload_ref",
      -                          "type": "string"
      -                        },
      -                        "asset_type": {
      -                          "enum": [
      -                            "image",
      -                            "video"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "asset_url": {
      -                          "description": "Public URL; auto-uploaded to the ad account",
      -                          "type": "string"
      -                        },
      -                        "placements": {
      -                          "anyOf": [
      -                            {
      -                              "enum": [
      -                                "default"
      -                              ],
      -                              "type": "string"
      -                            },
      -                            {
      -                              "properties": {
      -                                "audience_network_positions": {
      -                                  "items": {
      -                                    "type": "string"
      -                                  },
      -                                  "type": "array"
      -                                },
      -                                "facebook_positions": {
      -                                  "items": {
      -                                    "type": "string"
      -                                  },
      -                                  "type": "array"
      -                                },
      -                                "instagram_positions": {
      -                                  "items": {
      -                                    "type": "string"
      -                                  },
      -                                  "type": "array"
      -                                },
      -                                "messenger_positions": {
      -                                  "items": {
      -                                    "type": "string"
      -                                  },
      -                                  "type": "array"
      -                                },
      -                                "publisher_platforms": {
      -                                  "items": {
      -                                    "type": "string"
      -                                  },
      -                                  "type": "array"
      -                                },
      -                                "threads_positions": {
      -                                  "items": {
      -                                    "type": "string"
      -                                  },
      -                                  "type": "array"
      -                                }
      -                              },
      -                              "type": "object"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ],
      -                          "description": "\"default\" for every other placement, or the positions"
      -                        },
      -                        "thumbnail_data": {
      -                          "description": "Video: thumbnail image as base64, small files only",
      -                          "type": "string"
      -                        },
      -                        "thumbnail_url": {
      -                          "description": "Video: thumbnail image URL",
      -                          "type": "string"
      -                        },
      -                        "upload_ref": {
      -                          "description": "From creative_picker",
      -                          "type": "string"
      -                        },
      -                        "video_title": {
      -                          "description": "Video: name of an uploaded video; default the creative's video_title",
      -                          "type": "string"
      -                        }
      -                      },
      -                      "type": "object"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "preview_creative_id": {
      -                    "description": "SCM COMPOSITE (Story): preview creative",
      -                    "type": "string"
      -                  },
      -                  "reminder_properties": {
      -                    "description": "SCM REMINDER",
      -                    "properties": {
      -                      "event_detail_id": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "event_detail_id"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "shareable": {
      -                    "description": "SCM, default true",
      -                    "type": "boolean"
      -                  },
      -                  "square_asset_data": {
      -                    "description": "AW display: square image base64",
      -                    "type": "string"
      -                  },
      -                  "square_asset_id": {
      -                    "description": "AW display: square asset ID",
      -                    "type": "string"
      -                  },
      -                  "square_asset_prompt": {
      -                    "description": "AW display: square image AI prompt (only if user declined review; else creative_picker, then its upload_ref in square_asset_url)",
      -                    "type": "string"
      -                  },
      -                  "square_asset_url": {
      -                    "description": "AW display: square image URL",
      -                    "type": "string"
      -                  },
      -                  "thumbnail_url": {
      -                    "description": "FA video thumbnail",
      -                    "type": "string"
      -                  },
      -                  "top_snap_media_id": {
      -                    "description": "SCM",
      -                    "type": "string"
      -                  },
      -                  "type": {
      -                    "description": "SCM ad type",
      -                    "type": "string"
      -                  },
      -                  "upload_ref": {
      -                    "description": "From creative_picker",
      -                    "type": "string"
      -                  },
      -                  "url_tags": {
      -                    "description": "URL tracking parameters appended to ad links (AW: Final URL suffix)",
      -                    "type": "string"
      -                  },
      -                  "video_asset_id": {
      -                    "description": "AW video ad: the video, as reads return it",
      -                    "type": "string"
      -                  },
      -                  "video_asset_ids": {
      -                    "description": "AW",
      -                    "items": {
      -                      "type": "string"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "video_title": {
      -                    "description": "FA: name of an uploaded video",
      -                    "type": "string"
      -                  },
      -                  "web_view_properties": {
      -                    "description": "SCM",
      -                    "properties": {
      -                      "url": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "url"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "whatsapp_number": {
      -                    "description": "FA WhatsApp ads: the number the button opens. Omit to keep the current one; \"\" = the page's number",
      -                    "type": "string"
      -                  }
      -                },
      -                "type": "object"
      -              },
      -              "id": {
      -                "description": "Ad ID — omit for create, include for update",
      -                "type": "string"
      -              },
      -              "name": {
      -                "description": "Ad name (required for create, optional for update)",
      -                "type": "string"
      -              },
      -              "platform_settings": {
      -                "description": "Platform-specific ad settings. Set ad status via the top-level status field, not here.",
      -                "properties": {
      -                  "ad_format": {
      -                    "description": "TIK",
      -                    "type": "string"
      -                  },
      -                  "ad_type": {
      -                    "description": "AW: same as type",
      -                    "type": "string"
      -                  },
      -                  "call_to_action": {
      -                    "description": "TIK",
      -                    "type": "string"
      -                  },
      -                  "call_to_action_id": {
      -                    "description": "TIK",
      -                    "type": "string"
      -                  },
      -                  "dsa_beneficiary": {
      -                    "description": "FA: send on the ad set's platform_settings instead",
      -                    "type": "string"
      -                  },
      -                  "dsa_payor": {
      -                    "description": "FA: send on the ad set's platform_settings instead",
      -                    "type": "string"
      -                  },
      -                  "identity_authorized_bc_id": {
      -                    "description": "TIK Business Center",
      -                    "type": "string"
      -                  },
      -                  "identity_id": {
      -                    "description": "TIK Spark Ad: account owning the post",
      -                    "type": "string"
      -                  },
      -                  "identity_type": {
      -                    "description": "TIK",
      -                    "type": "string"
      -                  },
      -                  "music_id": {
      -                    "description": "TIK",
      -                    "type": "string"
      -                  },
      -                  "page_id": {
      -                    "description": "FA Page",
      -                    "type": "string"
      -                  },
      -                  "pixel_id": {
      -                    "description": "FA: adds one pixel's tracking spec",
      -                    "type": "string"
      -                  },
      -                  "profile_id": {
      -                    "description": "SCM: public profile UUID",
      -                    "type": "string"
      -                  },
      -                  "tiktok_item_id": {
      -                    "description": "TIK Spark Ad: the post",
      -                    "type": "string"
      -                  },
      -                  "tracking_pixel_id": {
      -                    "description": "TIK: pixel tracking the ad",
      -                    "type": "string"
      -                  },
      -                  "tracking_specs": {
      -                    "description": "FA: Meta pixel tracking specs",
      -                    "items": {
      -                      "additionalProperties": {
      -                        "items": {
      -                          "type": "string"
      -                        },
      -                        "type": "array"
      -                      },
      -                      "type": "object"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "type": {
      -                    "description": "AW ad type",
      -                    "type": "string"
      -                  }
      -                },
      -                "type": "object"
      -              },
      -              "status": {
      -                "description": "ENABLED, PAUSED, or REMOVED (platform wording normalized). Sets the ad's status; if omitted the platform's own default applies, which on some platforms is live — set PAUSED explicitly if the ad must not serve. If a creative edit replaces the ad, status carries over unless set here. Set ENABLED only on explicit user approval — it can start spend.",
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          "type": "array"
      -        },
      -        "budget_amount": {
      -          "description": "Budget in account currency",
      -          "type": "number"
      -        },
      -        "budget_type": {
      -          "description": "DAILY or LIFETIME",
      -          "type": "string"
      -        },
      -        "extensions": {
      -          "description": "Image assets for this ad group only. Other extension types are ignored, with a note naming them.",
      -          "properties": {
      -            "images": {
      -              "description": "Replaces the ad group's images; [] removes them; omit keeps them.",
      -              "items": {
      -                "description": "One of url, data (base64), id (existing asset) or upload_ref (from creative_picker).",
      -                "properties": {
      -                  "data": {
      -                    "type": "string"
      -                  },
      -                  "id": {
      -                    "type": "string"
      -                  },
      -                  "upload_ref": {
      -                    "type": "string"
      -                  },
      -                  "url": {
      -                    "type": "string"
      -                  }
      -                },
      -                "type": "object"
      -              },
      -              "type": "array"
      -            }
      -          },
      -          "type": "object"
      -        },
      -        "id": {
      -          "description": "Ad group/ad set ID — omit to create new, include to update existing",
      -          "type": "string"
      -        },
      -        "name": {
      -          "description": "Ad group name (required for create)",
      -          "type": "string"
      -        },
      -        "platform_settings": {
      -          "description": "Platform-specific ad group / ad set settings; each key names its platforms. On update send only the keys you change.",
      -          "properties": {
      -            "ad_schedule": {
      -              "description": "FA dayparting",
      -              "items": {
      -                "properties": {
      -                  "days": {
      -                    "description": "0 = Sunday",
      -                    "items": {
      -                      "type": "integer"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "end_minute": {
      -                    "type": "integer"
      -                  },
      -                  "start_minute": {
      -                    "type": "integer"
      -                  },
      -                  "timezone_type": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "start_minute",
      -                  "end_minute",
      -                  "days"
      -                ],
      -                "type": "object"
      -              },
      -              "type": "array"
      -            },
      -            "attribution_spec": {
      -              "description": "FA",
      -              "items": {
      -                "properties": {
      -                  "event_type": {
      -                    "type": "string"
      -                  },
      -                  "window_days": {
      -                    "type": "integer"
      -                  }
      -                },
      -                "required": [
      -                  "event_type",
      -                  "window_days"
      -                ],
      -                "type": "object"
      -              },
      -              "type": "array"
      -            },
      -            "audience_signals": {
      -              "description": "AW PMax: Audience ids or resource names",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "bid_amount": {
      -              "description": "FA legacy: Meta minor units (250 = 2.50); prefer bid_price",
      -              "type": "integer"
      -            },
      -            "bid_constraints": {
      -              "description": "FA",
      -              "properties": {
      -                "roas_average_floor": {
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "roas_average_floor"
      -              ],
      -              "type": "object"
      -            },
      -            "bid_micro": {
      -              "description": "SCM: micro-currency",
      -              "type": "integer"
      -            },
      -            "bid_price": {
      -              "description": "FA/TIK: account currency",
      -              "type": "number"
      -            },
      -            "bid_strategy": {
      -              "description": "FA ABO/SCM ad set bid strategy",
      -              "type": "string"
      -            },
      -            "bid_type": {
      -              "description": "TIK",
      -              "enum": [
      -                "BID_TYPE_NO_BID",
      -                "BID_TYPE_CUSTOM",
      -                "BID_TYPE_MAX_CONVERSION"
      -              ],
      -              "type": "string"
      -            },
      -            "billing_event": {
      -              "description": "FA/TIK/LIA/SCM/CGPTA",
      -              "type": "string"
      -            },
      -            "budget_amount": {
      -              "description": "SCM: account currency",
      -              "type": "number"
      -            },
      -            "budget_type": {
      -              "description": "SCM",
      -              "enum": [
      -                "DAILY",
      -                "LIFETIME"
      -              ],
      -              "type": "string"
      -            },
      -            "campaign_type": {
      -              "description": "LIA",
      -              "type": "string"
      -            },
      -            "context_hints": {
      -              "description": "CGPTA: topic keywords",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "conversion_bid_price": {
      -              "description": "TIK, account currency",
      -              "type": "number"
      -            },
      -            "conversion_window": {
      -              "description": "SCM",
      -              "type": "string"
      -            },
      -            "cost_type": {
      -              "description": "LIA",
      -              "enum": [
      -                "CPM",
      -                "CPC"
      -              ],
      -              "type": "string"
      -            },
      -            "cpc_bid": {
      -              "description": "AW/AC/CGPTA",
      -              "type": "number"
      -            },
      -            "custom_event_type": {
      -              "description": "FA: with pixel_id",
      -              "type": "string"
      -            },
      -            "daily_budget": {
      -              "description": "LIA. FA: minor units; prefer budget_amount",
      -              "type": "number"
      -            },
      -            "daily_min_spend_target": {
      -              "description": "FA legacy, minor units: prefer daily_spend_min",
      -              "type": "number"
      -            },
      -            "daily_spend_cap": {
      -              "description": "FA legacy, minor units: prefer daily_spend_max",
      -              "type": "number"
      -            },
      -            "daily_spend_max": {
      -              "description": "FA ad set spend limit, account currency",
      -              "type": "number"
      -            },
      -            "daily_spend_min": {
      -              "description": "FA ad set spend limit, account currency",
      -              "type": "number"
      -            },
      -            "destination_type": {
      -              "description": "FA",
      -              "type": "string"
      -            },
      -            "dsa_beneficiary": {
      -              "description": "FA EU transparency: legal entity promoted",
      -              "type": "string"
      -            },
      -            "dsa_payor": {
      -              "description": "FA EU transparency: legal entity paying",
      -              "type": "string"
      -            },
      -            "end_date": {
      -              "description": "This ad group's own flight end",
      -              "type": "string"
      -            },
      -            "end_time": {
      -              "description": "FA/SCM/TIK: flight end date-time",
      -              "type": "string"
      -            },
      -            "frequency": {
      -              "description": "TIK: max impressions per user",
      -              "type": "integer"
      -            },
      -            "frequency_control_specs": {
      -              "description": "FA",
      -              "items": {
      -                "properties": {
      -                  "event": {
      -                    "type": "string"
      -                  },
      -                  "interval_days": {
      -                    "type": "integer"
      -                  },
      -                  "max_frequency": {
      -                    "type": "integer"
      -                  }
      -                },
      -                "required": [
      -                  "event",
      -                  "interval_days",
      -                  "max_frequency"
      -                ],
      -                "type": "object"
      -              },
      -              "type": "array"
      -            },
      -            "frequency_schedule": {
      -              "description": "TIK: days",
      -              "type": "integer"
      -            },
      -            "identity_id": {
      -              "description": "TIK, with identity_type",
      -              "type": "string"
      -            },
      -            "identity_type": {
      -              "description": "TIK",
      -              "type": "string"
      -            },
      -            "is_dynamic_creative": {
      -              "description": "FA: true is permanent on a published ad set",
      -              "type": "boolean"
      -            },
      -            "lifetime_budget": {
      -              "description": "LIA/TIK. FA legacy, minor units: prefer budget_amount + budget_type",
      -              "type": "number"
      -            },
      -            "lifetime_min_spend_target": {
      -              "description": "FA legacy, minor units: prefer lifetime_spend_min",
      -              "type": "number"
      -            },
      -            "lifetime_spend_cap": {
      -              "description": "FA legacy, minor units: prefer lifetime_spend_max",
      -              "type": "number"
      -            },
      -            "lifetime_spend_max": {
      -              "description": "FA ad set spend limit, account currency",
      -              "type": "number"
      -            },
      -            "lifetime_spend_min": {
      -              "description": "FA ad set spend limit, account currency",
      -              "type": "number"
      -            },
      -            "location_ids": {
      -              "description": "TIK",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "max_bid_micros": {
      -              "description": "CGPTA: micro-currency",
      -              "type": "integer"
      -            },
      -            "objective_type": {
      -              "description": "LIA",
      -              "type": "string"
      -            },
      -            "optimization_event": {
      -              "description": "TIK",
      -              "type": "string"
      -            },
      -            "optimization_goal": {
      -              "description": "FA/TIK/SCM",
      -              "type": "string"
      -            },
      -            "optimization_sub_event": {
      -              "description": "FA",
      -              "type": "string"
      -            },
      -            "pacing": {
      -              "description": "TIK",
      -              "enum": [
      -                "PACING_MODE_SMOOTH",
      -                "PACING_MODE_FAST"
      -              ],
      -              "type": "string"
      -            },
      -            "pacing_type": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "items": {
      -                    "type": "string"
      -                  },
      -                  "type": "array"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ],
      -              "description": "SCM/FA"
      -            },
      -            "page_id": {
      -              "description": "FA",
      -              "type": "string"
      -            },
      -            "pixel_event": {
      -              "description": "TIK: conversion event",
      -              "type": "string"
      -            },
      -            "pixel_id": {
      -              "description": "Pixel to optimize for",
      -              "type": "string"
      -            },
      -            "placement_config": {
      -              "description": "SCM",
      -              "enum": [
      -                "AUTOMATIC",
      -                "CUSTOM"
      -              ],
      -              "type": "string"
      -            },
      -            "placement_type": {
      -              "description": "TIK",
      -              "enum": [
      -                "PLACEMENT_TYPE_AUTOMATIC",
      -                "PLACEMENT_TYPE_NORMAL"
      -              ],
      -              "type": "string"
      -            },
      -            "placements": {
      -              "description": "TIK",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "product_filter": {
      -              "description": "AW retail: this asset group only",
      -              "properties": {
      -                "conditions": {
      -                  "items": {
      -                    "properties": {
      -                      "dimension": {
      -                        "type": "string"
      -                      },
      -                      "values": {
      -                        "items": {
      -                          "type": "string"
      -                        },
      -                        "type": "array"
      -                      }
      -                    },
      -                    "required": [
      -                      "dimension",
      -                      "values"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                },
      -                "mode": {
      -                  "enum": [
      -                    "include",
      -                    "exclude"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "mode",
      -                "conditions"
      -              ],
      -              "type": "object"
      -            },
      -            "promoted_object": {
      -              "description": "FA",
      -              "properties": {
      -                "custom_conversion_id": {
      -                  "type": "string"
      -                },
      -                "custom_event_type": {
      -                  "type": "string"
      -                },
      -                "page_id": {
      -                  "type": "string"
      -                },
      -                "pixel_id": {
      -                  "type": "string"
      -                }
      -              },
      -              "type": "object"
      -            },
      -            "promotion_type": {
      -              "description": "TIK",
      -              "type": "string"
      -            },
      -            "regional_regulated_categories": {
      -              "description": "FA",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "regional_regulation_identities": {
      -              "description": "FA: regional regulation ids",
      -              "properties": {
      -                "singapore_universal_beneficiary": {
      -                  "type": "string"
      -                },
      -                "singapore_universal_payer": {
      -                  "type": "string"
      -                },
      -                "taiwan_universal_beneficiary": {
      -                  "type": "string"
      -                },
      -                "taiwan_universal_payer": {
      -                  "type": "string"
      -                },
      -                "universal_beneficiary": {
      -                  "type": "string"
      -                },
      -                "universal_payer": {
      -                  "type": "string"
      -                }
      -              },
      -              "type": "object"
      -            },
      -            "roas_average_floor": {
      -              "description": "FA",
      -              "type": "number"
      -            },
      -            "schedule_end_time": {
      -              "description": "TIK",
      -              "type": "string"
      -            },
      -            "schedule_start_time": {
      -              "description": "TIK",
      -              "type": "string"
      -            },
      -            "schedule_type": {
      -              "description": "TIK",
      -              "enum": [
      -                "SCHEDULE_START_END",
      -                "SCHEDULE_FROM_NOW"
      -              ],
      -              "type": "string"
      -            },
      -            "search_themes": {
      -              "description": "AW PMax: optimization hints",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "start_date": {
      -              "description": "This ad group's own flight start",
      -              "type": "string"
      -            },
      -            "start_time": {
      -              "description": "FA/SCM/TIK: flight start date-time",
      -              "type": "string"
      -            },
      -            "tiktok_item_id": {
      -              "description": "TIK",
      -              "type": "string"
      -            },
      -            "type": {
      -              "description": "AW/AC ad group type",
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        },
      -        "remove_keywords": {
      -          "description": "Update only: remove positive keywords.",
      -          "items": {
      -            "anyOf": [
      -              {
      -                "type": "string"
      -              },
      -              {
      -                "properties": {
      -                  "match_type": {
      -                    "enum": [
      -                      "BROAD",
      -                      "PHRASE",
      -                      "EXACT"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "text": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "text"
      -                ],
      -                "type": "object"
      -              }
      -            ]
      -          },
      -          "type": "array"
      -        },
      -        "status": {
      -          "description": "ENABLED, PAUSED or REMOVED (platform wording normalized). Some platforms force PAUSED on create: re-read, update if it differs. ENABLED only on explicit user approval. Campaign, ad group (PMax: asset group) and ad each have their own status.",
      -          "type": "string"
      -        },
      -        "targeting": {
      -          "description": "Ad group targeting; on create, overrides campaign-level targeting. On update: omitted fields are kept, sent ones replaced, [] clears one. An unsupported targeting field is refused or reported in the result, not silently applied.",
      -          "properties": {
      -            "advantage_audience": {
      -              "description": "Advantage+ Audience (AI audience expansion) on/off",
      -              "type": "boolean"
      -            },
      -            "age_max": {
      -              "description": "Maximum age",
      -              "type": "integer"
      -            },
      -            "age_min": {
      -              "description": "Minimum age",
      -              "type": "integer"
      -            },
      -            "age_suggestion": {
      -              "description": "[min, max] preferred ages (soft, with advantage_audience); [] clears.",
      -              "items": {
      -                "type": "integer"
      -              },
      -              "maxItems": 2,
      -              "type": "array"
      -            },
      -            "custom_audiences": {
      -              "description": "Custom audiences",
      -              "items": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "properties": {
      -                      "id": {
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id"
      -                    ],
      -                    "type": "object"
      -                  }
      -                ]
      -              },
      -              "type": "array"
      -            },
      -            "devices": {
      -              "description": "Devices (values per platform)",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "excluded_custom_audiences": {
      -              "description": "Excluded audiences",
      -              "items": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "properties": {
      -                      "id": {
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id"
      -                    ],
      -                    "type": "object"
      -                  }
      -                ]
      -              },
      -              "type": "array"
      -            },
      -            "excluded_location_details": {
      -              "description": "Places to exclude, same shape as location_details.",
      -              "items": {
      -                "properties": {
      -                  "country": {
      -                    "type": "string"
      -                  },
      -                  "distance_unit": {
      -                    "enum": [
      -                      "mile",
      -                      "kilometer"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "key": {
      -                    "type": "string"
      -                  },
      -                  "latitude": {
      -                    "type": "number"
      -                  },
      -                  "longitude": {
      -                    "type": "number"
      -                  },
      -                  "name": {
      -                    "type": "string"
      -                  },
      -                  "radius": {
      -                    "type": "number"
      -                  },
      -                  "type": {
      -                    "type": "string"
      -                  }
      -                },
      -                "type": "object"
      -              },
      -              "type": "array"
      -            },
      -            "excluded_locations": {
      -              "description": "Country codes to exclude (other places: excluded_location_details).",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "expand_targeting": {
      -              "description": "Legacy alias for advantage_audience",
      -              "type": "boolean"
      -            },
      -            "genders": {
      -              "description": "MALE, FEMALE, UNDETERMINED",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "interests": {
      -              "description": "Interest targeting",
      -              "items": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "properties": {
      -                      "id": {
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id"
      -                    ],
      -                    "type": "object"
      -                  }
      -                ]
      -              },
      -              "type": "array"
      -            },
      -            "keywords": {
      -              "description": "Positive keywords; replaces the set, so send all of them (use add_keywords to append). status changes a keyword in place; one without status keeps its own.",
      -              "items": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "properties": {
      -                      "cpc_bid": {
      -                        "description": "Max CPC, account currency",
      -                        "type": "number"
      -                      },
      -                      "match_type": {
      -                        "enum": [
      -                          "BROAD",
      -                          "PHRASE",
      -                          "EXACT"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      "status": {
      -                        "enum": [
      -                          "ENABLED",
      -                          "PAUSED"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      "text": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "text"
      -                    ],
      -                    "type": "object"
      -                  }
      -                ]
      -              },
      -              "type": "array"
      -            },
      -            "languages": {
      -              "description": "Language codes (e.g. 'en')",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "location_details": {
      -              "description": "Sub-country targeting entries; key from targeting_search.",
      -              "items": {
      -                "description": "Sub-country location or proximity targeting entry.\n\nCity/region: {type, key, name, country} — use targeting_search with type=city to find key.\nProximity: {type: custom_location, latitude, longitude, radius, distance_unit: mile|kilometer}.",
      -                "properties": {
      -                  "country": {
      -                    "description": "Country code",
      -                    "type": "string"
      -                  },
      -                  "distance_unit": {
      -                    "enum": [
      -                      "mile",
      -                      "kilometer"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "key": {
      -                    "description": "Geo identifier (use targeting_search to find). Set empty for custom_location proximity",
      -                    "type": "string"
      -                  },
      -                  "latitude": {
      -                    "type": "number"
      -                  },
      -                  "longitude": {
      -                    "type": "number"
      -                  },
      -                  "name": {
      -                    "description": "Human-readable name",
      -                    "type": "string"
      -                  },
      -                  "radius": {
      -                    "type": "number"
      -                  },
      -                  "type": {
      -                    "description": "city, region, metro, zip, geo_market, custom_location (proximity) or geo_target (exclusions)",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "type",
      -                  "key"
      -                ],
      -                "type": "object"
      -              },
      -              "type": "array"
      -            },
      -            "locations": {
      -              "description": "Country codes or platform location ids; sub-country places go in location_details where the platform supports it (see its capability guide).",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "lookalike_audiences": {
      -              "description": "Lookalike audiences",
      -              "items": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "properties": {
      -                      "id": {
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id"
      -                    ],
      -                    "type": "object"
      -                  }
      -                ]
      -              },
      -              "type": "array"
      -            },
      -            "negative_keywords": {
      -              "description": "Negative keywords. Do NOT put in keywords.",
      -              "items": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "properties": {
      -                      "match_type": {
      -                        "enum": [
      -                          "BROAD",
      -                          "PHRASE",
      -                          "EXACT"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      "text": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "text"
      -                    ],
      -                    "type": "object"
      -                  }
      -                ]
      -              },
      -              "type": "array"
      -            },
      -            "placements": {
      -              "description": "Ad placements (e.g. feed, stories, reels)",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "platforms": {
      -              "description": "Platforms/OS to target (values per platform)",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "properties": {
      +        "add_keywords": {
      +          "description": "Append positive keywords (duplicates skipped, status unchanged); targeting.keywords replaces instead.",
      +          "items": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "properties": {
      +                  "cpc_bid": {
      +                    "description": "Max CPC, account currency",
      +                    "type": "number"
      +                  },
      +                  "match_type": {
      +                    "enum": [
      +                      "BROAD",
      +                      "PHRASE",
      +                      "EXACT"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "status": {
      +                    "enum": [
      +                      "ENABLED",
      +                      "PAUSED"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "text": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "text"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          "type": "array"
      +        },
      +        "ads": {
      +          "description": "Ads to create (no id) or update (with id). Each new ad needs name + creative (headlines, descriptions, final_urls).",
      +          "items": {
      +            "description": "An ad. Omit id to create, include id to update.\n\nEditing a creative may replace the ad under a new id; its status carries over unless this call\nsets status. Send only the creative keys you change.",
      +            "properties": {
      +              "creative": {
      +                "description": "Ad creative. Text ads: headlines + descriptions + final_urls.\n\nNever put a creative_picker token in asset_url — it belongs in upload_ref.",
      +                "properties": {
      +                  "action_button": {
      +                    "description": "AW Video",
      +                    "type": "string"
      +                  },
      +                  "action_headline": {
      +                    "description": "AW Video",
      +                    "type": "string"
      +                  },
      +                  "ad_to_call_properties": {
      +                    "description": "SCM AD_TO_CALL",
      +                    "properties": {
      +                      "message": {
      +                        "description": "AD_TO_MESSAGE text",
      +                        "type": "string"
      +                      },
      +                      "phone_number_id": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "phone_number_id"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "ad_to_lens_properties": {
      +                    "description": "SCM AD_TO_LENS",
      +                    "properties": {
      +                      "lens_media_id": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "lens_media_id"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "ad_to_message_properties": {
      +                    "description": "SCM AD_TO_MESSAGE",
      +                    "properties": {
      +                      "message": {
      +                        "description": "AD_TO_MESSAGE text",
      +                        "type": "string"
      +                      },
      +                      "phone_number_id": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "phone_number_id"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "app_install_properties": {
      +                    "description": "SCM APP_INSTALL",
      +                    "properties": {
      +                      "android_app_url": {
      +                        "type": "string"
      +                      },
      +                      "app_name": {
      +                        "type": "string"
      +                      },
      +                      "icon_media_id": {
      +                        "type": "string"
      +                      },
      +                      "ios_app_id": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "ar_extension_properties": {
      +                    "description": "SCM",
      +                    "properties": {
      +                      "lens_media_id": {
      +                        "type": "string"
      +                      },
      +                      "product_info_card_display_mode": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "lens_media_id"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "asset_data": {
      +                    "description": "Base64, small files only",
      +                    "type": "string"
      +                  },
      +                  "asset_height": {
      +                    "type": "number"
      +                  },
      +                  "asset_id": {
      +                    "type": "string"
      +                  },
      +                  "asset_prompt": {
      +                    "description": "AI image prompt; only if the user declined review, else a creative_picker upload_ref",
      +                    "type": "string"
      +                  },
      +                  "asset_type": {
      +                    "description": "Asset type hint: 'image' (default) or 'video'. Helps detect video ads when URL has no extension.",
      +                    "enum": [
      +                      "image",
      +                      "video"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "asset_url": {
      +                    "description": "Single asset: public URL",
      +                    "type": "string"
      +                  },
      +                  "asset_width": {
      +                    "type": "number"
      +                  },
      +                  "assets": {
      +                    "description": "Image/video assets, one source each (preference: asset_url, asset_id, upload_ref, asset_data, asset_prompt; asset_prompt only if the user explicitly declined to review images, otherwise generate in creative_picker and pass its upload_ref). No image yet? creative_picker browses/uploads/generates first. Single item = single image ad. FA: several items need platform_settings.is_dynamic_creative true; for a creative per placement use placement_assets.",
      +                    "items": {
      +                      "properties": {
      +                        "asset_data": {
      +                          "description": "Base64, small files only",
      +                          "type": "string"
      +                        },
      +                        "asset_height": {
      +                          "type": "integer"
      +                        },
      +                        "asset_id": {
      +                          "description": "Hash/ID from campaign_and_resource_get assets",
      +                          "type": "string"
      +                        },
      +                        "asset_prompt": {
      +                          "description": "AI image prompt; only if the user explicitly declined to review images — otherwise generate in creative_picker and pass its upload_ref",
      +                          "type": "string"
      +                        },
      +                        "asset_type": {
      +                          "enum": [
      +                            "image",
      +                            "video"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "asset_url": {
      +                          "description": "Public URL; auto-uploaded to the ad account",
      +                          "type": "string"
      +                        },
      +                        "asset_width": {
      +                          "type": "integer"
      +                        },
      +                        "type": {
      +                          "description": "AW: 'logo' for a logo image",
      +                          "type": "string"
      +                        },
      +                        "upload_ref": {
      +                          "description": "From creative_picker",
      +                          "type": "string"
      +                        }
      +                      },
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "brand_name": {
      +                    "description": "SCM brand name",
      +                    "type": "string"
      +                  },
      +                  "business_name": {
      +                    "description": "Business name (AW display/PMax).",
      +                    "type": "string"
      +                  },
      +                  "call_to_action": {
      +                    "description": "CTA button (e.g. LEARN_MORE, SHOP_NOW, SIGN_UP, CONTACT_US, DOWNLOAD)",
      +                    "type": "string"
      +                  },
      +                  "carousel_cards": {
      +                    "description": "Carousel cards; use instead of assets.",
      +                    "items": {
      +                      "properties": {
      +                        "asset_id": {
      +                          "type": "string"
      +                        },
      +                        "asset_url": {
      +                          "type": "string"
      +                        },
      +                        "call_to_action": {
      +                          "type": "string"
      +                        },
      +                        "description": {
      +                          "type": "string"
      +                        },
      +                        "headline": {
      +                          "type": "string"
      +                        },
      +                        "link": {
      +                          "type": "string"
      +                        },
      +                        "upload_ref": {
      +                          "type": "string"
      +                        }
      +                      },
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "collection_properties": {
      +                    "description": "SCM COLLECTION",
      +                    "properties": {
      +                      "default_fallback_interaction_type": {
      +                        "type": "string"
      +                      },
      +                      "interaction_zone_id": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "interaction_zone_id",
      +                      "default_fallback_interaction_type"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "companion_banner_id": {
      +                    "description": "AW Video",
      +                    "type": "string"
      +                  },
      +                  "companion_banner_url": {
      +                    "description": "AW Video",
      +                    "type": "string"
      +                  },
      +                  "composite_properties": {
      +                    "description": "SCM COMPOSITE",
      +                    "properties": {
      +                      "creative_ids": {
      +                        "description": "SNAP_AD creative ids",
      +                        "items": {
      +                          "type": "string"
      +                        },
      +                        "type": "array"
      +                      }
      +                    },
      +                    "required": [
      +                      "creative_ids"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "deep_link_properties": {
      +                    "description": "SCM DEEP_LINK",
      +                    "properties": {
      +                      "android_app_url": {
      +                        "type": "string"
      +                      },
      +                      "app_name": {
      +                        "type": "string"
      +                      },
      +                      "deep_link_uri": {
      +                        "type": "string"
      +                      },
      +                      "fallback_type": {
      +                        "type": "string"
      +                      },
      +                      "icon_media_id": {
      +                        "type": "string"
      +                      },
      +                      "ios_app_id": {
      +                        "type": "string"
      +                      },
      +                      "web_view_fallback_url": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "descriptions": {
      +                    "description": "Description texts. An item may be {text, pinned_field: DESCRIPTION_1..2 or null} (AW only).",
      +                    "items": {
      +                      "anyOf": [
      +                        {
      +                          "type": "string"
      +                        },
      +                        {
      +                          "properties": {
      +                            "pinned_field": {
      +                              "anyOf": [
      +                                {
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ],
      +                              "description": "null unpins"
      +                            },
      +                            "text": {
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "text"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      ]
      +                    },
      +                    "type": "array"
      +                  },
      +                  "file_id": {
      +                    "description": "CGPTA: image file id",
      +                    "type": "string"
      +                  },
      +                  "final_urls": {
      +                    "description": "Landing page URLs",
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "headline": {
      +                    "description": "SCM: single headline (else headlines[0])",
      +                    "type": "string"
      +                  },
      +                  "headlines": {
      +                    "description": "Headline texts. An item may be {text, pinned_field: HEADLINE_1..3 or null to unpin} (AW only).",
      +                    "items": {
      +                      "anyOf": [
      +                        {
      +                          "type": "string"
      +                        },
      +                        {
      +                          "properties": {
      +                            "pinned_field": {
      +                              "anyOf": [
      +                                {
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ],
      +                              "description": "null unpins"
      +                            },
      +                            "text": {
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "text"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      ]
      +                    },
      +                    "type": "array"
      +                  },
      +                  "image_ids": {
      +                    "description": "Video ad cover image id (one item).",
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "lead_gen_form_id": {
      +                    "description": "FA lead form",
      +                    "type": "string"
      +                  },
      +                  "lead_generation_form_id": {
      +                    "description": "SCM LEAD_GENERATION",
      +                    "type": "string"
      +                  },
      +                  "link_descriptions": {
      +                    "description": "Link description (line under the headline); one per ad — more than one needs the ad set's platform_settings.is_dynamic_creative true, which cannot be undone.",
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "logo_data": {
      +                    "description": "AW display/PMax: logo base64",
      +                    "type": "string"
      +                  },
      +                  "logo_id": {
      +                    "description": "AW display/PMax: logo asset ID",
      +                    "type": "string"
      +                  },
      +                  "logo_prompt": {
      +                    "description": "AW display/PMax: logo AI prompt (only if user declined review; else creative_picker, then its upload_ref in logo_url)",
      +                    "type": "string"
      +                  },
      +                  "logo_url": {
      +                    "description": "AW display/PMax: logo URL",
      +                    "type": "string"
      +                  },
      +                  "long_headline": {
      +                    "description": "AW display: single long headline (use long_headlines for PMax)",
      +                    "type": "string"
      +                  },
      +                  "long_headlines": {
      +                    "description": "Long headlines (list; preferred over long_headline).",
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "object_story_id": {
      +                    "description": "Existing post to boost, '{page_id}_{post_id}' (resource_type posts). FA reads return it. With a destination_type of more than one messaging app an existing post is refused; with one messaging app (WhatsApp, Messenger, Instagram Direct) Meta may refuse it. A single image or video is the safer choice.",
      +                    "type": "string"
      +                  },
      +                  "page_welcome_message": {
      +                    "description": "FA messaging",
      +                    "type": "string"
      +                  },
      +                  "path1": {
      +                    "description": "Display path 1 (max 15 chars, no \"/\"). Omit keeps, \"\" removes.",
      +                    "maxLength": 15,
      +                    "type": "string"
      +                  },
      +                  "path2": {
      +                    "description": "Display path 2 (needs path1; max 15, no \"/\"). Omit keeps, \"\" removes.",
      +                    "maxLength": 15,
      +                    "type": "string"
      +                  },
      +                  "placement_assets": {
      +                    "description": "FA only: a different image or video per placement, without Dynamic Creative. An entry's source may be an upload_ref. Shape, rules and position values: supermetrics_guide mode facebook_meta_capabilities.",
      +                    "items": {
      +                      "properties": {
      +                        "asset_data": {
      +                          "description": "Base64, small files only",
      +                          "type": "string"
      +                        },
      +                        "asset_id": {
      +                          "description": "Hash/ID from campaign_and_resource_get assets",
      +                          "type": "string"
      +                        },
      +                        "asset_prompt": {
      +                          "description": "AI image prompt; only if the user explicitly declined to review images — otherwise generate in creative_picker and pass its upload_ref",
      +                          "type": "string"
      +                        },
      +                        "asset_type": {
      +                          "enum": [
      +                            "image",
      +                            "video"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "asset_url": {
      +                          "description": "Public URL; auto-uploaded to the ad account",
      +                          "type": "string"
      +                        },
      +                        "placements": {
      +                          "anyOf": [
      +                            {
      +                              "enum": [
      +                                "default"
      +                              ],
      +                              "type": "string"
      +                            },
      +                            {
      +                              "properties": {
      +                                "audience_network_positions": {
      +                                  "items": {
      +                                    "type": "string"
      +                                  },
      +                                  "type": "array"
      +                                },
      +                                "facebook_positions": {
      +                                  "items": {
      +                                    "type": "string"
      +                                  },
      +                                  "type": "array"
      +                                },
      +                                "instagram_positions": {
      +                                  "items": {
      +                                    "type": "string"
      +                                  },
      +                                  "type": "array"
      +                                },
      +                                "messenger_positions": {
      +                                  "items": {
      +                                    "type": "string"
      +                                  },
      +                                  "type": "array"
      +                                },
      +                                "publisher_platforms": {
      +                                  "items": {
      +                                    "type": "string"
      +                                  },
      +                                  "type": "array"
      +                                },
      +                                "threads_positions": {
      +                                  "items": {
      +                                    "type": "string"
      +                                  },
      +                                  "type": "array"
      +                                }
      +                              },
      +                              "type": "object"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ],
      +                          "description": "\"default\" for every other placement, or the positions"
      +                        },
      +                        "thumbnail_data": {
      +                          "description": "Video: thumbnail image as base64, small files only",
      +                          "type": "string"
      +                        },
      +                        "thumbnail_url": {
      +                          "description": "Video: thumbnail image URL",
      +                          "type": "string"
      +                        },
      +                        "upload_ref": {
      +                          "description": "From creative_picker",
      +                          "type": "string"
      +                        },
      +                        "video_title": {
      +                          "description": "Video: name of an uploaded video; default the creative's video_title",
      +                          "type": "string"
      +                        }
      +                      },
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "preview_creative_id": {
      +                    "description": "SCM COMPOSITE (Story): preview creative",
      +                    "type": "string"
      +                  },
      +                  "reminder_properties": {
      +                    "description": "SCM REMINDER",
      +                    "properties": {
      +                      "event_detail_id": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "event_detail_id"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "shareable": {
      +                    "description": "SCM, default true",
      +                    "type": "boolean"
      +                  },
      +                  "square_asset_data": {
      +                    "description": "AW display: square image base64",
      +                    "type": "string"
      +                  },
      +                  "square_asset_id": {
      +                    "description": "AW display: square asset ID",
      +                    "type": "string"
      +                  },
      +                  "square_asset_prompt": {
      +                    "description": "AW display: square image AI prompt (only if user declined review; else creative_picker, then its upload_ref in square_asset_url)",
      +                    "type": "string"
      +                  },
      +                  "square_asset_url": {
      +                    "description": "AW display: square image URL",
      +                    "type": "string"
      +                  },
      +                  "thumbnail_url": {
      +                    "description": "FA video thumbnail",
      +                    "type": "string"
      +                  },
      +                  "top_snap_media_id": {
      +                    "description": "SCM",
      +                    "type": "string"
      +                  },
      +                  "type": {
      +                    "description": "SCM ad type",
      +                    "type": "string"
      +                  },
      +                  "upload_ref": {
      +                    "description": "From creative_picker",
      +                    "type": "string"
      +                  },
      +                  "url_tags": {
      +                    "description": "URL tracking parameters appended to ad links (AW: Final URL suffix)",
      +                    "type": "string"
      +                  },
      +                  "video_asset_id": {
      +                    "description": "AW video ad: the video, as reads return it",
      +                    "type": "string"
      +                  },
      +                  "video_asset_ids": {
      +                    "description": "AW",
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "video_title": {
      +                    "description": "FA: name of an uploaded video",
      +                    "type": "string"
      +                  },
      +                  "web_view_properties": {
      +                    "description": "SCM",
      +                    "properties": {
      +                      "url": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "url"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "whatsapp_number": {
      +                    "description": "FA WhatsApp ads: the number the button opens. Omit to keep the current one; \"\" = the page's number",
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "id": {
      +                "description": "Ad ID — omit for create, include for update",
      +                "type": "string"
      +              },
      +              "name": {
      +                "description": "Ad name (required for create, optional for update)",
      +                "type": "string"
      +              },
      +              "platform_settings": {
      +                "description": "Platform-specific ad settings. Set ad status via the top-level status field, not here.",
      +                "properties": {
      +                  "ad_format": {
      +                    "description": "TIK",
      +                    "type": "string"
      +                  },
      +                  "ad_type": {
      +                    "description": "AW: same as type",
      +                    "type": "string"
      +                  },
      +                  "call_to_action": {
      +                    "description": "TIK",
      +                    "type": "string"
      +                  },
      +                  "call_to_action_id": {
      +                    "description": "TIK",
      +                    "type": "string"
      +                  },
      +                  "dsa_beneficiary": {
      +                    "description": "FA: send on the ad set's platform_settings instead",
      +                    "type": "string"
      +                  },
      +                  "dsa_payor": {
      +                    "description": "FA: send on the ad set's platform_settings instead",
      +                    "type": "string"
      +                  },
      +                  "identity_authorized_bc_id": {
      +                    "description": "TIK Business Center",
      +                    "type": "string"
      +                  },
      +                  "identity_id": {
      +                    "description": "TIK Spark Ad: account owning the post",
      +                    "type": "string"
      +                  },
      +                  "identity_type": {
      +                    "description": "TIK",
      +                    "type": "string"
      +                  },
      +                  "music_id": {
      +                    "description": "TIK",
      +                    "type": "string"
      +                  },
      +                  "page_id": {
      +                    "description": "FA Page",
      +                    "type": "string"
      +                  },
      +                  "pixel_id": {
      +                    "description": "FA: adds one pixel's tracking spec",
      +                    "type": "string"
      +                  },
      +                  "profile_id": {
      +                    "description": "SCM: public profile UUID",
      +                    "type": "string"
      +                  },
      +                  "tiktok_item_id": {
      +                    "description": "TIK Spark Ad: the post",
      +                    "type": "string"
      +                  },
      +                  "tracking_pixel_id": {
      +                    "description": "TIK: pixel tracking the ad",
      +                    "type": "string"
      +                  },
      +                  "tracking_specs": {
      +                    "description": "FA: Meta pixel tracking specs",
      +                    "items": {
      +                      "additionalProperties": {
      +                        "items": {
      +                          "type": "string"
      +                        },
      +                        "type": "array"
      +                      },
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "type": {
      +                    "description": "AW ad type",
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "status": {
      +                "description": "ENABLED, PAUSED, or REMOVED (platform wording normalized). Sets the ad's status; if omitted the platform's own default applies, which on some platforms is live — set PAUSED explicitly if the ad must not serve. If a creative edit replaces the ad, status carries over unless set here. Set ENABLED only on explicit user approval — it can start spend.",
      +                "type": "string"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "budget_amount": {
      +          "description": "Budget in account currency",
      +          "type": "number"
      +        },
      +        "budget_type": {
      +          "description": "DAILY or LIFETIME",
      +          "type": "string"
      +        },
      +        "extensions": {
      +          "description": "Image assets for this ad group only. Other extension types are ignored, with a note naming them.",
      +          "properties": {
      +            "images": {
      +              "description": "Replaces the ad group's images; [] removes them; omit keeps them.",
      +              "items": {
      +                "description": "One of url, data (base64), id (existing asset) or upload_ref (from creative_picker).",
      +                "properties": {
      +                  "data": {
      +                    "type": "string"
      +                  },
      +                  "id": {
      +                    "type": "string"
      +                  },
      +                  "upload_ref": {
      +                    "type": "string"
      +                  },
      +                  "url": {
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "type": "array"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "id": {
      +          "description": "Ad group/ad set ID — omit to create new, include to update existing",
      +          "type": "string"
      +        },
      +        "name": {
      +          "description": "Ad group name (required for create)",
      +          "type": "string"
      +        },
      +        "platform_settings": {
      +          "description": "Platform-specific ad group / ad set settings; each key names its platforms. On update send only the keys you change.",
      +          "properties": {
      +            "ad_schedule": {
      +              "description": "FA dayparting",
      +              "items": {
      +                "properties": {
      +                  "days": {
      +                    "description": "0 = Sunday",
      +                    "items": {
      +                      "type": "integer"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "end_minute": {
      +                    "type": "integer"
      +                  },
      +                  "start_minute": {
      +                    "type": "integer"
      +                  },
      +                  "timezone_type": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "start_minute",
      +                  "end_minute",
      +                  "days"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "app_id": {
      +              "description": "TIK APP_PROMOTION, required, create only: app id from TikTok Ads Manager",
      +              "type": "string"
      +            },
      +            "attribution_spec": {
      +              "description": "FA",
      +              "items": {
      +                "properties": {
      +                  "event_type": {
      +                    "type": "string"
      +                  },
      +                  "window_days": {
      +                    "type": "integer"
      +                  }
      +                },
      +                "required": [
      +                  "event_type",
      +                  "window_days"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "audience_signals": {
      +              "description": "AW PMax: Audience ids or resource names",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "bid_amount": {
      +              "description": "FA legacy: Meta minor units (250 = 2.50); prefer bid_price",
      +              "type": "integer"
      +            },
      +            "bid_constraints": {
      +              "description": "FA",
      +              "properties": {
      +                "roas_average_floor": {
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "roas_average_floor"
      +              ],
      +              "type": "object"
      +            },
      +            "bid_micro": {
      +              "description": "SCM: micro-currency",
      +              "type": "integer"
      +            },
      +            "bid_price": {
      +              "description": "FA/TIK: account currency",
      +              "type": "number"
      +            },
      +            "bid_strategy": {
      +              "description": "FA ABO/SCM ad set bid strategy",
      +              "type": "string"
      +            },
      +            "bid_type": {
      +              "description": "TIK",
      +              "enum": [
      +                "BID_TYPE_NO_BID",
      +                "BID_TYPE_CUSTOM",
      +                "BID_TYPE_MAX_CONVERSION"
      +              ],
      +              "type": "string"
      +            },
      +            "billing_event": {
      +              "description": "FA/TIK/LIA/SCM/CGPTA",
      +              "type": "string"
      +            },
      +            "budget_amount": {
      +              "description": "SCM: account currency",
      +              "type": "number"
      +            },
      +            "budget_type": {
      +              "description": "SCM",
      +              "enum": [
      +                "DAILY",
      +                "LIFETIME"
      +              ],
      +              "type": "string"
      +            },
      +            "campaign_type": {
      +              "description": "LIA",
      +              "type": "string"
      +            },
      +            "context_hints": {
      +              "description": "CGPTA: topic keywords",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "conversion_bid_price": {
      +              "description": "TIK, account currency",
      +              "type": "number"
      +            },
      +            "conversion_window": {
      +              "description": "SCM",
      +              "type": "string"
      +            },
      +            "cost_type": {
      +              "description": "LIA",
      +              "enum": [
      +                "CPM",
      +                "CPC"
      +              ],
      +              "type": "string"
      +            },
      +            "cpc_bid": {
      +              "description": "AW/AC/CGPTA",
      +              "type": "number"
      +            },
      +            "custom_event_type": {
      +              "description": "FA: with pixel_id",
      +              "type": "string"
      +            },
      +            "daily_budget": {
      +              "description": "LIA. FA: minor units; prefer budget_amount",
      +              "type": "number"
      +            },
      +            "daily_min_spend_target": {
      +              "description": "FA legacy, minor units: prefer daily_spend_min",
      +              "type": "number"
      +            },
      +            "daily_spend_cap": {
      +              "description": "FA legacy, minor units: prefer daily_spend_max",
      +              "type": "number"
      +            },
      +            "daily_spend_max": {
      +              "description": "FA ad set spend limit, account currency",
      +              "type": "number"
      +            },
      +            "daily_spend_min": {
      +              "description": "FA ad set spend limit, account currency",
      +              "type": "number"
      +            },
      +            "destination_type": {
      +              "description": "FA",
      +              "type": "string"
      +            },
      +            "dsa_beneficiary": {
      +              "description": "FA EU transparency: legal entity promoted",
      +              "type": "string"
      +            },
      +            "dsa_payor": {
      +              "description": "FA EU transparency: legal entity paying",
      +              "type": "string"
      +            },
      +            "end_date": {
      +              "description": "This ad group's own flight end",
      +              "type": "string"
      +            },
      +            "end_time": {
      +              "description": "FA/SCM/TIK: flight end date-time",
      +              "type": "string"
      +            },
      +            "frequency": {
      +              "description": "TIK: max impressions per user",
      +              "type": "integer"
      +            },
      +            "frequency_control_specs": {
      +              "description": "FA",
      +              "items": {
      +                "properties": {
      +                  "event": {
      +                    "type": "string"
      +                  },
      +                  "interval_days": {
      +                    "type": "integer"
      +                  },
      +                  "max_frequency": {
      +                    "type": "integer"
      +                  }
      +                },
      +                "required": [
      +                  "event",
      +                  "interval_days",
      +                  "max_frequency"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "frequency_schedule": {
      +              "description": "TIK: days",
      +              "type": "integer"
      +            },
      +            "identity_id": {
      +              "description": "TIK, with identity_type",
      +              "type": "string"
      +            },
      +            "identity_type": {
      +              "description": "TIK",
      +              "type": "string"
      +            },
      +            "is_dynamic_creative": {
      +              "description": "FA: true is permanent on a published ad set",
      +              "type": "boolean"
      +            },
      +            "lifetime_budget": {
      +              "description": "LIA/TIK. FA legacy, minor units: prefer budget_amount + budget_type",
      +              "type": "number"
      +            },
      +            "lifetime_min_spend_target": {
      +              "description": "FA legacy, minor units: prefer lifetime_spend_min",
      +              "type": "number"
      +            },
      +            "lifetime_spend_cap": {
      +              "description": "FA legacy, minor units: prefer lifetime_spend_max",
      +              "type": "number"
      +            },
      +            "lifetime_spend_max": {
      +              "description": "FA ad set spend limit, account currency",
      +              "type": "number"
      +            },
      +            "lifetime_spend_min": {
      +              "description": "FA ad set spend limit, account currency",
      +              "type": "number"
      +            },
      +            "location_ids": {
      +              "description": "TIK",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "max_bid_micros": {
      +              "description": "CGPTA: micro-currency",
      +              "type": "integer"
      +            },
      +            "objective_type": {
      +              "description": "LIA",
      +              "type": "string"
      +            },
      +            "optimization_event": {
      +              "description": "TIK",
      +              "type": "string"
      +            },
      +            "optimization_goal": {
      +              "description": "FA/TIK/SCM",
      +              "type": "string"
      +            },
      +            "optimization_sub_event": {
      +              "description": "FA",
      +              "type": "string"
      +            },
      +            "pacing": {
      +              "description": "TIK",
      +              "enum": [
      +                "PACING_MODE_SMOOTH",
      +                "PACING_MODE_FAST"
      +              ],
      +              "type": "string"
      +            },
      +            "pacing_type": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "items": {
      +                    "type": "string"
      +                  },
      +                  "type": "array"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "description": "SCM/FA"
      +            },
      +            "page_id": {
      +              "description": "FA",
      +              "type": "string"
      +            },
      +            "pixel_event": {
      +              "description": "TIK: conversion event",
      +              "type": "string"
      +            },
      +            "pixel_id": {
      +              "description": "Pixel to optimize for",
      +              "type": "string"
      +            },
      +            "placement_config": {
      +              "description": "SCM",
      +              "enum": [
      +                "AUTOMATIC",
      +                "CUSTOM"
      +              ],
      +              "type": "string"
      +            },
      +            "placement_type": {
      +              "description": "TIK",
      +              "enum": [
      +                "PLACEMENT_TYPE_AUTOMATIC",
      +                "PLACEMENT_TYPE_NORMAL"
      +              ],
      +              "type": "string"
      +            },
      +            "placements": {
      +              "description": "TIK",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "product_filter": {
      +              "description": "AW retail: this asset group only",
      +              "properties": {
      +                "conditions": {
      +                  "items": {
      +                    "properties": {
      +                      "dimension": {
      +                        "type": "string"
      +                      },
      +                      "values": {
      +                        "items": {
      +                          "type": "string"
      +                        },
      +                        "type": "array"
      +                      }
      +                    },
      +                    "required": [
      +                      "dimension",
      +                      "values"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "mode": {
      +                  "enum": [
      +                    "include",
      +                    "exclude"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "mode",
      +                "conditions"
      +              ],
      +              "type": "object"
      +            },
      +            "promoted_object": {
      +              "description": "FA",
      +              "properties": {
      +                "custom_conversion_id": {
      +                  "type": "string"
      +                },
      +                "custom_event_type": {
      +                  "type": "string"
      +                },
      +                "page_id": {
      +                  "type": "string"
      +                },
      +                "pixel_id": {
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "promotion_type": {
      +              "description": "TIK; APP_PROMOTION: APP_ANDROID or APP_IOS",
      +              "type": "string"
      +            },
      +            "regional_regulated_categories": {
      +              "description": "FA",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "regional_regulation_identities": {
      +              "description": "FA: regional regulation ids",
      +              "properties": {
      +                "singapore_universal_beneficiary": {
      +                  "type": "string"
      +                },
      +                "singapore_universal_payer": {
      +                  "type": "string"
      +                },
      +                "taiwan_universal_beneficiary": {
      +                  "type": "string"
      +                },
      +                "taiwan_universal_payer": {
      +                  "type": "string"
      +                },
      +                "universal_beneficiary": {
      +                  "type": "string"
      +                },
      +                "universal_payer": {
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "roas_average_floor": {
      +              "description": "FA",
      +              "type": "number"
      +            },
      +            "schedule_end_time": {
      +              "description": "TIK",
      +              "type": "string"
      +            },
      +            "schedule_start_time": {
      +              "description": "TIK",
      +              "type": "string"
      +            },
      +            "schedule_type": {
      +              "description": "TIK",
      +              "enum": [
      +                "SCHEDULE_START_END",
      +                "SCHEDULE_FROM_NOW"
      +              ],
      +              "type": "string"
      +            },
      +            "search_themes": {
      +              "description": "AW PMax: optimization hints",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "start_date": {
      +              "description": "This ad group's own flight start",
      +              "type": "string"
      +            },
      +            "start_time": {
      +              "description": "FA/SCM/TIK: flight start date-time",
      +              "type": "string"
      +            },
      +            "tiktok_item_id": {
      +              "description": "TIK",
      +              "type": "string"
      +            },
      +            "type": {
      +              "description": "AW/AC ad group type",
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "remove_keywords": {
      +          "description": "Update only: remove positive keywords.",
      +          "items": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "properties": {
      +                  "match_type": {
      +                    "enum": [
      +                      "BROAD",
      +                      "PHRASE",
      +                      "EXACT"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "text": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "text"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          "type": "array"
      +        },
      +        "status": {
      +          "description": "ENABLED, PAUSED or REMOVED (platform wording normalized). Some platforms force PAUSED on create: re-read, update if it differs. ENABLED only on explicit user approval. Campaign, ad group (PMax: asset group) and ad each have their own status.",
      +          "type": "string"
      +        },
      +        "targeting": {
      +          "description": "Ad group targeting; on create, overrides campaign-level targeting. On update: omitted fields are kept, sent ones replaced, [] clears one. An unsupported targeting field is refused or reported in the result, not silently applied.",
      +          "properties": {
      +            "advantage_audience": {
      +              "description": "Advantage+ Audience (AI audience expansion) on/off",
      +              "type": "boolean"
      +            },
      +            "age_max": {
      +              "description": "Maximum age",
      +              "type": "integer"
      +            },
      +            "age_min": {
      +              "description": "Minimum age",
      +              "type": "integer"
      +            },
      +            "age_suggestion": {
      +              "description": "[min, max] preferred ages (soft, with advantage_audience); [] clears.",
      +              "items": {
      +                "type": "integer"
      +              },
      +              "maxItems": 2,
      +              "type": "array"
      +            },
      +            "custom_audiences": {
      +              "description": "Custom audiences",
      +              "items": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "properties": {
      +                      "id": {
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id"
      +                    ],
      +                    "type": "object"
      +                  }
      +                ]
      +              },
      +              "type": "array"
      +            },
      +            "devices": {
      +              "description": "Devices (values per platform)",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "excluded_custom_audiences": {
      +              "description": "Excluded audiences",
      +              "items": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "properties": {
      +                      "id": {
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id"
      +                    ],
      +                    "type": "object"
      +                  }
      +                ]
      +              },
      +              "type": "array"
      +            },
      +            "excluded_location_details": {
      +              "description": "Places to exclude, same shape as location_details.",
      +              "items": {
      +                "properties": {
      +                  "country": {
      +                    "type": "string"
      +                  },
      +                  "distance_unit": {
      +                    "enum": [
      +                      "mile",
      +                      "kilometer"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "key": {
      +                    "type": "string"
      +                  },
      +                  "latitude": {
      +                    "type": "number"
      +                  },
      +                  "longitude": {
      +                    "type": "number"
      +                  },
      +                  "name": {
      +                    "type": "string"
      +                  },
      +                  "radius": {
      +                    "type": "number"
      +                  },
      +                  "type": {
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "excluded_locations": {
      +              "description": "Country codes to exclude (other places: excluded_location_details).",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "expand_targeting": {
      +              "description": "Legacy alias for advantage_audience",
      +              "type": "boolean"
      +            },
      +            "genders": {
      +              "description": "MALE, FEMALE, UNDETERMINED",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "interests": {
      +              "description": "Interest targeting",
      +              "items": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "properties": {
      +                      "id": {
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id"
      +                    ],
      +                    "type": "object"
      +                  }
      +                ]
      +              },
      +              "type": "array"
      +            },
      +            "keywords": {
      +              "description": "Positive keywords; replaces the set, so send all of them (use add_keywords to append). status changes a keyword in place; one without status keeps its own.",
      +              "items": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "properties": {
      +                      "cpc_bid": {
      +                        "description": "Max CPC, account currency",
      +                        "type": "number"
      +                      },
      +                      "match_type": {
      +                        "enum": [
      +                          "BROAD",
      +                          "PHRASE",
      +                          "EXACT"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "status": {
      +                        "enum": [
      +                          "ENABLED",
      +                          "PAUSED"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "text": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "text"
      +                    ],
      +                    "type": "object"
      +                  }
      +                ]
      +              },
      +              "type": "array"
      +            },
      +            "languages": {
      +              "description": "Language codes (e.g. 'en')",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "location_details": {
      +              "description": "Sub-country targeting entries; key from targeting_search.",
      +              "items": {
      +                "description": "Sub-country location or proximity targeting entry.\n\nCity/region: {type, key, name, country} — use targeting_search with type=city to find key.\nProximity: {type: custom_location, latitude, longitude, radius, distance_unit: mile|kilometer}.",
      +                "properties": {
      +                  "country": {
      +                    "description": "Country code",
      +                    "type": "string"
      +                  },
      +                  "distance_unit": {
      +                    "enum": [
      +                      "mile",
      +                      "kilometer"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "key": {
      +                    "description": "Geo identifier (use targeting_search to find). Set empty for custom_location proximity",
      +                    "type": "string"
      +                  },
      +                  "latitude": {
      +                    "type": "number"
      +                  },
      +                  "longitude": {
      +                    "type": "number"
      +                  },
      +                  "name": {
      +                    "description": "Human-readable name",
      +                    "type": "string"
      +                  },
      +                  "radius": {
      +                    "type": "number"
      +                  },
      +                  "type": {
      +                    "description": "city, region, metro, zip, geo_market, custom_location (proximity) or geo_target (exclusions)",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "type",
      +                  "key"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "locations": {
      +              "description": "Country codes or platform location ids; sub-country places go in location_details where the platform supports it (see its capability guide).",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "lookalike_audiences": {
      +              "description": "Lookalike audiences",
      +              "items": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "properties": {
      +                      "id": {
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id"
      +                    ],
      +                    "type": "object"
      +                  }
      +                ]
      +              },
      +              "type": "array"
      +            },
      +            "negative_keywords": {
      +              "description": "Negative keywords. Do NOT put in keywords.",
      +              "items": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "properties": {
      +                      "match_type": {
      +                        "enum": [
      +                          "BROAD",
      +                          "PHRASE",
      +                          "EXACT"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "text": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "text"
      +                    ],
      +                    "type": "object"
      +                  }
      +                ]
      +              },
      +              "type": "array"
      +            },
      +            "placements": {
      +              "description": "Ad placements (e.g. feed, stories, reels)",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "platforms": {
      +              "description": "Platforms/OS to target (values per platform)",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / platform_settings / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "ad_schedule": {
      -        "description": "AW: day-of-week bid modifiers",
      -        "items": {
      -          "properties": {
      -            "bid_modifier": {
      -              "description": "Multiplier",
      -              "type": "number"
      -            },
      -            "day_of_week": {
      -              "enum": [
      -                "MONDAY",
      -                "TUESDAY",
      -                "WEDNESDAY",
      -                "THURSDAY",
      -                "FRIDAY",
      -                "SATURDAY",
      -                "SUNDAY"
      -              ],
      -              "type": "string"
      -            },
      -            "end_hour": {
      -              "type": "integer"
      -            },
      -            "start_hour": {
      -              "description": "Dayparting, with end_hour",
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "day_of_week"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "ai_max_enabled": {
      -        "description": "AW Search: AI Max",
      -        "type": "boolean"
      -      },
      -      "app_id": {
      -        "description": "AW App",
      -        "type": "string"
      -      },
      -      "app_store": {
      -        "description": "AW App",
      -        "enum": [
      -          "GOOGLE_APP_STORE",
      -          "APPLE_APP_STORE"
      -        ],
      -        "type": "string"
      -      },
      -      "bid_adjustments": {
      -        "description": "AW: bid modifiers",
      -        "properties": {
      -          "age_ranges": {
      -            "items": {
      -              "properties": {
      -                "bid_modifier": {
      -                  "type": "number"
      -                },
      -                "type": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "type",
      -                "bid_modifier"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "devices": {
      -            "items": {
      -              "properties": {
      -                "bid_modifier": {
      -                  "type": "number"
      -                },
      -                "type": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "type",
      -                "bid_modifier"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "genders": {
      -            "items": {
      -              "properties": {
      -                "bid_modifier": {
      -                  "type": "number"
      -                },
      -                "type": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "type",
      -                "bid_modifier"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "locations": {
      -            "items": {
      -              "properties": {
      -                "bid_modifier": {
      -                  "type": "number"
      -                },
      -                "id": {
      -                  "description": "Geo target id",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "id",
      -                "bid_modifier"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "bidding_config": {
      -        "description": "Bid targets",
      -        "properties": {
      -          "target_cpa": {
      -            "type": "number"
      -          },
      -          "target_impression_share_cpc_bid_ceiling": {
      -            "description": "Account currency",
      -            "type": "number"
      -          },
      -          "target_impression_share_location": {
      -            "enum": [
      -              "ANYWHERE_ON_PAGE",
      -              "TOP_OF_PAGE",
      -              "ABSOLUTE_TOP_OF_PAGE"
      -            ],
      -            "type": "string"
      -          },
      -          "target_impression_share_percentage": {
      -            "type": "number"
      -          },
      -          "target_roas": {
      -            "type": "number"
      -          },
      -          "target_spend_cpc_bid_ceiling": {
      -            "description": "Max CPC, account currency",
      -            "type": "number"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "bidding_strategy_goal_type": {
      -        "description": "AW App",
      -        "type": "string"
      -      },
      -      "brand_exclusions": {
      -        "description": "AW PMax: brand names to exclude",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "budget_optimize_switch": {
      -        "description": "TIK: campaign budget (CBO)",
      -        "enum": [
      -          "ON",
      -          "OFF"
      -        ],
      -        "type": "string"
      -      },
      -      "business_name": {
      -        "description": "AW PMax",
      -        "type": "string"
      -      },
      -      "buying_type": {
      -        "description": "FA",
      -        "type": "string"
      -      },
      -      "campaign_budget_optimization": {
      -        "description": "FA: true = campaign budget (CBO)",
      -        "type": "boolean"
      -      },
      -      "campaign_type": {
      -        "description": "AW/AC",
      -        "type": "string"
      -      },
      -      "channel_controls": {
      -        "description": "AW Demand Gen: channels to serve on",
      -        "properties": {
      -          "discover": {
      -            "type": "boolean"
      -          },
      -          "display": {
      -            "type": "boolean"
      -          },
      -          "gmail": {
      -            "type": "boolean"
      -          },
      -          "youtube": {
      -            "description": "All three youtube_* channels",
      -            "type": "boolean"
      -          },
      -          "youtube_in_feed": {
      -            "type": "boolean"
      -          },
      -          "youtube_in_stream": {
      -            "type": "boolean"
      -          },
      -          "youtube_shorts": {
      -            "type": "boolean"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "conversion_actions": {
      -        "description": "AW App: conversion action ids",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "conversion_goals": {
      -        "description": "AW PMax: conversion goal categories",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "device_bid_adjustments": {
      -        "description": "AC: bid multipliers",
      -        "properties": {
      -          "DESKTOP": {
      -            "type": "number"
      -          },
      -          "MOBILE": {
      -            "type": "number"
      -          },
      -          "TABLET": {
      -            "type": "number"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "final_url_expansion": {
      -        "description": "AW: expand to other landing pages",
      -        "type": "boolean"
      -      },
      -      "geo_target_type": {
      -        "description": "AW: who the locations reach",
      -        "enum": [
      -          "PRESENCE",
      -          "PRESENCE_OR_INTEREST",
      -          "SEARCH_INTEREST"
      -        ],
      -        "type": "string"
      -      },
      -      "is_adset_budget_sharing_enabled": {
      -        "description": "FA ABO: ad sets share budget",
      -        "type": "boolean"
      -      },
      -      "logo_data": {
      -        "description": "AW PMax",
      -        "type": "string"
      -      },
      -      "logo_id": {
      -        "description": "AW PMax",
      -        "type": "string"
      -      },
      -      "logo_prompt": {
      -        "description": "AW PMax: only if the user declined review; else a creative_picker upload_ref in logo_url",
      -        "type": "string"
      -      },
      -      "logo_url": {
      -        "description": "AW PMax: brand logo URL",
      -        "type": "string"
      -      },
      -      "negative_keyword_lists": {
      -        "description": "AW: shared negative keyword lists",
      -        "items": {
      -          "properties": {
      -            "keywords": {
      -              "description": "Omit to attach an existing list by name",
      -              "items": {
      -                "properties": {
      -                  "match_type": {
      -                    "enum": [
      -                      "BROAD",
      -                      "PHRASE",
      -                      "EXACT"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "text": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "text"
      -                ],
      -                "type": "object"
      -              },
      -              "type": "array"
      -            },
      -            "name": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "name"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "network_settings": {
      -        "description": "AW: which networks serve",
      -        "properties": {
      -          "display": {
      -            "type": "boolean"
      -          },
      -          "search": {
      -            "type": "boolean"
      -          },
      -          "search_partners": {
      -            "type": "boolean"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "objective": {
      -        "description": "FA",
      -        "type": "string"
      -      },
      -      "objective_type": {
      -        "description": "TIK",
      -        "type": "string"
      -      },
      -      "objective_v2_type": {
      -        "description": "SCM",
      -        "type": "string"
      -      },
      -      "product_filter": {
      -        "description": "AW retail: products to serve",
      -        "properties": {
      -          "conditions": {
      -            "items": {
      -              "properties": {
      -                "dimension": {
      -                  "type": "string"
      -                },
      -                "values": {
      -                  "items": {
      -                    "type": "string"
      -                  },
      -                  "type": "array"
      -                }
      -              },
      -              "required": [
      -                "dimension",
      -                "values"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "mode": {
      -            "enum": [
      -              "include",
      -              "exclude"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "mode",
      -          "conditions"
      -        ],
      -        "type": "object"
      -      },
      -      "profile_id": {
      -        "description": "SCM: public profile UUID",
      -        "type": "string"
      -      },
      -      "shopping_setting": {
      -        "description": "AW retail",
      -        "properties": {
      -          "campaign_priority": {
      -            "type": "integer"
      -          },
      -          "enable_local": {
      -            "type": "boolean"
      -          },
      -          "feed_label": {
      -            "type": "string"
      -          },
      -          "merchant_id": {
      -            "description": "Merchant Center id",
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "special_ad_categories": {
      -        "description": "FA",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "special_ad_category_country": {
      -        "description": "FA: ISO alpha-2 country codes",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "store_id": {
      -        "description": "AC Shopping",
      -        "type": "string"
      -      },
      -      "target_cpa": {
      -        "description": "AW",
      -        "type": "number"
      -      },
      -      "target_impression_share_cpc_bid_ceiling": {
      -        "description": "AW",
      -        "type": "number"
      -      },
      -      "target_impression_share_location": {
      -        "description": "AW",
      -        "enum": [
      -          "ANYWHERE_ON_PAGE",
      -          "TOP_OF_PAGE",
      -          "ABSOLUTE_TOP_OF_PAGE"
      -        ],
      -        "type": "string"
      -      },
      -      "target_impression_share_percentage": {
      -        "description": "AW",
      -        "type": "number"
      -      },
      -      "target_roas": {
      -        "description": "AW",
      -        "type": "number"
      -      },
      -      "target_spend_cpc_bid_ceiling": {
      -        "description": "AW",
      -        "type": "number"
      -      },
      -      "time_zone": {
      -        "description": "AC",
      -        "type": "string"
      -      },
      -      "youtube_only": {
      -        "description": "AW Demand Gen",
      -        "type": "boolean"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "ad_schedule": {
      +        "description": "AW: day-of-week bid modifiers",
      +        "items": {
      +          "properties": {
      +            "bid_modifier": {
      +              "description": "Multiplier",
      +              "type": "number"
      +            },
      +            "day_of_week": {
      +              "enum": [
      +                "MONDAY",
      +                "TUESDAY",
      +                "WEDNESDAY",
      +                "THURSDAY",
      +                "FRIDAY",
      +                "SATURDAY",
      +                "SUNDAY"
      +              ],
      +              "type": "string"
      +            },
      +            "end_hour": {
      +              "type": "integer"
      +            },
      +            "start_hour": {
      +              "description": "Dayparting, with end_hour",
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "day_of_week"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "ai_max_enabled": {
      +        "description": "AW Search: AI Max",
      +        "type": "boolean"
      +      },
      +      "app_id": {
      +        "description": "AW App; TIK APP_PROMOTION: app id, create only",
      +        "type": "string"
      +      },
      +      "app_promotion_type": {
      +        "description": "TIK APP_PROMOTION, create only: APP_INSTALL, APP_RETARGETING, APP_PREREGISTRATION, PAID_CONTENT",
      +        "type": "string"
      +      },
      +      "app_store": {
      +        "description": "AW App",
      +        "enum": [
      +          "GOOGLE_APP_STORE",
      +          "APPLE_APP_STORE"
      +        ],
      +        "type": "string"
      +      },
      +      "bid_adjustments": {
      +        "description": "AW: bid modifiers",
      +        "properties": {
      +          "age_ranges": {
      +            "items": {
      +              "properties": {
      +                "bid_modifier": {
      +                  "type": "number"
      +                },
      +                "type": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "type",
      +                "bid_modifier"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "devices": {
      +            "items": {
      +              "properties": {
      +                "bid_modifier": {
      +                  "type": "number"
      +                },
      +                "type": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "type",
      +                "bid_modifier"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "genders": {
      +            "items": {
      +              "properties": {
      +                "bid_modifier": {
      +                  "type": "number"
      +                },
      +                "type": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "type",
      +                "bid_modifier"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "locations": {
      +            "items": {
      +              "properties": {
      +                "bid_modifier": {
      +                  "type": "number"
      +                },
      +                "id": {
      +                  "description": "Geo target id",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "id",
      +                "bid_modifier"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "bidding_config": {
      +        "description": "Bid targets",
      +        "properties": {
      +          "target_cpa": {
      +            "type": "number"
      +          },
      +          "target_impression_share_cpc_bid_ceiling": {
      +            "description": "Account currency",
      +            "type": "number"
      +          },
      +          "target_impression_share_location": {
      +            "enum": [
      +              "ANYWHERE_ON_PAGE",
      +              "TOP_OF_PAGE",
      +              "ABSOLUTE_TOP_OF_PAGE"
      +            ],
      +            "type": "string"
      +          },
      +          "target_impression_share_percentage": {
      +            "type": "number"
      +          },
      +          "target_roas": {
      +            "type": "number"
      +          },
      +          "target_spend_cpc_bid_ceiling": {
      +            "description": "Max CPC, account currency",
      +            "type": "number"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "bidding_strategy_goal_type": {
      +        "description": "AW App",
      +        "type": "string"
      +      },
      +      "brand_exclusions": {
      +        "description": "AW PMax: brand names to exclude",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "budget_optimize_switch": {
      +        "description": "TIK: campaign budget (CBO)",
      +        "enum": [
      +          "ON",
      +          "OFF"
      +        ],
      +        "type": "string"
      +      },
      +      "business_name": {
      +        "description": "AW PMax",
      +        "type": "string"
      +      },
      +      "buying_type": {
      +        "description": "FA",
      +        "type": "string"
      +      },
      +      "campaign_budget_optimization": {
      +        "description": "FA: true = campaign budget (CBO)",
      +        "type": "boolean"
      +      },
      +      "campaign_type": {
      +        "description": "AW/AC; TIK APP_PROMOTION (create only): REGULAR_CAMPAIGN, required when app_promotion_type=APP_PREREGISTRATION",
      +        "type": "string"
      +      },
      +      "channel_controls": {
      +        "description": "AW Demand Gen: channels to serve on",
      +        "properties": {
      +          "discover": {
      +            "type": "boolean"
      +          },
      +          "display": {
      +            "type": "boolean"
      +          },
      +          "gmail": {
      +            "type": "boolean"
      +          },
      +          "youtube": {
      +            "description": "All three youtube_* channels",
      +            "type": "boolean"
      +          },
      +          "youtube_in_feed": {
      +            "type": "boolean"
      +          },
      +          "youtube_in_stream": {
      +            "type": "boolean"
      +          },
      +          "youtube_shorts": {
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "conversion_actions": {
      +        "description": "AW App: conversion action ids",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "conversion_goals": {
      +        "description": "AW PMax: conversion goal categories",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "device_bid_adjustments": {
      +        "description": "AC: bid multipliers",
      +        "properties": {
      +          "DESKTOP": {
      +            "type": "number"
      +          },
      +          "MOBILE": {
      +            "type": "number"
      +          },
      +          "TABLET": {
      +            "type": "number"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "final_url_expansion": {
      +        "description": "AW: expand to other landing pages",
      +        "type": "boolean"
      +      },
      +      "geo_target_type": {
      +        "description": "AW: who the locations reach",
      +        "enum": [
      +          "PRESENCE",
      +          "PRESENCE_OR_INTEREST",
      +          "SEARCH_INTEREST"
      +        ],
      +        "type": "string"
      +      },
      +      "is_adset_budget_sharing_enabled": {
      +        "description": "FA ABO: ad sets share budget",
      +        "type": "boolean"
      +      },
      +      "logo_data": {
      +        "description": "AW PMax",
      +        "type": "string"
      +      },
      +      "logo_id": {
      +        "description": "AW PMax",
      +        "type": "string"
      +      },
      +      "logo_prompt": {
      +        "description": "AW PMax: only if the user declined review; else a creative_picker upload_ref in logo_url",
      +        "type": "string"
      +      },
      +      "logo_url": {
      +        "description": "AW PMax: brand logo URL",
      +        "type": "string"
      +      },
      +      "negative_keyword_lists": {
      +        "description": "AW: shared negative keyword lists",
      +        "items": {
      +          "properties": {
      +            "keywords": {
      +              "description": "Omit to attach an existing list by name",
      +              "items": {
      +                "properties": {
      +                  "match_type": {
      +                    "enum": [
      +                      "BROAD",
      +                      "PHRASE",
      +                      "EXACT"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "text": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "text"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "name": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "network_settings": {
      +        "description": "AW: which networks serve",
      +        "properties": {
      +          "display": {
      +            "type": "boolean"
      +          },
      +          "search": {
      +            "type": "boolean"
      +          },
      +          "search_partners": {
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "objective": {
      +        "description": "FA",
      +        "type": "string"
      +      },
      +      "objective_type": {
      +        "description": "TIK",
      +        "type": "string"
      +      },
      +      "objective_v2_type": {
      +        "description": "SCM",
      +        "type": "string"
      +      },
      +      "product_filter": {
      +        "description": "AW retail: products to serve",
      +        "properties": {
      +          "conditions": {
      +            "items": {
      +              "properties": {
      +                "dimension": {
      +                  "type": "string"
      +                },
      +                "values": {
      +                  "items": {
      +                    "type": "string"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "dimension",
      +                "values"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "mode": {
      +            "enum": [
      +              "include",
      +              "exclude"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "mode",
      +          "conditions"
      +        ],
      +        "type": "object"
      +      },
      +      "profile_id": {
      +        "description": "SCM: public profile UUID",
      +        "type": "string"
      +      },
      +      "shopping_setting": {
      +        "description": "AW retail",
      +        "properties": {
      +          "campaign_priority": {
      +            "type": "integer"
      +          },
      +          "enable_local": {
      +            "type": "boolean"
      +          },
      +          "feed_label": {
      +            "type": "string"
      +          },
      +          "merchant_id": {
      +            "description": "Merchant Center id",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "special_ad_categories": {
      +        "description": "FA",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "special_ad_category_country": {
      +        "description": "FA: ISO alpha-2 country codes",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "store_id": {
      +        "description": "AC Shopping",
      +        "type": "string"
      +      },
      +      "target_cpa": {
      +        "description": "AW",
      +        "type": "number"
      +      },
      +      "target_impression_share_cpc_bid_ceiling": {
      +        "description": "AW",
      +        "type": "number"
      +      },
      +      "target_impression_share_location": {
      +        "description": "AW",
      +        "enum": [
      +          "ANYWHERE_ON_PAGE",
      +          "TOP_OF_PAGE",
      +          "ABSOLUTE_TOP_OF_PAGE"
      +        ],
      +        "type": "string"
      +      },
      +      "target_impression_share_percentage": {
      +        "description": "AW",
      +        "type": "number"
      +      },
      +      "target_roas": {
      +        "description": "AW",
      +        "type": "number"
      +      },
      +      "target_spend_cpc_bid_ceiling": {
      +        "description": "AW",
      +        "type": "number"
      +      },
      +      "time_zone": {
      +        "description": "AC",
      +        "type": "string"
      +      },
      +      "youtube_only": {
      +        "description": "AW Demand Gen",
      +        "type": "boolean"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  3. Changed2 schema fields changed
    • changedInput schema / properties / ad_groups / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "properties": {
      -        "add_keywords": {
      -          "description": "Append positive keywords (duplicates skipped, status unchanged); targeting.keywords replaces instead.",
      -          "items": {
      -            "anyOf": [
      -              {
      -                "type": "string"
      -              },
      -              {
      -                "properties": {
      -                  "cpc_bid": {
      -                    "description": "Max CPC, account currency",
      -                    "type": "number"
      -                  },
      -                  "match_type": {
      -                    "enum": [
      -                      "BROAD",
      -                      "PHRASE",
      -                      "EXACT"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "status": {
      -                    "enum": [
      -                      "ENABLED",
      -                      "PAUSED"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "text": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "text"
      -                ],
      -                "type": "object"
      -              }
      -            ]
      -          },
      -          "type": "array"
      -        },
      -        "ads": {
      -          "description": "Ads to create (no id) or update (with id). Each new ad needs name + creative (headlines, descriptions, final_urls).",
      -          "items": {
      -            "description": "An ad. Omit id to create, include id to update.\n\nEditing a creative may replace the ad under a new id; its status carries over unless this call\nsets status. Send only the creative keys you change.",
      -            "properties": {
      -              "creative": {
      -                "description": "Ad creative. Text ads: headlines + descriptions + final_urls.\n\nNever put a creative_picker token in asset_url — it belongs in upload_ref.",
      -                "properties": {
      -                  "action_button": {
      -                    "description": "AW Video",
      -                    "type": "string"
      -                  },
      -                  "action_headline": {
      -                    "description": "AW Video",
      -                    "type": "string"
      -                  },
      -                  "ad_to_call_properties": {
      -                    "description": "SCM AD_TO_CALL",
      -                    "properties": {
      -                      "message": {
      -                        "description": "AD_TO_MESSAGE text",
      -                        "type": "string"
      -                      },
      -                      "phone_number_id": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "phone_number_id"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "ad_to_lens_properties": {
      -                    "description": "SCM AD_TO_LENS",
      -                    "properties": {
      -                      "lens_media_id": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "lens_media_id"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "ad_to_message_properties": {
      -                    "description": "SCM AD_TO_MESSAGE",
      -                    "properties": {
      -                      "message": {
      -                        "description": "AD_TO_MESSAGE text",
      -                        "type": "string"
      -                      },
      -                      "phone_number_id": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "phone_number_id"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "app_install_properties": {
      -                    "description": "SCM APP_INSTALL",
      -                    "properties": {
      -                      "android_app_url": {
      -                        "type": "string"
      -                      },
      -                      "app_name": {
      -                        "type": "string"
      -                      },
      -                      "icon_media_id": {
      -                        "type": "string"
      -                      },
      -                      "ios_app_id": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "type": "object"
      -                  },
      -                  "ar_extension_properties": {
      -                    "description": "SCM",
      -                    "properties": {
      -                      "lens_media_id": {
      -                        "type": "string"
      -                      },
      -                      "product_info_card_display_mode": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "lens_media_id"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "asset_data": {
      -                    "description": "Base64, small files only",
      -                    "type": "string"
      -                  },
      -                  "asset_height": {
      -                    "type": "number"
      -                  },
      -                  "asset_id": {
      -                    "type": "string"
      -                  },
      -                  "asset_prompt": {
      -                    "description": "AI image prompt; only if the user declined review, else a creative_picker upload_ref",
      -                    "type": "string"
      -                  },
      -                  "asset_type": {
      -                    "description": "Asset type hint: 'image' (default) or 'video'. Helps detect video ads when URL has no extension.",
      -                    "enum": [
      -                      "image",
      -                      "video"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "asset_url": {
      -                    "description": "Single asset: public URL",
      -                    "type": "string"
      -                  },
      -                  "asset_width": {
      -                    "type": "number"
      -                  },
      -                  "assets": {
      -                    "description": "Image/video assets, one source each (preference: asset_url, asset_id, upload_ref, asset_data, asset_prompt; asset_prompt only if the user explicitly declined to review images, otherwise generate in creative_picker and pass its upload_ref). No image yet? creative_picker browses/uploads/generates first. Single item = single image ad.",
      -                    "items": {
      -                      "properties": {
      -                        "asset_data": {
      -                          "description": "Base64, small files only",
      -                          "type": "string"
      -                        },
      -                        "asset_height": {
      -                          "type": "integer"
      -                        },
      -                        "asset_id": {
      -                          "description": "Hash/ID from campaign_and_resource_get assets",
      -                          "type": "string"
      -                        },
      -                        "asset_prompt": {
      -                          "description": "AI image prompt; only if the user explicitly declined to review images — otherwise generate in creative_picker and pass its upload_ref",
      -                          "type": "string"
      -                        },
      -                        "asset_type": {
      -                          "enum": [
      -                            "image",
      -                            "video"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "asset_url": {
      -                          "description": "Public URL; auto-uploaded to the ad account",
      -                          "type": "string"
      -                        },
      -                        "asset_width": {
      -                          "type": "integer"
      -                        },
      -                        "type": {
      -                          "description": "AW: 'logo' for a logo image",
      -                          "type": "string"
      -                        },
      -                        "upload_ref": {
      -                          "description": "From creative_picker",
      -                          "type": "string"
      -                        }
      -                      },
      -                      "type": "object"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "brand_name": {
      -                    "description": "SCM brand name",
      -                    "type": "string"
      -                  },
      -                  "business_name": {
      -                    "description": "Business name (AW display/PMax).",
      -                    "type": "string"
      -                  },
      -                  "call_to_action": {
      -                    "description": "CTA button (e.g. LEARN_MORE, SHOP_NOW, SIGN_UP, CONTACT_US, DOWNLOAD)",
      -                    "type": "string"
      -                  },
      -                  "carousel_cards": {
      -                    "description": "Carousel cards; use instead of assets.",
      -                    "items": {
      -                      "properties": {
      -                        "asset_id": {
      -                          "type": "string"
      -                        },
      -                        "asset_url": {
      -                          "type": "string"
      -                        },
      -                        "call_to_action": {
      -                          "type": "string"
      -                        },
      -                        "description": {
      -                          "type": "string"
      -                        },
      -                        "headline": {
      -                          "type": "string"
      -                        },
      -                        "link": {
      -                          "type": "string"
      -                        },
      -                        "upload_ref": {
      -                          "type": "string"
      -                        }
      -                      },
      -                      "type": "object"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "collection_properties": {
      -                    "description": "SCM COLLECTION",
      -                    "properties": {
      -                      "default_fallback_interaction_type": {
      -                        "type": "string"
      -                      },
      -                      "interaction_zone_id": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "interaction_zone_id",
      -                      "default_fallback_interaction_type"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "companion_banner_id": {
      -                    "description": "AW Video",
      -                    "type": "string"
      -                  },
      -                  "companion_banner_url": {
      -                    "description": "AW Video",
      -                    "type": "string"
      -                  },
      -                  "composite_properties": {
      -                    "description": "SCM COMPOSITE",
      -                    "properties": {
      -                      "creative_ids": {
      -                        "description": "SNAP_AD creative ids",
      -                        "items": {
      -                          "type": "string"
      -                        },
      -                        "type": "array"
      -                      }
      -                    },
      -                    "required": [
      -                      "creative_ids"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "deep_link_properties": {
      -                    "description": "SCM DEEP_LINK",
      -                    "properties": {
      -                      "android_app_url": {
      -                        "type": "string"
      -                      },
      -                      "app_name": {
      -                        "type": "string"
      -                      },
      -                      "deep_link_uri": {
      -                        "type": "string"
      -                      },
      -                      "fallback_type": {
      -                        "type": "string"
      -                      },
      -                      "icon_media_id": {
      -                        "type": "string"
      -                      },
      -                      "ios_app_id": {
      -                        "type": "string"
      -                      },
      -                      "web_view_fallback_url": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "type": "object"
      -                  },
      -                  "descriptions": {
      -                    "description": "Description texts. An item may be {text, pinned_field: DESCRIPTION_1..2 or null} (AW only).",
      -                    "items": {
      -                      "anyOf": [
      -                        {
      -                          "type": "string"
      -                        },
      -                        {
      -                          "properties": {
      -                            "pinned_field": {
      -                              "anyOf": [
      -                                {
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ],
      -                              "description": "null unpins"
      -                            },
      -                            "text": {
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "text"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      ]
      -                    },
      -                    "type": "array"
      -                  },
      -                  "file_id": {
      -                    "description": "CGPTA: image file id",
      -                    "type": "string"
      -                  },
      -                  "final_urls": {
      -                    "description": "Landing page URLs",
      -                    "items": {
      -                      "type": "string"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "headline": {
      -                    "description": "SCM: single headline (else headlines[0])",
      -                    "type": "string"
      -                  },
      -                  "headlines": {
      -                    "description": "Headline texts. An item may be {text, pinned_field: HEADLINE_1..3 or null to unpin} (AW only).",
      -                    "items": {
      -                      "anyOf": [
      -                        {
      -                          "type": "string"
      -                        },
      -                        {
      -                          "properties": {
      -                            "pinned_field": {
      -                              "anyOf": [
      -                                {
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ],
      -                              "description": "null unpins"
      -                            },
      -                            "text": {
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "text"
      -                          ],
      -                          "type": "object"
      -                        }
      -                      ]
      -                    },
      -                    "type": "array"
      -                  },
      -                  "image_ids": {
      -                    "description": "Video ad cover image id (one item).",
      -                    "items": {
      -                      "type": "string"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "lead_gen_form_id": {
      -                    "description": "FA lead form",
      -                    "type": "string"
      -                  },
      -                  "lead_generation_form_id": {
      -                    "description": "SCM LEAD_GENERATION",
      -                    "type": "string"
      -                  },
      -                  "link_descriptions": {
      -                    "description": "Link description (line under the headline); one per ad — more than one switches the ad set to Dynamic Creative, which cannot be undone.",
      -                    "items": {
      -                      "type": "string"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "logo_data": {
      -                    "description": "AW display/PMax: logo base64",
      -                    "type": "string"
      -                  },
      -                  "logo_id": {
      -                    "description": "AW display/PMax: logo asset ID",
      -                    "type": "string"
      -                  },
      -                  "logo_prompt": {
      -                    "description": "AW display/PMax: logo AI prompt (only if user declined review; else creative_picker, then its upload_ref in logo_url)",
      -                    "type": "string"
      -                  },
      -                  "logo_url": {
      -                    "description": "AW display/PMax: logo URL",
      -                    "type": "string"
      -                  },
      -                  "long_headline": {
      -                    "description": "AW display: single long headline (use long_headlines for PMax)",
      -                    "type": "string"
      -                  },
      -                  "long_headlines": {
      -                    "description": "Long headlines (list; preferred over long_headline).",
      -                    "items": {
      -                      "type": "string"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "object_story_id": {
      -                    "description": "Existing post to boost, '{page_id}_{post_id}' (resource_type posts). FA reads return it.",
      -                    "type": "string"
      -                  },
      -                  "page_welcome_message": {
      -                    "description": "FA messaging",
      -                    "type": "string"
      -                  },
      -                  "path1": {
      -                    "description": "Display path 1 (max 15 chars, no \"/\"). Omit keeps, \"\" removes.",
      -                    "maxLength": 15,
      -                    "type": "string"
      -                  },
      -                  "path2": {
      -                    "description": "Display path 2 (needs path1; max 15, no \"/\"). Omit keeps, \"\" removes.",
      -                    "maxLength": 15,
      -                    "type": "string"
      -                  },
      -                  "preview_creative_id": {
      -                    "description": "SCM COMPOSITE (Story): preview creative",
      -                    "type": "string"
      -                  },
      -                  "reminder_properties": {
      -                    "description": "SCM REMINDER",
      -                    "properties": {
      -                      "event_detail_id": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "event_detail_id"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "shareable": {
      -                    "description": "SCM, default true",
      -                    "type": "boolean"
      -                  },
      -                  "square_asset_data": {
      -                    "description": "AW display: square image base64",
      -                    "type": "string"
      -                  },
      -                  "square_asset_id": {
      -                    "description": "AW display: square asset ID",
      -                    "type": "string"
      -                  },
      -                  "square_asset_prompt": {
      -                    "description": "AW display: square image AI prompt (only if user declined review; else creative_picker, then its upload_ref in square_asset_url)",
      -                    "type": "string"
      -                  },
      -                  "square_asset_url": {
      -                    "description": "AW display: square image URL",
      -                    "type": "string"
      -                  },
      -                  "thumbnail_url": {
      -                    "description": "FA video thumbnail",
      -                    "type": "string"
      -                  },
      -                  "top_snap_media_id": {
      -                    "description": "SCM",
      -                    "type": "string"
      -                  },
      -                  "type": {
      -                    "description": "SCM ad type",
      -                    "type": "string"
      -                  },
      -                  "upload_ref": {
      -                    "description": "From creative_picker",
      -                    "type": "string"
      -                  },
      -                  "url_tags": {
      -                    "description": "URL tracking parameters appended to ad links (AW: Final URL suffix)",
      -                    "type": "string"
      -                  },
      -                  "video_asset_id": {
      -                    "description": "AW video ad: the video, as reads return it",
      -                    "type": "string"
      -                  },
      -                  "video_asset_ids": {
      -                    "description": "AW",
      -                    "items": {
      -                      "type": "string"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "video_title": {
      -                    "description": "FA: name of an uploaded video",
      -                    "type": "string"
      -                  },
      -                  "web_view_properties": {
      -                    "description": "SCM",
      -                    "properties": {
      -                      "url": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "url"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "whatsapp_number": {
      -                    "description": "FA WhatsApp ads: the number the button opens. Omit to keep the current one; \"\" = the page's number",
      -                    "type": "string"
      -                  }
      -                },
      -                "type": "object"
      -              },
      -              "id": {
      -                "description": "Ad ID — omit for create, include for update",
      -                "type": "string"
      -              },
      -              "name": {
      -                "description": "Ad name (required for create, optional for update)",
      -                "type": "string"
      -              },
      -              "platform_settings": {
      -                "description": "Platform-specific ad settings. Set ad status via the top-level status field, not here.",
      -                "properties": {
      -                  "ad_format": {
      -                    "description": "TIK",
      -                    "type": "string"
      -                  },
      -                  "ad_type": {
      -                    "description": "AW: same as type",
      -                    "type": "string"
      -                  },
      -                  "call_to_action": {
      -                    "description": "TIK",
      -                    "type": "string"
      -                  },
      -                  "call_to_action_id": {
      -                    "description": "TIK",
      -                    "type": "string"
      -                  },
      -                  "dsa_beneficiary": {
      -                    "description": "FA: send on the ad set's platform_settings instead",
      -                    "type": "string"
      -                  },
      -                  "dsa_payor": {
      -                    "description": "FA: send on the ad set's platform_settings instead",
      -                    "type": "string"
      -                  },
      -                  "identity_authorized_bc_id": {
      -                    "description": "TIK Business Center",
      -                    "type": "string"
      -                  },
      -                  "identity_id": {
      -                    "description": "TIK Spark Ad: account owning the post",
      -                    "type": "string"
      -                  },
      -                  "identity_type": {
      -                    "description": "TIK",
      -                    "type": "string"
      -                  },
      -                  "music_id": {
      -                    "description": "TIK",
      -                    "type": "string"
      -                  },
      -                  "page_id": {
      -                    "description": "FA Page",
      -                    "type": "string"
      -                  },
      -                  "pixel_id": {
      -                    "description": "FA: adds one pixel's tracking spec",
      -                    "type": "string"
      -                  },
      -                  "profile_id": {
      -                    "description": "SCM: public profile UUID",
      -                    "type": "string"
      -                  },
      -                  "tiktok_item_id": {
      -                    "description": "TIK Spark Ad: the post",
      -                    "type": "string"
      -                  },
      -                  "tracking_pixel_id": {
      -                    "description": "TIK: pixel tracking the ad",
      -                    "type": "string"
      -                  },
      -                  "tracking_specs": {
      -                    "description": "FA: Meta pixel tracking specs",
      -                    "items": {
      -                      "additionalProperties": {
      -                        "items": {
      -                          "type": "string"
      -                        },
      -                        "type": "array"
      -                      },
      -                      "type": "object"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "type": {
      -                    "description": "AW ad type",
      -                    "type": "string"
      -                  }
      -                },
      -                "type": "object"
      -              },
      -              "status": {
      -                "description": "ENABLED, PAUSED, or REMOVED (platform wording normalized). Sets the ad's status; if omitted the platform's own default applies, which on some platforms is live — set PAUSED explicitly if the ad must not serve. If a creative edit replaces the ad, status carries over unless set here. Set ENABLED only on explicit user approval — it can start spend.",
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          "type": "array"
      -        },
      -        "budget_amount": {
      -          "description": "Budget in account currency",
      -          "type": "number"
      -        },
      -        "budget_type": {
      -          "description": "DAILY or LIFETIME",
      -          "type": "string"
      -        },
      -        "extensions": {
      -          "description": "Image assets for this ad group only. Other extension types are ignored, with a note naming them.",
      -          "properties": {
      -            "images": {
      -              "description": "Replaces the ad group's images; [] removes them; omit keeps them.",
      -              "items": {
      -                "description": "One of url, data (base64), id (existing asset) or upload_ref (from creative_picker).",
      -                "properties": {
      -                  "data": {
      -                    "type": "string"
      -                  },
      -                  "id": {
      -                    "type": "string"
      -                  },
      -                  "upload_ref": {
      -                    "type": "string"
      -                  },
      -                  "url": {
      -                    "type": "string"
      -                  }
      -                },
      -                "type": "object"
      -              },
      -              "type": "array"
      -            }
      -          },
      -          "type": "object"
      -        },
      -        "id": {
      -          "description": "Ad group/ad set ID — omit to create new, include to update existing",
      -          "type": "string"
      -        },
      -        "name": {
      -          "description": "Ad group name (required for create)",
      -          "type": "string"
      -        },
      -        "platform_settings": {
      -          "description": "Platform-specific ad group / ad set settings; each key names its platforms. On update send only the keys you change.",
      -          "properties": {
      -            "ad_schedule": {
      -              "description": "FA dayparting",
      -              "items": {
      -                "properties": {
      -                  "days": {
      -                    "description": "0 = Sunday",
      -                    "items": {
      -                      "type": "integer"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "end_minute": {
      -                    "type": "integer"
      -                  },
      -                  "start_minute": {
      -                    "type": "integer"
      -                  },
      -                  "timezone_type": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "start_minute",
      -                  "end_minute",
      -                  "days"
      -                ],
      -                "type": "object"
      -              },
      -              "type": "array"
      -            },
      -            "attribution_spec": {
      -              "description": "FA",
      -              "items": {
      -                "properties": {
      -                  "event_type": {
      -                    "type": "string"
      -                  },
      -                  "window_days": {
      -                    "type": "integer"
      -                  }
      -                },
      -                "required": [
      -                  "event_type",
      -                  "window_days"
      -                ],
      -                "type": "object"
      -              },
      -              "type": "array"
      -            },
      -            "audience_signals": {
      -              "description": "AW PMax: Audience ids or resource names",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "bid_amount": {
      -              "description": "FA legacy: Meta minor units (250 = 2.50); prefer bid_price",
      -              "type": "integer"
      -            },
      -            "bid_constraints": {
      -              "description": "FA",
      -              "properties": {
      -                "roas_average_floor": {
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "roas_average_floor"
      -              ],
      -              "type": "object"
      -            },
      -            "bid_micro": {
      -              "description": "SCM: micro-currency",
      -              "type": "integer"
      -            },
      -            "bid_price": {
      -              "description": "FA/TIK: account currency",
      -              "type": "number"
      -            },
      -            "bid_strategy": {
      -              "description": "FA ABO/SCM ad set bid strategy",
      -              "type": "string"
      -            },
      -            "bid_type": {
      -              "description": "TIK",
      -              "enum": [
      -                "BID_TYPE_NO_BID",
      -                "BID_TYPE_CUSTOM",
      -                "BID_TYPE_MAX_CONVERSION"
      -              ],
      -              "type": "string"
      -            },
      -            "billing_event": {
      -              "description": "FA/TIK/LIA/SCM/CGPTA",
      -              "type": "string"
      -            },
      -            "budget_amount": {
      -              "description": "SCM: account currency",
      -              "type": "number"
      -            },
      -            "budget_type": {
      -              "description": "SCM",
      -              "enum": [
      -                "DAILY",
      -                "LIFETIME"
      -              ],
      -              "type": "string"
      -            },
      -            "campaign_type": {
      -              "description": "LIA",
      -              "type": "string"
      -            },
      -            "context_hints": {
      -              "description": "CGPTA: topic keywords",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "conversion_bid_price": {
      -              "description": "TIK, account currency",
      -              "type": "number"
      -            },
      -            "conversion_window": {
      -              "description": "SCM",
      -              "type": "string"
      -            },
      -            "cost_type": {
      -              "description": "LIA",
      -              "enum": [
      -                "CPM",
      -                "CPC"
      -              ],
      -              "type": "string"
      -            },
      -            "cpc_bid": {
      -              "description": "AW/AC/CGPTA",
      -              "type": "number"
      -            },
      -            "custom_event_type": {
      -              "description": "FA: with pixel_id",
      -              "type": "string"
      -            },
      -            "daily_budget": {
      -              "description": "LIA. FA: minor units; prefer budget_amount",
      -              "type": "number"
      -            },
      -            "daily_min_spend_target": {
      -              "description": "FA legacy, minor units: prefer daily_spend_min",
      -              "type": "number"
      -            },
      -            "daily_spend_cap": {
      -              "description": "FA legacy, minor units: prefer daily_spend_max",
      -              "type": "number"
      -            },
      -            "daily_spend_max": {
      -              "description": "FA ad set spend limit, account currency",
      -              "type": "number"
      -            },
      -            "daily_spend_min": {
      -              "description": "FA ad set spend limit, account currency",
      -              "type": "number"
      -            },
      -            "destination_type": {
      -              "description": "FA",
      -              "type": "string"
      -            },
      -            "dsa_beneficiary": {
      -              "description": "FA EU transparency: legal entity promoted",
      -              "type": "string"
      -            },
      -            "dsa_payor": {
      -              "description": "FA EU transparency: legal entity paying",
      -              "type": "string"
      -            },
      -            "end_date": {
      -              "description": "This ad group's own flight end",
      -              "type": "string"
      -            },
      -            "end_time": {
      -              "description": "FA/SCM/TIK: flight end date-time",
      -              "type": "string"
      -            },
      -            "frequency": {
      -              "description": "TIK: max impressions per user",
      -              "type": "integer"
      -            },
      -            "frequency_control_specs": {
      -              "description": "FA",
      -              "items": {
      -                "properties": {
      -                  "event": {
      -                    "type": "string"
      -                  },
      -                  "interval_days": {
      -                    "type": "integer"
      -                  },
      -                  "max_frequency": {
      -                    "type": "integer"
      -                  }
      -                },
      -                "required": [
      -                  "event",
      -                  "interval_days",
      -                  "max_frequency"
      -                ],
      -                "type": "object"
      -              },
      -              "type": "array"
      -            },
      -            "frequency_schedule": {
      -              "description": "TIK: days",
      -              "type": "integer"
      -            },
      -            "identity_id": {
      -              "description": "TIK, with identity_type",
      -              "type": "string"
      -            },
      -            "identity_type": {
      -              "description": "TIK",
      -              "type": "string"
      -            },
      -            "is_dynamic_creative": {
      -              "description": "FA: true is permanent on a published ad set",
      -              "type": "boolean"
      -            },
      -            "lifetime_budget": {
      -              "description": "LIA/TIK. FA legacy, minor units: prefer budget_amount + budget_type",
      -              "type": "number"
      -            },
      -            "lifetime_min_spend_target": {
      -              "description": "FA legacy, minor units: prefer lifetime_spend_min",
      -              "type": "number"
      -            },
      -            "lifetime_spend_cap": {
      -              "description": "FA legacy, minor units: prefer lifetime_spend_max",
      -              "type": "number"
      -            },
      -            "lifetime_spend_max": {
      -              "description": "FA ad set spend limit, account currency",
      -              "type": "number"
      -            },
      -            "lifetime_spend_min": {
      -              "description": "FA ad set spend limit, account currency",
      -              "type": "number"
      -            },
      -            "location_ids": {
      -              "description": "TIK",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "max_bid_micros": {
      -              "description": "CGPTA: micro-currency",
      -              "type": "integer"
      -            },
      -            "objective_type": {
      -              "description": "LIA",
      -              "type": "string"
      -            },
      -            "optimization_event": {
      -              "description": "TIK",
      -              "type": "string"
      -            },
      -            "optimization_goal": {
      -              "description": "FA/TIK/SCM",
      -              "type": "string"
      -            },
      -            "optimization_sub_event": {
      -              "description": "FA",
      -              "type": "string"
      -            },
      -            "pacing": {
      -              "description": "TIK",
      -              "enum": [
      -                "PACING_MODE_SMOOTH",
      -                "PACING_MODE_FAST"
      -              ],
      -              "type": "string"
      -            },
      -            "pacing_type": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "items": {
      -                    "type": "string"
      -                  },
      -                  "type": "array"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ],
      -              "description": "SCM/FA"
      -            },
      -            "page_id": {
      -              "description": "FA",
      -              "type": "string"
      -            },
      -            "pixel_event": {
      -              "description": "TIK: conversion event",
      -              "type": "string"
      -            },
      -            "pixel_id": {
      -              "description": "Pixel to optimize for",
      -              "type": "string"
      -            },
      -            "placement_config": {
      -              "description": "SCM",
      -              "enum": [
      -                "AUTOMATIC",
      -                "CUSTOM"
      -              ],
      -              "type": "string"
      -            },
      -            "placement_type": {
      -              "description": "TIK",
      -              "enum": [
      -                "PLACEMENT_TYPE_AUTOMATIC",
      -                "PLACEMENT_TYPE_NORMAL"
      -              ],
      -              "type": "string"
      -            },
      -            "placements": {
      -              "description": "TIK",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "product_filter": {
      -              "description": "AW retail: this asset group only",
      -              "properties": {
      -                "conditions": {
      -                  "items": {
      -                    "properties": {
      -                      "dimension": {
      -                        "type": "string"
      -                      },
      -                      "values": {
      -                        "items": {
      -                          "type": "string"
      -                        },
      -                        "type": "array"
      -                      }
      -                    },
      -                    "required": [
      -                      "dimension",
      -                      "values"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                },
      -                "mode": {
      -                  "enum": [
      -                    "include",
      -                    "exclude"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "mode",
      -                "conditions"
      -              ],
      -              "type": "object"
      -            },
      -            "promoted_object": {
      -              "description": "FA",
      -              "properties": {
      -                "custom_conversion_id": {
      -                  "type": "string"
      -                },
      -                "custom_event_type": {
      -                  "type": "string"
      -                },
      -                "page_id": {
      -                  "type": "string"
      -                },
      -                "pixel_id": {
      -                  "type": "string"
      -                }
      -              },
      -              "type": "object"
      -            },
      -            "promotion_type": {
      -              "description": "TIK",
      -              "type": "string"
      -            },
      -            "regional_regulated_categories": {
      -              "description": "FA",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "regional_regulation_identities": {
      -              "description": "FA: regional regulation ids",
      -              "properties": {
      -                "singapore_universal_beneficiary": {
      -                  "type": "string"
      -                },
      -                "singapore_universal_payer": {
      -                  "type": "string"
      -                },
      -                "taiwan_universal_beneficiary": {
      -                  "type": "string"
      -                },
      -                "taiwan_universal_payer": {
      -                  "type": "string"
      -                },
      -                "universal_beneficiary": {
      -                  "type": "string"
      -                },
      -                "universal_payer": {
      -                  "type": "string"
      -                }
      -              },
      -              "type": "object"
      -            },
      -            "roas_average_floor": {
      -              "description": "FA",
      -              "type": "number"
      -            },
      -            "schedule_end_time": {
      -              "description": "TIK",
      -              "type": "string"
      -            },
      -            "schedule_start_time": {
      -              "description": "TIK",
      -              "type": "string"
      -            },
      -            "schedule_type": {
      -              "description": "TIK",
      -              "enum": [
      -                "SCHEDULE_START_END",
      -                "SCHEDULE_FROM_NOW"
      -              ],
      -              "type": "string"
      -            },
      -            "search_themes": {
      -              "description": "AW PMax: optimization hints",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "start_date": {
      -              "description": "This ad group's own flight start",
      -              "type": "string"
      -            },
      -            "start_time": {
      -              "description": "FA/SCM/TIK: flight start date-time",
      -              "type": "string"
      -            },
      -            "tiktok_item_id": {
      -              "description": "TIK",
      -              "type": "string"
      -            },
      -            "type": {
      -              "description": "AW/AC ad group type",
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        },
      -        "remove_keywords": {
      -          "description": "Update only: remove positive keywords.",
      -          "items": {
      -            "anyOf": [
      -              {
      -                "type": "string"
      -              },
      -              {
      -                "properties": {
      -                  "match_type": {
      -                    "enum": [
      -                      "BROAD",
      -                      "PHRASE",
      -                      "EXACT"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "text": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "text"
      -                ],
      -                "type": "object"
      -              }
      -            ]
      -          },
      -          "type": "array"
      -        },
      -        "status": {
      -          "description": "ENABLED, PAUSED or REMOVED (platform wording normalized). Some platforms force PAUSED on create: re-read, update if it differs. ENABLED only on explicit user approval. Campaign, ad group (PMax: asset group) and ad each have their own status.",
      -          "type": "string"
      -        },
      -        "targeting": {
      -          "description": "Ad group targeting; on create, overrides campaign-level targeting. On update: omitted fields are kept, sent ones replaced, [] clears one. An unsupported targeting field is refused or reported in the result, not silently applied.",
      -          "properties": {
      -            "advantage_audience": {
      -              "description": "Advantage+ Audience (AI audience expansion) on/off",
      -              "type": "boolean"
      -            },
      -            "age_max": {
      -              "description": "Maximum age",
      -              "type": "integer"
      -            },
      -            "age_min": {
      -              "description": "Minimum age",
      -              "type": "integer"
      -            },
      -            "age_suggestion": {
      -              "description": "[min, max] preferred ages (soft, with advantage_audience); [] clears.",
      -              "items": {
      -                "type": "integer"
      -              },
      -              "maxItems": 2,
      -              "type": "array"
      -            },
      -            "custom_audiences": {
      -              "description": "Custom audiences",
      -              "items": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "properties": {
      -                      "id": {
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id"
      -                    ],
      -                    "type": "object"
      -                  }
      -                ]
      -              },
      -              "type": "array"
      -            },
      -            "devices": {
      -              "description": "Devices (values per platform)",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "excluded_custom_audiences": {
      -              "description": "Excluded audiences",
      -              "items": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "properties": {
      -                      "id": {
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id"
      -                    ],
      -                    "type": "object"
      -                  }
      -                ]
      -              },
      -              "type": "array"
      -            },
      -            "excluded_location_details": {
      -              "description": "Places to exclude, same shape as location_details.",
      -              "items": {
      -                "properties": {
      -                  "country": {
      -                    "type": "string"
      -                  },
      -                  "distance_unit": {
      -                    "enum": [
      -                      "mile",
      -                      "kilometer"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "key": {
      -                    "type": "string"
      -                  },
      -                  "latitude": {
      -                    "type": "number"
      -                  },
      -                  "longitude": {
      -                    "type": "number"
      -                  },
      -                  "name": {
      -                    "type": "string"
      -                  },
      -                  "radius": {
      -                    "type": "number"
      -                  },
      -                  "type": {
      -                    "type": "string"
      -                  }
      -                },
      -                "type": "object"
      -              },
      -              "type": "array"
      -            },
      -            "excluded_locations": {
      -              "description": "Country codes to exclude (other places: excluded_location_details).",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "expand_targeting": {
      -              "description": "Legacy alias for advantage_audience",
      -              "type": "boolean"
      -            },
      -            "genders": {
      -              "description": "MALE, FEMALE, UNDETERMINED",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "interests": {
      -              "description": "Interest targeting",
      -              "items": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "properties": {
      -                      "id": {
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id"
      -                    ],
      -                    "type": "object"
      -                  }
      -                ]
      -              },
      -              "type": "array"
      -            },
      -            "keywords": {
      -              "description": "Positive keywords; replaces the set, so send all of them (use add_keywords to append). status changes a keyword in place; one without status keeps its own.",
      -              "items": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "properties": {
      -                      "cpc_bid": {
      -                        "description": "Max CPC, account currency",
      -                        "type": "number"
      -                      },
      -                      "match_type": {
      -                        "enum": [
      -                          "BROAD",
      -                          "PHRASE",
      -                          "EXACT"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      "status": {
      -                        "enum": [
      -                          "ENABLED",
      -                          "PAUSED"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      "text": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "text"
      -                    ],
      -                    "type": "object"
      -                  }
      -                ]
      -              },
      -              "type": "array"
      -            },
      -            "languages": {
      -              "description": "Language codes (e.g. 'en')",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "location_details": {
      -              "description": "Sub-country targeting entries; key from targeting_search.",
      -              "items": {
      -                "description": "Sub-country location or proximity targeting entry.\n\nCity/region: {type, key, name, country} — use targeting_search with type=city to find key.\nProximity: {type: custom_location, latitude, longitude, radius, distance_unit: mile|kilometer}.",
      -                "properties": {
      -                  "country": {
      -                    "description": "Country code",
      -                    "type": "string"
      -                  },
      -                  "distance_unit": {
      -                    "enum": [
      -                      "mile",
      -                      "kilometer"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "key": {
      -                    "description": "Geo identifier (use targeting_search to find). Set empty for custom_location proximity",
      -                    "type": "string"
      -                  },
      -                  "latitude": {
      -                    "type": "number"
      -                  },
      -                  "longitude": {
      -                    "type": "number"
      -                  },
      -                  "name": {
      -                    "description": "Human-readable name",
      -                    "type": "string"
      -                  },
      -                  "radius": {
      -                    "type": "number"
      -                  },
      -                  "type": {
      -                    "description": "city, region, metro, zip, geo_market, custom_location (proximity) or geo_target (exclusions)",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "type",
      -                  "key"
      -                ],
      -                "type": "object"
      -              },
      -              "type": "array"
      -            },
      -            "locations": {
      -              "description": "Country codes or platform location ids; sub-country places go in location_details where the platform supports it (see its capability guide).",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "lookalike_audiences": {
      -              "description": "Lookalike audiences",
      -              "items": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "properties": {
      -                      "id": {
      -                        "type": "string"
      -                      },
      -                      "name": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "id"
      -                    ],
      -                    "type": "object"
      -                  }
      -                ]
      -              },
      -              "type": "array"
      -            },
      -            "negative_keywords": {
      -              "description": "Negative keywords. Do NOT put in keywords.",
      -              "items": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "properties": {
      -                      "match_type": {
      -                        "enum": [
      -                          "BROAD",
      -                          "PHRASE",
      -                          "EXACT"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      "text": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "text"
      -                    ],
      -                    "type": "object"
      -                  }
      -                ]
      -              },
      -              "type": "array"
      -            },
      -            "placements": {
      -              "description": "Ad placements (e.g. feed, stories, reels)",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "platforms": {
      -              "description": "Platforms/OS to target (values per platform)",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "properties": {
      +        "add_keywords": {
      +          "description": "Append positive keywords (duplicates skipped, status unchanged); targeting.keywords replaces instead.",
      +          "items": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "properties": {
      +                  "cpc_bid": {
      +                    "description": "Max CPC, account currency",
      +                    "type": "number"
      +                  },
      +                  "match_type": {
      +                    "enum": [
      +                      "BROAD",
      +                      "PHRASE",
      +                      "EXACT"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "status": {
      +                    "enum": [
      +                      "ENABLED",
      +                      "PAUSED"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "text": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "text"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          "type": "array"
      +        },
      +        "ads": {
      +          "description": "Ads to create (no id) or update (with id). Each new ad needs name + creative (headlines, descriptions, final_urls).",
      +          "items": {
      +            "description": "An ad. Omit id to create, include id to update.\n\nEditing a creative may replace the ad under a new id; its status carries over unless this call\nsets status. Send only the creative keys you change.",
      +            "properties": {
      +              "creative": {
      +                "description": "Ad creative. Text ads: headlines + descriptions + final_urls.\n\nNever put a creative_picker token in asset_url — it belongs in upload_ref.",
      +                "properties": {
      +                  "action_button": {
      +                    "description": "AW Video",
      +                    "type": "string"
      +                  },
      +                  "action_headline": {
      +                    "description": "AW Video",
      +                    "type": "string"
      +                  },
      +                  "ad_to_call_properties": {
      +                    "description": "SCM AD_TO_CALL",
      +                    "properties": {
      +                      "message": {
      +                        "description": "AD_TO_MESSAGE text",
      +                        "type": "string"
      +                      },
      +                      "phone_number_id": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "phone_number_id"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "ad_to_lens_properties": {
      +                    "description": "SCM AD_TO_LENS",
      +                    "properties": {
      +                      "lens_media_id": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "lens_media_id"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "ad_to_message_properties": {
      +                    "description": "SCM AD_TO_MESSAGE",
      +                    "properties": {
      +                      "message": {
      +                        "description": "AD_TO_MESSAGE text",
      +                        "type": "string"
      +                      },
      +                      "phone_number_id": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "phone_number_id"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "app_install_properties": {
      +                    "description": "SCM APP_INSTALL",
      +                    "properties": {
      +                      "android_app_url": {
      +                        "type": "string"
      +                      },
      +                      "app_name": {
      +                        "type": "string"
      +                      },
      +                      "icon_media_id": {
      +                        "type": "string"
      +                      },
      +                      "ios_app_id": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "ar_extension_properties": {
      +                    "description": "SCM",
      +                    "properties": {
      +                      "lens_media_id": {
      +                        "type": "string"
      +                      },
      +                      "product_info_card_display_mode": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "lens_media_id"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "asset_data": {
      +                    "description": "Base64, small files only",
      +                    "type": "string"
      +                  },
      +                  "asset_height": {
      +                    "type": "number"
      +                  },
      +                  "asset_id": {
      +                    "type": "string"
      +                  },
      +                  "asset_prompt": {
      +                    "description": "AI image prompt; only if the user declined review, else a creative_picker upload_ref",
      +                    "type": "string"
      +                  },
      +                  "asset_type": {
      +                    "description": "Asset type hint: 'image' (default) or 'video'. Helps detect video ads when URL has no extension.",
      +                    "enum": [
      +                      "image",
      +                      "video"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "asset_url": {
      +                    "description": "Single asset: public URL",
      +                    "type": "string"
      +                  },
      +                  "asset_width": {
      +                    "type": "number"
      +                  },
      +                  "assets": {
      +                    "description": "Image/video assets, one source each (preference: asset_url, asset_id, upload_ref, asset_data, asset_prompt; asset_prompt only if the user explicitly declined to review images, otherwise generate in creative_picker and pass its upload_ref). No image yet? creative_picker browses/uploads/generates first. Single item = single image ad. FA: several items need platform_settings.is_dynamic_creative true; for a creative per placement use placement_assets.",
      +                    "items": {
      +                      "properties": {
      +                        "asset_data": {
      +                          "description": "Base64, small files only",
      +                          "type": "string"
      +                        },
      +                        "asset_height": {
      +                          "type": "integer"
      +                        },
      +                        "asset_id": {
      +                          "description": "Hash/ID from campaign_and_resource_get assets",
      +                          "type": "string"
      +                        },
      +                        "asset_prompt": {
      +                          "description": "AI image prompt; only if the user explicitly declined to review images — otherwise generate in creative_picker and pass its upload_ref",
      +                          "type": "string"
      +                        },
      +                        "asset_type": {
      +                          "enum": [
      +                            "image",
      +                            "video"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "asset_url": {
      +                          "description": "Public URL; auto-uploaded to the ad account",
      +                          "type": "string"
      +                        },
      +                        "asset_width": {
      +                          "type": "integer"
      +                        },
      +                        "type": {
      +                          "description": "AW: 'logo' for a logo image",
      +                          "type": "string"
      +                        },
      +                        "upload_ref": {
      +                          "description": "From creative_picker",
      +                          "type": "string"
      +                        }
      +                      },
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "brand_name": {
      +                    "description": "SCM brand name",
      +                    "type": "string"
      +                  },
      +                  "business_name": {
      +                    "description": "Business name (AW display/PMax).",
      +                    "type": "string"
      +                  },
      +                  "call_to_action": {
      +                    "description": "CTA button (e.g. LEARN_MORE, SHOP_NOW, SIGN_UP, CONTACT_US, DOWNLOAD)",
      +                    "type": "string"
      +                  },
      +                  "carousel_cards": {
      +                    "description": "Carousel cards; use instead of assets.",
      +                    "items": {
      +                      "properties": {
      +                        "asset_id": {
      +                          "type": "string"
      +                        },
      +                        "asset_url": {
      +                          "type": "string"
      +                        },
      +                        "call_to_action": {
      +                          "type": "string"
      +                        },
      +                        "description": {
      +                          "type": "string"
      +                        },
      +                        "headline": {
      +                          "type": "string"
      +                        },
      +                        "link": {
      +                          "type": "string"
      +                        },
      +                        "upload_ref": {
      +                          "type": "string"
      +                        }
      +                      },
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "collection_properties": {
      +                    "description": "SCM COLLECTION",
      +                    "properties": {
      +                      "default_fallback_interaction_type": {
      +                        "type": "string"
      +                      },
      +                      "interaction_zone_id": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "interaction_zone_id",
      +                      "default_fallback_interaction_type"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "companion_banner_id": {
      +                    "description": "AW Video",
      +                    "type": "string"
      +                  },
      +                  "companion_banner_url": {
      +                    "description": "AW Video",
      +                    "type": "string"
      +                  },
      +                  "composite_properties": {
      +                    "description": "SCM COMPOSITE",
      +                    "properties": {
      +                      "creative_ids": {
      +                        "description": "SNAP_AD creative ids",
      +                        "items": {
      +                          "type": "string"
      +                        },
      +                        "type": "array"
      +                      }
      +                    },
      +                    "required": [
      +                      "creative_ids"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "deep_link_properties": {
      +                    "description": "SCM DEEP_LINK",
      +                    "properties": {
      +                      "android_app_url": {
      +                        "type": "string"
      +                      },
      +                      "app_name": {
      +                        "type": "string"
      +                      },
      +                      "deep_link_uri": {
      +                        "type": "string"
      +                      },
      +                      "fallback_type": {
      +                        "type": "string"
      +                      },
      +                      "icon_media_id": {
      +                        "type": "string"
      +                      },
      +                      "ios_app_id": {
      +                        "type": "string"
      +                      },
      +                      "web_view_fallback_url": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "descriptions": {
      +                    "description": "Description texts. An item may be {text, pinned_field: DESCRIPTION_1..2 or null} (AW only).",
      +                    "items": {
      +                      "anyOf": [
      +                        {
      +                          "type": "string"
      +                        },
      +                        {
      +                          "properties": {
      +                            "pinned_field": {
      +                              "anyOf": [
      +                                {
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ],
      +                              "description": "null unpins"
      +                            },
      +                            "text": {
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "text"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      ]
      +                    },
      +                    "type": "array"
      +                  },
      +                  "file_id": {
      +                    "description": "CGPTA: image file id",
      +                    "type": "string"
      +                  },
      +                  "final_urls": {
      +                    "description": "Landing page URLs",
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "headline": {
      +                    "description": "SCM: single headline (else headlines[0])",
      +                    "type": "string"
      +                  },
      +                  "headlines": {
      +                    "description": "Headline texts. An item may be {text, pinned_field: HEADLINE_1..3 or null to unpin} (AW only).",
      +                    "items": {
      +                      "anyOf": [
      +                        {
      +                          "type": "string"
      +                        },
      +                        {
      +                          "properties": {
      +                            "pinned_field": {
      +                              "anyOf": [
      +                                {
      +                                  "type": "string"
      +                                },
      +                                {
      +                                  "type": "null"
      +                                }
      +                              ],
      +                              "description": "null unpins"
      +                            },
      +                            "text": {
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "text"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      ]
      +                    },
      +                    "type": "array"
      +                  },
      +                  "image_ids": {
      +                    "description": "Video ad cover image id (one item).",
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "lead_gen_form_id": {
      +                    "description": "FA lead form",
      +                    "type": "string"
      +                  },
      +                  "lead_generation_form_id": {
      +                    "description": "SCM LEAD_GENERATION",
      +                    "type": "string"
      +                  },
      +                  "link_descriptions": {
      +                    "description": "Link description (line under the headline); one per ad — more than one needs the ad set's platform_settings.is_dynamic_creative true, which cannot be undone.",
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "logo_data": {
      +                    "description": "AW display/PMax: logo base64",
      +                    "type": "string"
      +                  },
      +                  "logo_id": {
      +                    "description": "AW display/PMax: logo asset ID",
      +                    "type": "string"
      +                  },
      +                  "logo_prompt": {
      +                    "description": "AW display/PMax: logo AI prompt (only if user declined review; else creative_picker, then its upload_ref in logo_url)",
      +                    "type": "string"
      +                  },
      +                  "logo_url": {
      +                    "description": "AW display/PMax: logo URL",
      +                    "type": "string"
      +                  },
      +                  "long_headline": {
      +                    "description": "AW display: single long headline (use long_headlines for PMax)",
      +                    "type": "string"
      +                  },
      +                  "long_headlines": {
      +                    "description": "Long headlines (list; preferred over long_headline).",
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "object_story_id": {
      +                    "description": "Existing post to boost, '{page_id}_{post_id}' (resource_type posts). FA reads return it. With a destination_type of more than one messaging app an existing post is refused; with one messaging app (WhatsApp, Messenger, Instagram Direct) Meta may refuse it. A single image or video is the safer choice.",
      +                    "type": "string"
      +                  },
      +                  "page_welcome_message": {
      +                    "description": "FA messaging",
      +                    "type": "string"
      +                  },
      +                  "path1": {
      +                    "description": "Display path 1 (max 15 chars, no \"/\"). Omit keeps, \"\" removes.",
      +                    "maxLength": 15,
      +                    "type": "string"
      +                  },
      +                  "path2": {
      +                    "description": "Display path 2 (needs path1; max 15, no \"/\"). Omit keeps, \"\" removes.",
      +                    "maxLength": 15,
      +                    "type": "string"
      +                  },
      +                  "placement_assets": {
      +                    "description": "FA only: a different image or video per placement, without Dynamic Creative. An entry's source may be an upload_ref. Shape, rules and position values: supermetrics_guide mode facebook_meta_capabilities.",
      +                    "items": {
      +                      "properties": {
      +                        "asset_data": {
      +                          "description": "Base64, small files only",
      +                          "type": "string"
      +                        },
      +                        "asset_id": {
      +                          "description": "Hash/ID from campaign_and_resource_get assets",
      +                          "type": "string"
      +                        },
      +                        "asset_prompt": {
      +                          "description": "AI image prompt; only if the user explicitly declined to review images — otherwise generate in creative_picker and pass its upload_ref",
      +                          "type": "string"
      +                        },
      +                        "asset_type": {
      +                          "enum": [
      +                            "image",
      +                            "video"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "asset_url": {
      +                          "description": "Public URL; auto-uploaded to the ad account",
      +                          "type": "string"
      +                        },
      +                        "placements": {
      +                          "anyOf": [
      +                            {
      +                              "enum": [
      +                                "default"
      +                              ],
      +                              "type": "string"
      +                            },
      +                            {
      +                              "properties": {
      +                                "audience_network_positions": {
      +                                  "items": {
      +                                    "type": "string"
      +                                  },
      +                                  "type": "array"
      +                                },
      +                                "facebook_positions": {
      +                                  "items": {
      +                                    "type": "string"
      +                                  },
      +                                  "type": "array"
      +                                },
      +                                "instagram_positions": {
      +                                  "items": {
      +                                    "type": "string"
      +                                  },
      +                                  "type": "array"
      +                                },
      +                                "messenger_positions": {
      +                                  "items": {
      +                                    "type": "string"
      +                                  },
      +                                  "type": "array"
      +                                },
      +                                "publisher_platforms": {
      +                                  "items": {
      +                                    "type": "string"
      +                                  },
      +                                  "type": "array"
      +                                },
      +                                "threads_positions": {
      +                                  "items": {
      +                                    "type": "string"
      +                                  },
      +                                  "type": "array"
      +                                }
      +                              },
      +                              "type": "object"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ],
      +                          "description": "\"default\" for every other placement, or the positions"
      +                        },
      +                        "thumbnail_data": {
      +                          "description": "Video: thumbnail image as base64, small files only",
      +                          "type": "string"
      +                        },
      +                        "thumbnail_url": {
      +                          "description": "Video: thumbnail image URL",
      +                          "type": "string"
      +                        },
      +                        "upload_ref": {
      +                          "description": "From creative_picker",
      +                          "type": "string"
      +                        },
      +                        "video_title": {
      +                          "description": "Video: name of an uploaded video; default the creative's video_title",
      +                          "type": "string"
      +                        }
      +                      },
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "preview_creative_id": {
      +                    "description": "SCM COMPOSITE (Story): preview creative",
      +                    "type": "string"
      +                  },
      +                  "reminder_properties": {
      +                    "description": "SCM REMINDER",
      +                    "properties": {
      +                      "event_detail_id": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "event_detail_id"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "shareable": {
      +                    "description": "SCM, default true",
      +                    "type": "boolean"
      +                  },
      +                  "square_asset_data": {
      +                    "description": "AW display: square image base64",
      +                    "type": "string"
      +                  },
      +                  "square_asset_id": {
      +                    "description": "AW display: square asset ID",
      +                    "type": "string"
      +                  },
      +                  "square_asset_prompt": {
      +                    "description": "AW display: square image AI prompt (only if user declined review; else creative_picker, then its upload_ref in square_asset_url)",
      +                    "type": "string"
      +                  },
      +                  "square_asset_url": {
      +                    "description": "AW display: square image URL",
      +                    "type": "string"
      +                  },
      +                  "thumbnail_url": {
      +                    "description": "FA video thumbnail",
      +                    "type": "string"
      +                  },
      +                  "top_snap_media_id": {
      +                    "description": "SCM",
      +                    "type": "string"
      +                  },
      +                  "type": {
      +                    "description": "SCM ad type",
      +                    "type": "string"
      +                  },
      +                  "upload_ref": {
      +                    "description": "From creative_picker",
      +                    "type": "string"
      +                  },
      +                  "url_tags": {
      +                    "description": "URL tracking parameters appended to ad links (AW: Final URL suffix)",
      +                    "type": "string"
      +                  },
      +                  "video_asset_id": {
      +                    "description": "AW video ad: the video, as reads return it",
      +                    "type": "string"
      +                  },
      +                  "video_asset_ids": {
      +                    "description": "AW",
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "video_title": {
      +                    "description": "FA: name of an uploaded video",
      +                    "type": "string"
      +                  },
      +                  "web_view_properties": {
      +                    "description": "SCM",
      +                    "properties": {
      +                      "url": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "url"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "whatsapp_number": {
      +                    "description": "FA WhatsApp ads: the number the button opens. Omit to keep the current one; \"\" = the page's number",
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "id": {
      +                "description": "Ad ID — omit for create, include for update",
      +                "type": "string"
      +              },
      +              "name": {
      +                "description": "Ad name (required for create, optional for update)",
      +                "type": "string"
      +              },
      +              "platform_settings": {
      +                "description": "Platform-specific ad settings. Set ad status via the top-level status field, not here.",
      +                "properties": {
      +                  "ad_format": {
      +                    "description": "TIK",
      +                    "type": "string"
      +                  },
      +                  "ad_type": {
      +                    "description": "AW: same as type",
      +                    "type": "string"
      +                  },
      +                  "call_to_action": {
      +                    "description": "TIK",
      +                    "type": "string"
      +                  },
      +                  "call_to_action_id": {
      +                    "description": "TIK",
      +                    "type": "string"
      +                  },
      +                  "dsa_beneficiary": {
      +                    "description": "FA: send on the ad set's platform_settings instead",
      +                    "type": "string"
      +                  },
      +                  "dsa_payor": {
      +                    "description": "FA: send on the ad set's platform_settings instead",
      +                    "type": "string"
      +                  },
      +                  "identity_authorized_bc_id": {
      +                    "description": "TIK Business Center",
      +                    "type": "string"
      +                  },
      +                  "identity_id": {
      +                    "description": "TIK Spark Ad: account owning the post",
      +                    "type": "string"
      +                  },
      +                  "identity_type": {
      +                    "description": "TIK",
      +                    "type": "string"
      +                  },
      +                  "music_id": {
      +                    "description": "TIK",
      +                    "type": "string"
      +                  },
      +                  "page_id": {
      +                    "description": "FA Page",
      +                    "type": "string"
      +                  },
      +                  "pixel_id": {
      +                    "description": "FA: adds one pixel's tracking spec",
      +                    "type": "string"
      +                  },
      +                  "profile_id": {
      +                    "description": "SCM: public profile UUID",
      +                    "type": "string"
      +                  },
      +                  "tiktok_item_id": {
      +                    "description": "TIK Spark Ad: the post",
      +                    "type": "string"
      +                  },
      +                  "tracking_pixel_id": {
      +                    "description": "TIK: pixel tracking the ad",
      +                    "type": "string"
      +                  },
      +                  "tracking_specs": {
      +                    "description": "FA: Meta pixel tracking specs",
      +                    "items": {
      +                      "additionalProperties": {
      +                        "items": {
      +                          "type": "string"
      +                        },
      +                        "type": "array"
      +                      },
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "type": {
      +                    "description": "AW ad type",
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "status": {
      +                "description": "ENABLED, PAUSED, or REMOVED (platform wording normalized). Sets the ad's status; if omitted the platform's own default applies, which on some platforms is live — set PAUSED explicitly if the ad must not serve. If a creative edit replaces the ad, status carries over unless set here. Set ENABLED only on explicit user approval — it can start spend.",
      +                "type": "string"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "budget_amount": {
      +          "description": "Budget in account currency",
      +          "type": "number"
      +        },
      +        "budget_type": {
      +          "description": "DAILY or LIFETIME",
      +          "type": "string"
      +        },
      +        "extensions": {
      +          "description": "Image assets for this ad group only. Other extension types are ignored, with a note naming them.",
      +          "properties": {
      +            "images": {
      +              "description": "Replaces the ad group's images; [] removes them; omit keeps them.",
      +              "items": {
      +                "description": "One of url, data (base64), id (existing asset) or upload_ref (from creative_picker).",
      +                "properties": {
      +                  "data": {
      +                    "type": "string"
      +                  },
      +                  "id": {
      +                    "type": "string"
      +                  },
      +                  "upload_ref": {
      +                    "type": "string"
      +                  },
      +                  "url": {
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "type": "array"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "id": {
      +          "description": "Ad group/ad set ID — omit to create new, include to update existing",
      +          "type": "string"
      +        },
      +        "name": {
      +          "description": "Ad group name (required for create)",
      +          "type": "string"
      +        },
      +        "platform_settings": {
      +          "description": "Platform-specific ad group / ad set settings; each key names its platforms. On update send only the keys you change.",
      +          "properties": {
      +            "ad_schedule": {
      +              "description": "FA dayparting",
      +              "items": {
      +                "properties": {
      +                  "days": {
      +                    "description": "0 = Sunday",
      +                    "items": {
      +                      "type": "integer"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "end_minute": {
      +                    "type": "integer"
      +                  },
      +                  "start_minute": {
      +                    "type": "integer"
      +                  },
      +                  "timezone_type": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "start_minute",
      +                  "end_minute",
      +                  "days"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "attribution_spec": {
      +              "description": "FA",
      +              "items": {
      +                "properties": {
      +                  "event_type": {
      +                    "type": "string"
      +                  },
      +                  "window_days": {
      +                    "type": "integer"
      +                  }
      +                },
      +                "required": [
      +                  "event_type",
      +                  "window_days"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "audience_signals": {
      +              "description": "AW PMax: Audience ids or resource names",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "bid_amount": {
      +              "description": "FA legacy: Meta minor units (250 = 2.50); prefer bid_price",
      +              "type": "integer"
      +            },
      +            "bid_constraints": {
      +              "description": "FA",
      +              "properties": {
      +                "roas_average_floor": {
      +                  "type": "integer"
      +                }
      +              },
      +              "required": [
      +                "roas_average_floor"
      +              ],
      +              "type": "object"
      +            },
      +            "bid_micro": {
      +              "description": "SCM: micro-currency",
      +              "type": "integer"
      +            },
      +            "bid_price": {
      +              "description": "FA/TIK: account currency",
      +              "type": "number"
      +            },
      +            "bid_strategy": {
      +              "description": "FA ABO/SCM ad set bid strategy",
      +              "type": "string"
      +            },
      +            "bid_type": {
      +              "description": "TIK",
      +              "enum": [
      +                "BID_TYPE_NO_BID",
      +                "BID_TYPE_CUSTOM",
      +                "BID_TYPE_MAX_CONVERSION"
      +              ],
      +              "type": "string"
      +            },
      +            "billing_event": {
      +              "description": "FA/TIK/LIA/SCM/CGPTA",
      +              "type": "string"
      +            },
      +            "budget_amount": {
      +              "description": "SCM: account currency",
      +              "type": "number"
      +            },
      +            "budget_type": {
      +              "description": "SCM",
      +              "enum": [
      +                "DAILY",
      +                "LIFETIME"
      +              ],
      +              "type": "string"
      +            },
      +            "campaign_type": {
      +              "description": "LIA",
      +              "type": "string"
      +            },
      +            "context_hints": {
      +              "description": "CGPTA: topic keywords",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "conversion_bid_price": {
      +              "description": "TIK, account currency",
      +              "type": "number"
      +            },
      +            "conversion_window": {
      +              "description": "SCM",
      +              "type": "string"
      +            },
      +            "cost_type": {
      +              "description": "LIA",
      +              "enum": [
      +                "CPM",
      +                "CPC"
      +              ],
      +              "type": "string"
      +            },
      +            "cpc_bid": {
      +              "description": "AW/AC/CGPTA",
      +              "type": "number"
      +            },
      +            "custom_event_type": {
      +              "description": "FA: with pixel_id",
      +              "type": "string"
      +            },
      +            "daily_budget": {
      +              "description": "LIA. FA: minor units; prefer budget_amount",
      +              "type": "number"
      +            },
      +            "daily_min_spend_target": {
      +              "description": "FA legacy, minor units: prefer daily_spend_min",
      +              "type": "number"
      +            },
      +            "daily_spend_cap": {
      +              "description": "FA legacy, minor units: prefer daily_spend_max",
      +              "type": "number"
      +            },
      +            "daily_spend_max": {
      +              "description": "FA ad set spend limit, account currency",
      +              "type": "number"
      +            },
      +            "daily_spend_min": {
      +              "description": "FA ad set spend limit, account currency",
      +              "type": "number"
      +            },
      +            "destination_type": {
      +              "description": "FA",
      +              "type": "string"
      +            },
      +            "dsa_beneficiary": {
      +              "description": "FA EU transparency: legal entity promoted",
      +              "type": "string"
      +            },
      +            "dsa_payor": {
      +              "description": "FA EU transparency: legal entity paying",
      +              "type": "string"
      +            },
      +            "end_date": {
      +              "description": "This ad group's own flight end",
      +              "type": "string"
      +            },
      +            "end_time": {
      +              "description": "FA/SCM/TIK: flight end date-time",
      +              "type": "string"
      +            },
      +            "frequency": {
      +              "description": "TIK: max impressions per user",
      +              "type": "integer"
      +            },
      +            "frequency_control_specs": {
      +              "description": "FA",
      +              "items": {
      +                "properties": {
      +                  "event": {
      +                    "type": "string"
      +                  },
      +                  "interval_days": {
      +                    "type": "integer"
      +                  },
      +                  "max_frequency": {
      +                    "type": "integer"
      +                  }
      +                },
      +                "required": [
      +                  "event",
      +                  "interval_days",
      +                  "max_frequency"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "frequency_schedule": {
      +              "description": "TIK: days",
      +              "type": "integer"
      +            },
      +            "identity_id": {
      +              "description": "TIK, with identity_type",
      +              "type": "string"
      +            },
      +            "identity_type": {
      +              "description": "TIK",
      +              "type": "string"
      +            },
      +            "is_dynamic_creative": {
      +              "description": "FA: true is permanent on a published ad set",
      +              "type": "boolean"
      +            },
      +            "lifetime_budget": {
      +              "description": "LIA/TIK. FA legacy, minor units: prefer budget_amount + budget_type",
      +              "type": "number"
      +            },
      +            "lifetime_min_spend_target": {
      +              "description": "FA legacy, minor units: prefer lifetime_spend_min",
      +              "type": "number"
      +            },
      +            "lifetime_spend_cap": {
      +              "description": "FA legacy, minor units: prefer lifetime_spend_max",
      +              "type": "number"
      +            },
      +            "lifetime_spend_max": {
      +              "description": "FA ad set spend limit, account currency",
      +              "type": "number"
      +            },
      +            "lifetime_spend_min": {
      +              "description": "FA ad set spend limit, account currency",
      +              "type": "number"
      +            },
      +            "location_ids": {
      +              "description": "TIK",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "max_bid_micros": {
      +              "description": "CGPTA: micro-currency",
      +              "type": "integer"
      +            },
      +            "objective_type": {
      +              "description": "LIA",
      +              "type": "string"
      +            },
      +            "optimization_event": {
      +              "description": "TIK",
      +              "type": "string"
      +            },
      +            "optimization_goal": {
      +              "description": "FA/TIK/SCM",
      +              "type": "string"
      +            },
      +            "optimization_sub_event": {
      +              "description": "FA",
      +              "type": "string"
      +            },
      +            "pacing": {
      +              "description": "TIK",
      +              "enum": [
      +                "PACING_MODE_SMOOTH",
      +                "PACING_MODE_FAST"
      +              ],
      +              "type": "string"
      +            },
      +            "pacing_type": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "items": {
      +                    "type": "string"
      +                  },
      +                  "type": "array"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "description": "SCM/FA"
      +            },
      +            "page_id": {
      +              "description": "FA",
      +              "type": "string"
      +            },
      +            "pixel_event": {
      +              "description": "TIK: conversion event",
      +              "type": "string"
      +            },
      +            "pixel_id": {
      +              "description": "Pixel to optimize for",
      +              "type": "string"
      +            },
      +            "placement_config": {
      +              "description": "SCM",
      +              "enum": [
      +                "AUTOMATIC",
      +                "CUSTOM"
      +              ],
      +              "type": "string"
      +            },
      +            "placement_type": {
      +              "description": "TIK",
      +              "enum": [
      +                "PLACEMENT_TYPE_AUTOMATIC",
      +                "PLACEMENT_TYPE_NORMAL"
      +              ],
      +              "type": "string"
      +            },
      +            "placements": {
      +              "description": "TIK",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "product_filter": {
      +              "description": "AW retail: this asset group only",
      +              "properties": {
      +                "conditions": {
      +                  "items": {
      +                    "properties": {
      +                      "dimension": {
      +                        "type": "string"
      +                      },
      +                      "values": {
      +                        "items": {
      +                          "type": "string"
      +                        },
      +                        "type": "array"
      +                      }
      +                    },
      +                    "required": [
      +                      "dimension",
      +                      "values"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "mode": {
      +                  "enum": [
      +                    "include",
      +                    "exclude"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "mode",
      +                "conditions"
      +              ],
      +              "type": "object"
      +            },
      +            "promoted_object": {
      +              "description": "FA",
      +              "properties": {
      +                "custom_conversion_id": {
      +                  "type": "string"
      +                },
      +                "custom_event_type": {
      +                  "type": "string"
      +                },
      +                "page_id": {
      +                  "type": "string"
      +                },
      +                "pixel_id": {
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "promotion_type": {
      +              "description": "TIK",
      +              "type": "string"
      +            },
      +            "regional_regulated_categories": {
      +              "description": "FA",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "regional_regulation_identities": {
      +              "description": "FA: regional regulation ids",
      +              "properties": {
      +                "singapore_universal_beneficiary": {
      +                  "type": "string"
      +                },
      +                "singapore_universal_payer": {
      +                  "type": "string"
      +                },
      +                "taiwan_universal_beneficiary": {
      +                  "type": "string"
      +                },
      +                "taiwan_universal_payer": {
      +                  "type": "string"
      +                },
      +                "universal_beneficiary": {
      +                  "type": "string"
      +                },
      +                "universal_payer": {
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "roas_average_floor": {
      +              "description": "FA",
      +              "type": "number"
      +            },
      +            "schedule_end_time": {
      +              "description": "TIK",
      +              "type": "string"
      +            },
      +            "schedule_start_time": {
      +              "description": "TIK",
      +              "type": "string"
      +            },
      +            "schedule_type": {
      +              "description": "TIK",
      +              "enum": [
      +                "SCHEDULE_START_END",
      +                "SCHEDULE_FROM_NOW"
      +              ],
      +              "type": "string"
      +            },
      +            "search_themes": {
      +              "description": "AW PMax: optimization hints",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "start_date": {
      +              "description": "This ad group's own flight start",
      +              "type": "string"
      +            },
      +            "start_time": {
      +              "description": "FA/SCM/TIK: flight start date-time",
      +              "type": "string"
      +            },
      +            "tiktok_item_id": {
      +              "description": "TIK",
      +              "type": "string"
      +            },
      +            "type": {
      +              "description": "AW/AC ad group type",
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "remove_keywords": {
      +          "description": "Update only: remove positive keywords.",
      +          "items": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "properties": {
      +                  "match_type": {
      +                    "enum": [
      +                      "BROAD",
      +                      "PHRASE",
      +                      "EXACT"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "text": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "text"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          "type": "array"
      +        },
      +        "status": {
      +          "description": "ENABLED, PAUSED or REMOVED (platform wording normalized). Some platforms force PAUSED on create: re-read, update if it differs. ENABLED only on explicit user approval. Campaign, ad group (PMax: asset group) and ad each have their own status.",
      +          "type": "string"
      +        },
      +        "targeting": {
      +          "description": "Ad group targeting; on create, overrides campaign-level targeting. On update: omitted fields are kept, sent ones replaced, [] clears one. An unsupported targeting field is refused or reported in the result, not silently applied.",
      +          "properties": {
      +            "advantage_audience": {
      +              "description": "Advantage+ Audience (AI audience expansion) on/off",
      +              "type": "boolean"
      +            },
      +            "age_max": {
      +              "description": "Maximum age",
      +              "type": "integer"
      +            },
      +            "age_min": {
      +              "description": "Minimum age",
      +              "type": "integer"
      +            },
      +            "age_suggestion": {
      +              "description": "[min, max] preferred ages (soft, with advantage_audience); [] clears.",
      +              "items": {
      +                "type": "integer"
      +              },
      +              "maxItems": 2,
      +              "type": "array"
      +            },
      +            "custom_audiences": {
      +              "description": "Custom audiences",
      +              "items": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "properties": {
      +                      "id": {
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id"
      +                    ],
      +                    "type": "object"
      +                  }
      +                ]
      +              },
      +              "type": "array"
      +            },
      +            "devices": {
      +              "description": "Devices (values per platform)",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "excluded_custom_audiences": {
      +              "description": "Excluded audiences",
      +              "items": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "properties": {
      +                      "id": {
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id"
      +                    ],
      +                    "type": "object"
      +                  }
      +                ]
      +              },
      +              "type": "array"
      +            },
      +            "excluded_location_details": {
      +              "description": "Places to exclude, same shape as location_details.",
      +              "items": {
      +                "properties": {
      +                  "country": {
      +                    "type": "string"
      +                  },
      +                  "distance_unit": {
      +                    "enum": [
      +                      "mile",
      +                      "kilometer"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "key": {
      +                    "type": "string"
      +                  },
      +                  "latitude": {
      +                    "type": "number"
      +                  },
      +                  "longitude": {
      +                    "type": "number"
      +                  },
      +                  "name": {
      +                    "type": "string"
      +                  },
      +                  "radius": {
      +                    "type": "number"
      +                  },
      +                  "type": {
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "excluded_locations": {
      +              "description": "Country codes to exclude (other places: excluded_location_details).",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "expand_targeting": {
      +              "description": "Legacy alias for advantage_audience",
      +              "type": "boolean"
      +            },
      +            "genders": {
      +              "description": "MALE, FEMALE, UNDETERMINED",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "interests": {
      +              "description": "Interest targeting",
      +              "items": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "properties": {
      +                      "id": {
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id"
      +                    ],
      +                    "type": "object"
      +                  }
      +                ]
      +              },
      +              "type": "array"
      +            },
      +            "keywords": {
      +              "description": "Positive keywords; replaces the set, so send all of them (use add_keywords to append). status changes a keyword in place; one without status keeps its own.",
      +              "items": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "properties": {
      +                      "cpc_bid": {
      +                        "description": "Max CPC, account currency",
      +                        "type": "number"
      +                      },
      +                      "match_type": {
      +                        "enum": [
      +                          "BROAD",
      +                          "PHRASE",
      +                          "EXACT"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "status": {
      +                        "enum": [
      +                          "ENABLED",
      +                          "PAUSED"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "text": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "text"
      +                    ],
      +                    "type": "object"
      +                  }
      +                ]
      +              },
      +              "type": "array"
      +            },
      +            "languages": {
      +              "description": "Language codes (e.g. 'en')",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "location_details": {
      +              "description": "Sub-country targeting entries; key from targeting_search.",
      +              "items": {
      +                "description": "Sub-country location or proximity targeting entry.\n\nCity/region: {type, key, name, country} — use targeting_search with type=city to find key.\nProximity: {type: custom_location, latitude, longitude, radius, distance_unit: mile|kilometer}.",
      +                "properties": {
      +                  "country": {
      +                    "description": "Country code",
      +                    "type": "string"
      +                  },
      +                  "distance_unit": {
      +                    "enum": [
      +                      "mile",
      +                      "kilometer"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "key": {
      +                    "description": "Geo identifier (use targeting_search to find). Set empty for custom_location proximity",
      +                    "type": "string"
      +                  },
      +                  "latitude": {
      +                    "type": "number"
      +                  },
      +                  "longitude": {
      +                    "type": "number"
      +                  },
      +                  "name": {
      +                    "description": "Human-readable name",
      +                    "type": "string"
      +                  },
      +                  "radius": {
      +                    "type": "number"
      +                  },
      +                  "type": {
      +                    "description": "city, region, metro, zip, geo_market, custom_location (proximity) or geo_target (exclusions)",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "type",
      +                  "key"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "locations": {
      +              "description": "Country codes or platform location ids; sub-country places go in location_details where the platform supports it (see its capability guide).",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "lookalike_audiences": {
      +              "description": "Lookalike audiences",
      +              "items": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "properties": {
      +                      "id": {
      +                        "type": "string"
      +                      },
      +                      "name": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "id"
      +                    ],
      +                    "type": "object"
      +                  }
      +                ]
      +              },
      +              "type": "array"
      +            },
      +            "negative_keywords": {
      +              "description": "Negative keywords. Do NOT put in keywords.",
      +              "items": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "properties": {
      +                      "match_type": {
      +                        "enum": [
      +                          "BROAD",
      +                          "PHRASE",
      +                          "EXACT"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "text": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "text"
      +                    ],
      +                    "type": "object"
      +                  }
      +                ]
      +              },
      +              "type": "array"
      +            },
      +            "placements": {
      +              "description": "Ad placements (e.g. feed, stories, reels)",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "platforms": {
      +              "description": "Platforms/OS to target (values per platform)",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / $defs / CampaignFailure / properties / additional_reasons
      Added value: +{
      +  "description": "Further reason codes (UPPER_SNAKE) of the same refusal, after reason. Absent when none",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  4. First observed

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive=true, non-idempotent, open-world, so the safety profile is known. The description goes further by disclosing partial-success semantics (check write_status and failures, otherwise notes), that only provided fields change on update, and that ad group/ads operations are inferred from id presence. It does not spell out permission requirements or the irreversibility of specific mutations, but covers the highest-risk behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Core create-vs-update rule is front-loaded in the first two sentences, followed by workflow prerequisites and result interpretation. The capability-guide enumeration and repeated asset-source guidance are wordy, but each sentence carries routing or safety information rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a large, multi-object, destructive write tool with 18 parameters and an output schema, the description covers the whole call path: pre-write capability lookup, creative preparation, create-vs-update determination, partial-failure handling, and post-write verification. Nothing an agent needs to call it safely is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3, but the description adds non-obvious rules the schema does not state: a budget is required specifically when creating, and nested ad_group/ads operations are inferred from id presence. The creative asset-source precedence is largely duplicated from the schema, keeping this below a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb pair plus resource and enumerates the seven platforms (AW/FA/TIK/LIA/AC/CGPTA/SCM). It immediately splits the two modes of operation (campaign_id present = update, absent = create) and names the sibling to use for read-back (campaign_and_resource_get), so an agent can place this tool precisely.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing rules: provide campaign_id to update, omit to create with a required budget; use creative_picker first for AI images and pass upload_ref unless the user declined review; read the platform's capability guide via supermetrics_guide before writing, with the exact mode name per platform; use campaign_and_resource_get for details afterward. It also advises against blind retries on partial success.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources