changedInput schema / properties / changes / items / oneOf
Previous value: -[
- {
- "description": "Block searches containing these words in one campaign",
- "properties": {
- "campaign_id": {
- "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "keywords": {
- "items": {
- "properties": {
- "match_type": {
- "description": "PHRASE blocks any search containing the words in order; the usual choice",
- "enum": [
- "EXACT",
- "PHRASE",
- "BROAD"
- ],
- "type": "string"
- },
- "text": {
- "description": "The search words to block, e.g. \"free\"",
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "text",
- "match_type"
- ],
- "type": "object"
- },
- "maxItems": 50,
- "minItems": 1,
- "type": "array"
- },
- "type": {
- "const": "add_negative_keywords",
- "type": "string"
- }
- },
- "required": [
- "type",
- "campaign_id",
- "keywords"
- ],
- "type": "object"
- },
- {
- "description": "Pause one keyword",
- "properties": {
- "ad_group_id": {
- "description": "Ad group id, digits only (ad_group.id from run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "criterion_id": {
- "description": "Keyword criterion id, digits only (ad_group_criterion.criterion_id from run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "type": {
- "const": "pause_keyword",
- "type": "string"
- }
- },
- "required": [
- "type",
- "ad_group_id",
- "criterion_id"
- ],
- "type": "object"
- },
- {
- "description": "Re-enable one paused keyword",
- "properties": {
- "ad_group_id": {
- "description": "Ad group id, digits only (ad_group.id from run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "criterion_id": {
- "description": "Keyword criterion id, digits only (ad_group_criterion.criterion_id from run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "type": {
- "const": "enable_keyword",
- "type": "string"
- }
- },
- "required": [
- "type",
- "ad_group_id",
- "criterion_id"
- ],
- "type": "object"
- },
- {
- "description": "Pause a whole campaign (stops all its spend)",
- "properties": {
- "campaign_id": {
- "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "type": {
- "const": "pause_campaign",
- "type": "string"
- }
- },
- "required": [
- "type",
- "campaign_id"
- ],
- "type": "object"
- },
- {
- "description": "Turn a paused campaign back on. It starts spending again; the summary says how much",
- "properties": {
- "campaign_id": {
- "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "type": {
- "const": "enable_campaign",
- "type": "string"
- }
- },
- "required": [
- "type",
- "campaign_id"
- ],
- "type": "object"
- },
- {
- "description": "Pause one ad group",
- "properties": {
- "ad_group_id": {
- "description": "Ad group id, digits only (ad_group.id from run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "type": {
- "const": "pause_ad_group",
- "type": "string"
- }
- },
- "required": [
- "type",
- "ad_group_id"
- ],
- "type": "object"
- },
- {
- "description": "Re-enable one paused ad group",
- "properties": {
- "ad_group_id": {
- "description": "Ad group id, digits only (ad_group.id from run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "type": {
- "const": "enable_ad_group",
- "type": "string"
- }
- },
- "required": [
- "type",
- "ad_group_id"
- ],
- "type": "object"
- },
- {
- "description": "Change a campaign's daily budget (not shared budgets)",
- "properties": {
- "amount": {
- "description": "New average daily budget in the account's currency, e.g. 10 for $10.00/day (not micros)",
- "exclusiveMinimum": 0,
- "maximum": 1000000,
- "type": "number"
- },
- "campaign_id": {
- "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "type": {
- "const": "set_daily_budget",
- "type": "string"
- }
- },
- "required": [
- "type",
- "campaign_id",
- "amount"
- ],
- "type": "object"
- },
- {
- "description": "Set the last day a campaign runs, so it stops spending on its own",
- "properties": {
- "campaign_id": {
- "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "end_date": {
- "anyOf": [
- {
- "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
- "type": "string"
- },
- {
- "const": "none",
- "type": "string"
- }
- ],
- "description": "Last day the campaign runs, YYYY-MM-DD in the account's time zone (it stops after 23:59:59 that day), or \"none\" to remove the end date"
- },
- "type": {
- "const": "set_end_date",
- "type": "string"
- }
- },
- "required": [
- "type",
- "campaign_id",
- "end_date"
- ],
- "type": "object"
- },
- {
- "description": "Build a new Search campaign with its ad groups, keywords, ads, targeting, negatives and sitelinks, in one step. It is created PAUSED: nothing spends until a separate enable_campaign",
- "properties": {
- "ad_groups": {
- "items": {
- "properties": {
- "ads": {
- "items": {
- "description": "A responsive search ad",
- "properties": {
- "descriptions": {
- "description": "2 to 4 descriptions, each at most 90 characters",
- "items": {
- "maxLength": 90,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 4,
- "minItems": 2,
- "type": "array"
- },
- "final_url": {
- "description": "The landing page",
- "maxLength": 2048,
- "pattern": "^https?:\\/\\/",
- "type": "string"
- },
- "headlines": {
- "description": "3 to 15 headlines, each at most 30 characters",
- "items": {
- "maxLength": 30,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 15,
- "minItems": 3,
- "type": "array"
- },
- "path1": {
- "description": "Display path part 1, at most 15 characters",
- "maxLength": 15,
- "minLength": 1,
- "type": "string"
- },
- "path2": {
- "description": "Display path part 2, at most 15 characters",
- "maxLength": 15,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "headlines",
- "descriptions",
- "final_url"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "minItems": 1,
- "type": "array"
- },
- "default_max_cpc": {
- "description": "Default max cost per click for the ad group (required when the campaign uses manual CPC)",
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "number"
- },
- "keywords": {
- "items": {
- "properties": {
- "match_type": {
- "description": "PHRASE matches searches containing the words in order; the usual choice",
- "enum": [
- "EXACT",
- "PHRASE",
- "BROAD"
- ],
- "type": "string"
- },
- "max_cpc": {
- "description": "Max cost per click for this keyword in the account's currency (manual CPC only); omit to use the ad group's",
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "number"
- },
- "text": {
- "description": "The keyword, e.g. \"cleaning invoice template\"",
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "text",
- "match_type"
- ],
- "type": "object"
- },
- "maxItems": 50,
- "minItems": 1,
- "type": "array"
- },
- "name": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "keywords",
- "ads"
- ],
- "type": "object"
- },
- "maxItems": 10,
- "minItems": 1,
- "type": "array"
- },
- "bidding": {
- "default": "MANUAL_CPC",
- "description": "MANUAL_CPC uses the ad group and keyword max CPCs; MAXIMIZE_CLICKS and MAXIMIZE_CONVERSIONS let Google bid within the budget",
- "enum": [
- "MANUAL_CPC",
- "MAXIMIZE_CLICKS",
- "MAXIMIZE_CONVERSIONS"
- ],
- "type": "string"
- },
- "daily_budget": {
- "description": "Average daily budget in the account's currency, e.g. 20 for $20.00/day",
- "exclusiveMinimum": 0,
- "maximum": 1000000,
- "type": "number"
- },
- "end_date": {
- "description": "Last day the campaign runs, YYYY-MM-DD",
- "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
- "type": "string"
- },
- "language_ids": {
- "default": [
- "1000"
- ],
- "description": "Google language ids, e.g. 1000 English, 1003 Spanish",
- "items": {
- "pattern": "^\\d+$",
- "type": "string"
- },
- "maxItems": 20,
- "minItems": 1,
- "type": "array"
- },
- "location_ids": {
- "default": [
- "2840"
- ],
- "description": "Google geo target ids, e.g. 2840 United States, 2826 United Kingdom, 2124 Canada (look others up in geo_target_constant)",
- "items": {
- "pattern": "^\\d+$",
- "type": "string"
- },
- "maxItems": 50,
- "minItems": 1,
- "type": "array"
- },
- "max_cpc_ceiling": {
- "description": "MAXIMIZE_CLICKS only: the most Google may bid per click",
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "number"
- },
- "name": {
- "description": "Campaign name; must not match an existing campaign",
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "negative_keywords": {
- "default": [],
- "description": "Searches to block across the campaign",
- "items": {
- "properties": {
- "match_type": {
- "enum": [
- "EXACT",
- "PHRASE",
- "BROAD"
- ],
- "type": "string"
- },
- "text": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "text",
- "match_type"
- ],
- "type": "object"
- },
- "maxItems": 200,
- "type": "array"
- },
- "presence_only": {
- "default": true,
- "description": "Show ads only to people IN the locations (true), not merely interested in them",
- "type": "boolean"
- },
- "search_partners": {
- "default": false,
- "description": "Also show on Google's search partner sites",
- "type": "boolean"
- },
- "sitelinks": {
- "default": [],
- "items": {
- "properties": {
- "description1": {
- "description": "At most 35 characters; give both descriptions or neither",
- "maxLength": 35,
- "minLength": 1,
- "type": "string"
- },
- "description2": {
- "maxLength": 35,
- "minLength": 1,
- "type": "string"
- },
- "text": {
- "description": "Link text, at most 25 characters",
- "maxLength": 25,
- "minLength": 1,
- "type": "string"
- },
- "url": {
- "maxLength": 2048,
- "pattern": "^https?:\\/\\/",
- "type": "string"
- }
- },
- "required": [
- "text",
- "url"
- ],
- "type": "object"
- },
- "maxItems": 8,
- "type": "array"
- },
- "type": {
- "const": "create_campaign",
- "type": "string"
- }
- },
- "required": [
- "type",
- "name",
- "daily_budget",
- "ad_groups"
- ],
- "type": "object"
- },
- {
- "description": "Build a new Display campaign (image ads across Google's Display Network of sites and apps) with ad groups and responsive display ads. Google's optimized targeting finds the audience. It is created PAUSED: nothing spends until a separate enable_campaign",
- "properties": {
- "ad_groups": {
- "items": {
- "properties": {
- "ads": {
- "items": {
- "description": "A responsive display ad: Google assembles ads from these headlines, descriptions and images",
- "properties": {
- "business_name": {
- "description": "The advertiser's name, at most 25 characters",
- "maxLength": 25,
- "minLength": 1,
- "type": "string"
- },
- "descriptions": {
- "description": "1 to 5 descriptions, each at most 90 characters",
- "items": {
- "maxLength": 90,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 5,
- "minItems": 1,
- "type": "array"
- },
- "final_url": {
- "description": "The landing page",
- "maxLength": 2048,
- "pattern": "^https?:\\/\\/",
- "type": "string"
- },
- "headlines": {
- "description": "1 to 5 short headlines, each at most 30 characters",
- "items": {
- "maxLength": 30,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 5,
- "minItems": 1,
- "type": "array"
- },
- "logo_images": {
- "default": [],
- "description": "0 to 5 landscape logos, 4:1 (e.g. 1200×300, at least 512×128)",
- "items": {
- "description": "An https URL of a PNG, JPEG or GIF (at most 5120 KB), or the id of an image asset already in the account (asset.id from run_gaql WHERE asset.type = 'IMAGE')",
- "maxLength": 2048,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 5,
- "minItems": 0,
- "type": "array"
- },
- "long_headline": {
- "description": "One long headline, at most 90 characters",
- "maxLength": 90,
- "minLength": 1,
- "type": "string"
- },
- "marketing_images": {
- "description": "1 to 15 landscape images, 1.91:1 (e.g. 1200×628, at least 600×314)",
- "items": {
- "description": "An https URL of a PNG, JPEG or GIF (at most 5120 KB), or the id of an image asset already in the account (asset.id from run_gaql WHERE asset.type = 'IMAGE')",
- "maxLength": 2048,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 15,
- "minItems": 1,
- "type": "array"
- },
- "square_logo_images": {
- "default": [],
- "description": "0 to 5 square logos, 1:1 (e.g. 1200×1200, at least 128×128)",
- "items": {
- "description": "An https URL of a PNG, JPEG or GIF (at most 5120 KB), or the id of an image asset already in the account (asset.id from run_gaql WHERE asset.type = 'IMAGE')",
- "maxLength": 2048,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 5,
- "minItems": 0,
- "type": "array"
- },
- "square_marketing_images": {
- "description": "1 to 15 square images, 1:1 (e.g. 1200×1200, at least 300×300)",
- "items": {
- "description": "An https URL of a PNG, JPEG or GIF (at most 5120 KB), or the id of an image asset already in the account (asset.id from run_gaql WHERE asset.type = 'IMAGE')",
- "maxLength": 2048,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 15,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "headlines",
- "long_headline",
- "descriptions",
- "business_name",
- "final_url",
- "marketing_images",
- "square_marketing_images"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "minItems": 1,
- "type": "array"
- },
- "default_max_cpc": {
- "description": "Default max cost per click (required when the campaign uses manual CPC)",
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "number"
- },
- "name": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "ads"
- ],
- "type": "object"
- },
- "maxItems": 5,
- "minItems": 1,
- "type": "array"
- },
- "bidding": {
- "default": "MAXIMIZE_CLICKS",
- "description": "MANUAL_CPC uses the ad groups' max CPCs; MAXIMIZE_CLICKS and MAXIMIZE_CONVERSIONS let Google bid within the budget",
- "enum": [
- "MANUAL_CPC",
- "MAXIMIZE_CLICKS",
- "MAXIMIZE_CONVERSIONS"
- ],
- "type": "string"
- },
- "daily_budget": {
- "description": "Average daily budget in the account's currency, e.g. 20 for $20.00/day",
- "exclusiveMinimum": 0,
- "maximum": 1000000,
- "type": "number"
- },
- "end_date": {
- "description": "Last day the campaign runs, YYYY-MM-DD",
- "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
- "type": "string"
- },
- "language_ids": {
- "default": [
- "1000"
- ],
- "description": "Google language ids, e.g. 1000 English",
- "items": {
- "pattern": "^\\d+$",
- "type": "string"
- },
- "maxItems": 20,
- "minItems": 1,
- "type": "array"
- },
- "location_ids": {
- "default": [
- "2840"
- ],
- "description": "Google geo target ids, e.g. 2840 United States",
- "items": {
- "pattern": "^\\d+$",
- "type": "string"
- },
- "maxItems": 50,
- "minItems": 1,
- "type": "array"
- },
- "max_cpc_ceiling": {
- "description": "MAXIMIZE_CLICKS only: the most Google may bid per click",
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "number"
- },
- "name": {
- "description": "Campaign name; must not match an existing campaign",
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "presence_only": {
- "default": true,
- "description": "Show ads only to people IN the locations (true), not merely interested in them",
- "type": "boolean"
- },
- "type": {
- "const": "create_display_campaign",
- "type": "string"
- }
- },
- "required": [
- "type",
- "name",
- "daily_budget",
- "ad_groups"
- ],
- "type": "object"
- },
- {
- "description": "Build a new Demand Gen campaign with YouTube video ads, which is how to advertise on YouTube through the API (Google doesn't allow creating Video campaigns there). It is created PAUSED: nothing spends until a separate enable_campaign",
- "properties": {
- "ad_groups": {
- "items": {
- "properties": {
- "ads": {
- "items": {
- "description": "A Demand Gen video ad: runs on YouTube (in-stream, in-feed and Shorts), Discover and Gmail",
- "properties": {
- "business_name": {
- "description": "The advertiser's name, at most 25 characters",
- "maxLength": 25,
- "minLength": 1,
- "type": "string"
- },
- "descriptions": {
- "description": "1 to 5 descriptions, each at most 90 characters",
- "items": {
- "maxLength": 90,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 5,
- "minItems": 1,
- "type": "array"
- },
- "final_url": {
- "description": "The landing page",
- "maxLength": 2048,
- "pattern": "^https?:\\/\\/",
- "type": "string"
- },
- "headlines": {
- "description": "1 to 5 headlines, each at most 40 characters",
- "items": {
- "maxLength": 40,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 5,
- "minItems": 1,
- "type": "array"
- },
- "logo_image": {
- "description": "A square 1:1 logo (e.g. 1200×1200, at least 128×128): an https URL, or an image asset id from the account",
- "maxLength": 2048,
- "minLength": 1,
- "type": "string"
- },
- "long_headlines": {
- "description": "1 to 5 long headlines, each at most 90 characters",
- "items": {
- "maxLength": 90,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 5,
- "minItems": 1,
- "type": "array"
- },
- "videos": {
- "description": "1 to 5 YouTube videos",
- "items": {
- "description": "A YouTube video id (e.g. dQw4w9WgXcQ) or its youtube.com / youtu.be URL. The video must be public or unlisted",
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 5,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "videos",
- "headlines",
- "long_headlines",
- "descriptions",
- "business_name",
- "logo_image",
- "final_url"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "minItems": 1,
- "type": "array"
- },
- "language_ids": {
- "default": [
- "1000"
- ],
- "description": "Google language ids, e.g. 1000 English",
- "items": {
- "pattern": "^\\d+$",
- "type": "string"
- },
- "maxItems": 20,
- "minItems": 1,
- "type": "array"
- },
- "location_ids": {
- "default": [
- "2840"
- ],
- "description": "Google geo target ids, e.g. 2840 United States (Demand Gen targets locations per ad group, not per campaign)",
- "items": {
- "pattern": "^\\d+$",
- "type": "string"
- },
- "maxItems": 50,
- "minItems": 1,
- "type": "array"
- },
- "name": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "ads"
- ],
- "type": "object"
- },
- "maxItems": 5,
- "minItems": 1,
- "type": "array"
- },
- "bidding": {
- "default": "MAXIMIZE_CONVERSIONS",
- "description": "Demand Gen bids automatically: MAXIMIZE_CONVERSIONS (needs conversion tracking) or MAXIMIZE_CLICKS",
- "enum": [
- "MAXIMIZE_CONVERSIONS",
- "MAXIMIZE_CLICKS"
- ],
- "type": "string"
- },
- "daily_budget": {
- "description": "Average daily budget in the account's currency, e.g. 20 for $20.00/day",
- "exclusiveMinimum": 0,
- "maximum": 1000000,
- "type": "number"
- },
- "end_date": {
- "description": "Last day the campaign runs, YYYY-MM-DD",
- "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
- "type": "string"
- },
- "name": {
- "description": "Campaign name; must not match an existing campaign",
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "type": {
- "const": "create_demand_gen_campaign",
- "type": "string"
- }
- },
- "required": [
- "type",
- "name",
- "daily_budget",
- "ad_groups"
- ],
- "type": "object"
- },
- {
- "description": "Build a new Performance Max campaign: one budget, Google places ads across Search, YouTube, Display, Discover, Gmail and Maps from the asset groups' text, images and videos. No shopping feed (non-retail). It is created PAUSED: nothing spends until a separate enable_campaign",
- "properties": {
- "asset_groups": {
- "items": {
- "description": "An asset group: the headlines, descriptions, images and videos Google combines into ads on every channel",
- "properties": {
- "descriptions": {
- "description": "2 to 5 descriptions, each at most 90 characters; Google recommends one of 60 or fewer",
- "items": {
- "maxLength": 90,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 5,
- "minItems": 2,
- "type": "array"
- },
- "final_url": {
- "description": "The landing page (Google may also send people to other pages on the same site)",
- "maxLength": 2048,
- "pattern": "^https?:\\/\\/",
- "type": "string"
- },
- "headlines": {
- "description": "3 to 15 headlines, each at most 30 characters",
- "items": {
- "maxLength": 30,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 15,
- "minItems": 3,
- "type": "array"
- },
- "long_headlines": {
- "description": "1 to 5 long headlines, each at most 90 characters",
- "items": {
- "maxLength": 90,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 5,
- "minItems": 1,
- "type": "array"
- },
- "marketing_images": {
- "description": "1 to 20 landscape images, 1.91:1 (e.g. 1200×628)",
- "items": {
- "description": "An https URL of a PNG, JPEG or GIF (at most 5120 KB), or the id of an image asset already in the account (asset.id from run_gaql WHERE asset.type = 'IMAGE')",
- "maxLength": 2048,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "minItems": 1,
- "type": "array"
- },
- "name": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "portrait_marketing_images": {
- "default": [],
- "description": "0 to 20 portrait images, 4:5 (e.g. 960×1200)",
- "items": {
- "description": "An https URL of a PNG, JPEG or GIF (at most 5120 KB), or the id of an image asset already in the account (asset.id from run_gaql WHERE asset.type = 'IMAGE')",
- "maxLength": 2048,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "minItems": 0,
- "type": "array"
- },
- "square_marketing_images": {
- "description": "1 to 20 square images, 1:1 (e.g. 1200×1200)",
- "items": {
- "description": "An https URL of a PNG, JPEG or GIF (at most 5120 KB), or the id of an image asset already in the account (asset.id from run_gaql WHERE asset.type = 'IMAGE')",
- "maxLength": 2048,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 20,
- "minItems": 1,
- "type": "array"
- },
- "videos": {
- "default": [],
- "description": "0 to 5 YouTube videos; without one, Google may auto-generate a video from the images",
- "items": {
- "description": "A YouTube video id (e.g. dQw4w9WgXcQ) or its youtube.com / youtu.be URL. The video must be public or unlisted",
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 5,
- "type": "array"
- }
- },
- "required": [
- "name",
- "final_url",
- "headlines",
- "long_headlines",
- "descriptions",
- "marketing_images",
- "square_marketing_images"
- ],
- "type": "object"
- },
- "maxItems": 5,
- "minItems": 1,
- "type": "array"
- },
- "bidding": {
- "default": "MAXIMIZE_CONVERSIONS",
- "description": "Performance Max bids for conversions only: MAXIMIZE_CONVERSIONS, or MAXIMIZE_CONVERSION_VALUE when conversions carry values",
- "enum": [
- "MAXIMIZE_CONVERSIONS",
- "MAXIMIZE_CONVERSION_VALUE"
- ],
- "type": "string"
- },
- "business_name": {
- "description": "The advertiser's name, at most 25 characters (linked to the campaign, per Google's brand guidelines)",
- "maxLength": 25,
- "minLength": 1,
- "type": "string"
- },
- "daily_budget": {
- "description": "Average daily budget in the account's currency, e.g. 20 for $20.00/day",
- "exclusiveMinimum": 0,
- "maximum": 1000000,
- "type": "number"
- },
- "end_date": {
- "description": "Last day the campaign runs, YYYY-MM-DD",
- "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
- "type": "string"
- },
- "language_ids": {
- "default": [
- "1000"
- ],
- "description": "Google language ids, e.g. 1000 English",
- "items": {
- "pattern": "^\\d+$",
- "type": "string"
- },
- "maxItems": 20,
- "minItems": 1,
- "type": "array"
- },
- "location_ids": {
- "default": [
- "2840"
- ],
- "description": "Google geo target ids, e.g. 2840 United States",
- "items": {
- "pattern": "^\\d+$",
- "type": "string"
- },
- "maxItems": 50,
- "minItems": 1,
- "type": "array"
- },
- "logo_images": {
- "description": "1 to 5 square logos, 1:1 (e.g. 1200×1200, at least 128×128), linked to the campaign",
- "items": {
- "description": "An https URL of a PNG, JPEG or GIF (at most 5120 KB), or the id of an image asset already in the account (asset.id from run_gaql WHERE asset.type = 'IMAGE')",
- "maxLength": 2048,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 5,
- "minItems": 1,
- "type": "array"
- },
- "name": {
- "description": "Campaign name; must not match an existing campaign",
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "target_cpa": {
- "description": "MAXIMIZE_CONVERSIONS only: target cost per conversion",
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "number"
- },
- "type": {
- "const": "create_performance_max_campaign",
- "type": "string"
- }
- },
- "required": [
- "type",
- "name",
- "daily_budget",
- "business_name",
- "logo_images",
- "asset_groups"
- ],
- "type": "object"
- },
- {
- "description": "Add an ad group, with its keywords and ads, to an existing Search campaign",
- "properties": {
- "ad_group": {
- "properties": {
- "ads": {
- "items": {
- "description": "A responsive search ad",
- "properties": {
- "descriptions": {
- "description": "2 to 4 descriptions, each at most 90 characters",
- "items": {
- "maxLength": 90,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 4,
- "minItems": 2,
- "type": "array"
- },
- "final_url": {
- "description": "The landing page",
- "maxLength": 2048,
- "pattern": "^https?:\\/\\/",
- "type": "string"
- },
- "headlines": {
- "description": "3 to 15 headlines, each at most 30 characters",
- "items": {
- "maxLength": 30,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 15,
- "minItems": 3,
- "type": "array"
- },
- "path1": {
- "description": "Display path part 1, at most 15 characters",
- "maxLength": 15,
- "minLength": 1,
- "type": "string"
- },
- "path2": {
- "description": "Display path part 2, at most 15 characters",
- "maxLength": 15,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "headlines",
- "descriptions",
- "final_url"
- ],
- "type": "object"
- },
- "maxItems": 3,
- "minItems": 1,
- "type": "array"
- },
- "default_max_cpc": {
- "description": "Default max cost per click for the ad group (required when the campaign uses manual CPC)",
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "number"
- },
- "keywords": {
- "items": {
- "properties": {
- "match_type": {
- "description": "PHRASE matches searches containing the words in order; the usual choice",
- "enum": [
- "EXACT",
- "PHRASE",
- "BROAD"
- ],
- "type": "string"
- },
- "max_cpc": {
- "description": "Max cost per click for this keyword in the account's currency (manual CPC only); omit to use the ad group's",
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "number"
- },
- "text": {
- "description": "The keyword, e.g. \"cleaning invoice template\"",
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "text",
- "match_type"
- ],
- "type": "object"
- },
- "maxItems": 50,
- "minItems": 1,
- "type": "array"
- },
- "name": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "name",
- "keywords",
- "ads"
- ],
- "type": "object"
- },
- "campaign_id": {
- "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "type": {
- "const": "add_ad_group",
- "type": "string"
- }
- },
- "required": [
- "type",
- "campaign_id",
- "ad_group"
- ],
- "type": "object"
- },
- {
- "description": "Add keywords to an existing ad group",
- "properties": {
- "ad_group_id": {
- "description": "Ad group id, digits only (ad_group.id from run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "keywords": {
- "items": {
- "properties": {
- "match_type": {
- "description": "PHRASE matches searches containing the words in order; the usual choice",
- "enum": [
- "EXACT",
- "PHRASE",
- "BROAD"
- ],
- "type": "string"
- },
- "max_cpc": {
- "description": "Max cost per click for this keyword in the account's currency (manual CPC only); omit to use the ad group's",
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "number"
- },
- "text": {
- "description": "The keyword, e.g. \"cleaning invoice template\"",
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "text",
- "match_type"
- ],
- "type": "object"
- },
- "maxItems": 50,
- "minItems": 1,
- "type": "array"
- },
- "type": {
- "const": "add_keywords",
- "type": "string"
- }
- },
- "required": [
- "type",
- "ad_group_id",
- "keywords"
- ],
- "type": "object"
- },
- {
- "description": "Add a responsive search ad to an existing ad group",
- "properties": {
- "ad": {
- "description": "A responsive search ad",
- "properties": {
- "descriptions": {
- "description": "2 to 4 descriptions, each at most 90 characters",
- "items": {
- "maxLength": 90,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 4,
- "minItems": 2,
- "type": "array"
- },
- "final_url": {
- "description": "The landing page",
- "maxLength": 2048,
- "pattern": "^https?:\\/\\/",
- "type": "string"
- },
- "headlines": {
- "description": "3 to 15 headlines, each at most 30 characters",
- "items": {
- "maxLength": 30,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 15,
- "minItems": 3,
- "type": "array"
- },
- "path1": {
- "description": "Display path part 1, at most 15 characters",
- "maxLength": 15,
- "minLength": 1,
- "type": "string"
- },
- "path2": {
- "description": "Display path part 2, at most 15 characters",
- "maxLength": 15,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "headlines",
- "descriptions",
- "final_url"
- ],
- "type": "object"
- },
- "ad_group_id": {
- "description": "Ad group id, digits only (ad_group.id from run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "type": {
- "const": "add_responsive_search_ad",
- "type": "string"
- }
- },
- "required": [
- "type",
- "ad_group_id",
- "ad"
- ],
- "type": "object"
- },
- {
- "description": "Add sitelinks to a campaign",
- "properties": {
- "campaign_id": {
- "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "sitelinks": {
- "items": {
- "properties": {
- "description1": {
- "description": "At most 35 characters; give both descriptions or neither",
- "maxLength": 35,
- "minLength": 1,
- "type": "string"
- },
- "description2": {
- "maxLength": 35,
- "minLength": 1,
- "type": "string"
- },
- "text": {
- "description": "Link text, at most 25 characters",
- "maxLength": 25,
- "minLength": 1,
- "type": "string"
- },
- "url": {
- "maxLength": 2048,
- "pattern": "^https?:\\/\\/",
- "type": "string"
- }
- },
- "required": [
- "text",
- "url"
- ],
- "type": "object"
- },
- "maxItems": 8,
- "minItems": 1,
- "type": "array"
- },
- "type": {
- "const": "add_sitelinks",
- "type": "string"
- }
- },
- "required": [
- "type",
- "campaign_id",
- "sitelinks"
- ],
- "type": "object"
- },
- {
- "description": "Make a campaign count and bid on ONE conversion category only (e.g. SIGNUP), so another product's or step's conversions don't steer it",
- "properties": {
- "campaign_id": {
- "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "category": {
- "description": "Conversion category, e.g. SIGNUP, PURCHASE, SUBMIT_LEAD_FORM, QUALIFIED_LEAD (see conversion_action.category in run_gaql)",
- "pattern": "^[A-Z_]+$",
- "type": "string"
- },
- "type": {
- "const": "set_conversion_goal",
- "type": "string"
- }
- },
- "required": [
- "type",
- "campaign_id",
- "category"
- ],
- "type": "object"
- },
- {
- "description": "Change one keyword's max CPC (manual CPC campaigns)",
- "properties": {
- "ad_group_id": {
- "description": "Ad group id, digits only (ad_group.id from run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "criterion_id": {
- "description": "Keyword criterion id, digits only (ad_group_criterion.criterion_id from run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "max_cpc": {
- "anyOf": [
- {
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "description": "New max cost per click for this keyword, or null to clear it so the keyword uses the ad group's bid"
- },
- "type": {
- "const": "set_keyword_bid",
- "type": "string"
- }
- },
- "required": [
- "type",
- "ad_group_id",
- "criterion_id",
- "max_cpc"
- ],
- "type": "object"
- },
- {
- "description": "Change an ad group's default max CPC, which its keywords use unless they have their own",
- "properties": {
- "ad_group_id": {
- "description": "Ad group id, digits only (ad_group.id from run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "max_cpc": {
- "description": "New default max cost per click for the ad group",
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "number"
- },
- "type": {
- "const": "set_ad_group_bid",
- "type": "string"
- }
- },
- "required": [
- "type",
- "ad_group_id",
- "max_cpc"
- ],
- "type": "object"
- },
- {
- "description": "Pause one ad",
- "properties": {
- "ad_group_id": {
- "description": "Ad group id, digits only (ad_group.id from run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "ad_id": {
- "description": "Ad id, digits only (ad_group_ad.ad.id from run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "type": {
- "const": "pause_ad",
- "type": "string"
- }
- },
- "required": [
- "type",
- "ad_group_id",
- "ad_id"
- ],
- "type": "object"
- },
- {
- "description": "Re-enable one paused ad",
- "properties": {
- "ad_group_id": {
- "description": "Ad group id, digits only (ad_group.id from run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "ad_id": {
- "description": "Ad id, digits only (ad_group_ad.ad.id from run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "type": {
- "const": "enable_ad",
- "type": "string"
- }
- },
- "required": [
- "type",
- "ad_group_id",
- "ad_id"
- ],
- "type": "object"
- },
- {
- "description": "Add locations and/or languages a campaign targets",
- "properties": {
- "campaign_id": {
- "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "language_ids": {
- "default": [],
- "description": "Language ids to add, e.g. 1000 English",
- "items": {
- "pattern": "^\\d+$",
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "location_ids": {
- "default": [],
- "description": "Geo target ids to add, e.g. 2840 United States",
- "items": {
- "pattern": "^\\d+$",
- "type": "string"
- },
- "maxItems": 50,
- "type": "array"
- },
- "type": {
- "const": "add_campaign_targeting",
- "type": "string"
- }
- },
- "required": [
- "type",
- "campaign_id"
- ],
- "type": "object"
- },
- {
- "description": "Stop targeting some of a campaign's locations and/or languages",
- "properties": {
- "campaign_id": {
- "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "language_ids": {
- "default": [],
- "items": {
- "pattern": "^\\d+$",
- "type": "string"
- },
- "maxItems": 20,
- "type": "array"
- },
- "location_ids": {
- "default": [],
- "items": {
- "pattern": "^\\d+$",
- "type": "string"
- },
- "maxItems": 50,
- "type": "array"
- },
- "type": {
- "const": "remove_campaign_targeting",
- "type": "string"
- }
- },
- "required": [
- "type",
- "campaign_id"
- ],
- "type": "object"
- },
- {
- "description": "Choose whether a campaign shows to people in its locations only, or also to people interested in them",
- "properties": {
- "campaign_id": {
- "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "presence_only": {
- "description": "true: only people IN the locations; false: also people interested in them",
- "type": "boolean"
- },
- "type": {
- "const": "set_location_mode",
- "type": "string"
- }
- },
- "required": [
- "type",
- "campaign_id",
- "presence_only"
- ],
- "type": "object"
- },
- {
- "description": "Switch ONE campaign's bid strategy. A campaign on a shared (portfolio) strategy moves off it onto its own; the other campaigns on the shared strategy keep it. To change the shared strategy for every campaign on it, use set_shared_bid_strategy. If the user didn't say which they mean, ask. Google re-learns after a switch, so performance can wobble for a week or two",
- "properties": {
- "campaign_id": {
- "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "max_cpc_ceiling": {
- "description": "MAXIMIZE_CLICKS only: the most Google may bid per click",
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "number"
- },
- "strategy": {
- "enum": [
- "MANUAL_CPC",
- "MAXIMIZE_CLICKS",
- "MAXIMIZE_CONVERSIONS"
- ],
- "type": "string"
- },
- "target_cpa": {
- "description": "MAXIMIZE_CONVERSIONS only: target cost per conversion",
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "number"
- },
- "type": {
- "const": "set_bidding_strategy",
- "type": "string"
- }
- },
- "required": [
- "type",
- "campaign_id",
- "strategy"
- ],
- "type": "object"
- },
- {
- "description": "Change a shared (portfolio) bid strategy's targets. This changes EVERY campaign on it, which the proposal lists. Its type can't be changed; to move one campaign to another strategy, use set_bidding_strategy",
- "properties": {
- "bidding_strategy_id": {
- "description": "Shared (portfolio) strategy id: bidding_strategy.id from run_gaql, or the id at the end of campaign.bidding_strategy",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "max_cpc_ceiling": {
- "description": "The most Google may bid per click",
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "number"
- },
- "target_cpa": {
- "description": "Target cost per conversion (TARGET_CPA and MAXIMIZE_CONVERSIONS strategies)",
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "number"
- },
- "target_roas": {
- "description": "Target return on ad spend as a ratio, e.g. 4 = 400% (TARGET_ROAS and MAXIMIZE_CONVERSION_VALUE)",
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "number"
- },
- "type": {
- "const": "set_shared_bid_strategy",
- "type": "string"
- }
- },
- "required": [
- "type",
- "bidding_strategy_id"
- ],
- "type": "object"
- },
- {
- "description": "Create a shared (portfolio) bid strategy, optionally moving campaigns onto it. Undo moves those campaigns back and removes it",
- "properties": {
- "campaign_ids": {
- "default": [],
- "description": "Campaigns to move onto it in the same step (each leaves its current strategy)",
- "items": {
- "pattern": "^\\d+$",
- "type": "string"
- },
- "maxItems": 50,
- "type": "array"
- },
- "max_cpc_ceiling": {
- "description": "The most Google may bid per click",
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "number"
- },
- "name": {
- "description": "Name for the shared strategy; must not match an existing one",
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "strategy": {
- "enum": [
- "MAXIMIZE_CLICKS",
- "MAXIMIZE_CONVERSIONS",
- "MAXIMIZE_CONVERSION_VALUE",
- "TARGET_CPA",
- "TARGET_ROAS"
- ],
- "type": "string"
- },
- "target_cpa": {
- "description": "Target cost per conversion: required for TARGET_CPA, optional for MAXIMIZE_CONVERSIONS",
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "number"
- },
- "target_roas": {
- "description": "Target return on ad spend as a ratio, e.g. 4 = 400%: required for TARGET_ROAS, optional for MAXIMIZE_CONVERSION_VALUE",
- "exclusiveMinimum": 0,
- "maximum": 1000,
- "type": "number"
- },
- "type": {
- "const": "create_shared_bid_strategy",
- "type": "string"
- }
- },
- "required": [
- "type",
- "name",
- "strategy"
- ],
- "type": "object"
- },
- {
- "description": "Set or clear a campaign's final URL suffix (tracking parameters on every ad click)",
- "properties": {
- "campaign_id": {
- "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "suffix": {
- "description": "Query string Google appends to every landing page in the campaign, e.g. \"utm_source=google&utm_medium=cpc&utm_term={keyword}\", or \"none\" to clear it",
- "maxLength": 1000,
- "type": "string"
- },
- "type": {
- "const": "set_url_suffix",
- "type": "string"
- }
- },
- "required": [
- "type",
- "campaign_id",
- "suffix"
- ],
- "type": "object"
- },
- {
- "description": "Create a conversion action to measure sign-ups, leads or purchases",
- "properties": {
- "category": {
- "description": "Conversion category, e.g. SIGNUP, PURCHASE, SUBMIT_LEAD_FORM, QUALIFIED_LEAD (see conversion_action.category in run_gaql)",
- "pattern": "^[A-Z_]+$",
- "type": "string"
- },
- "counting": {
- "default": "ONE_PER_CLICK",
- "description": "ONE_PER_CLICK for sign-ups and leads; MANY_PER_CLICK for purchases",
- "enum": [
- "ONE_PER_CLICK",
- "MANY_PER_CLICK"
- ],
- "type": "string"
- },
- "default_value": {
- "description": "Value per conversion when none is sent",
- "maximum": 1000000,
- "minimum": 0,
- "type": "number"
- },
- "name": {
- "maxLength": 100,
- "minLength": 1,
- "type": "string"
- },
- "primary": {
- "default": true,
- "description": "Primary actions count in Conversions and can steer bidding",
- "type": "boolean"
- },
- "source": {
- "default": "UPLOAD_CLICKS",
- "description": "UPLOAD_CLICKS: your server uploads ad click ids (no Google tag). WEBPAGE: Google gives you a tag to put on the page",
- "enum": [
- "UPLOAD_CLICKS",
- "WEBPAGE"
- ],
- "type": "string"
- },
- "type": {
- "const": "create_conversion_action",
- "type": "string"
- }
- },
- "required": [
- "type",
- "name",
- "category"
- ],
- "type": "object"
- },
- {
- "description": "Set how many conversions one ad click can produce for a conversion action",
- "properties": {
- "conversion_action_id": {
- "description": "conversion_action.id from run_gaql",
- "pattern": "^\\d+$",
- "type": "string"
- },
- "counting": {
- "enum": [
- "ONE_PER_CLICK",
- "MANY_PER_CLICK"
- ],
- "type": "string"
- },
- "type": {
- "const": "set_conversion_counting",
- "type": "string"
- }
- },
- "required": [
- "type",
- "conversion_action_id",
- "counting"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "description": "Block searches containing these words in one campaign",
+ "properties": {
+ "campaign_id": {
+ "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "keywords": {
+ "items": {
+ "properties": {
+ "match_type": {
+ "description": "PHRASE blocks any search containing the words in order; the usual choice",
+ "enum": [
+ "EXACT",
+ "PHRASE",
+ "BROAD"
+ ],
+ "type": "string"
+ },
+ "text": {
+ "description": "The search words to block, e.g. \"free\"",
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "text",
+ "match_type"
+ ],
+ "type": "object"
+ },
+ "maxItems": 50,
+ "minItems": 1,
+ "type": "array"
+ },
+ "type": {
+ "const": "add_negative_keywords",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "campaign_id",
+ "keywords"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Pause one keyword",
+ "properties": {
+ "ad_group_id": {
+ "description": "Ad group id, digits only (ad_group.id from run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "criterion_id": {
+ "description": "Keyword criterion id, digits only (ad_group_criterion.criterion_id from run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "type": {
+ "const": "pause_keyword",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "ad_group_id",
+ "criterion_id"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Re-enable one paused keyword",
+ "properties": {
+ "ad_group_id": {
+ "description": "Ad group id, digits only (ad_group.id from run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "criterion_id": {
+ "description": "Keyword criterion id, digits only (ad_group_criterion.criterion_id from run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "type": {
+ "const": "enable_keyword",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "ad_group_id",
+ "criterion_id"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Pause a whole campaign (stops all its spend)",
+ "properties": {
+ "campaign_id": {
+ "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "type": {
+ "const": "pause_campaign",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "campaign_id"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Turn a paused campaign back on. It starts spending again; the summary says how much",
+ "properties": {
+ "campaign_id": {
+ "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "type": {
+ "const": "enable_campaign",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "campaign_id"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Pause one ad group",
+ "properties": {
+ "ad_group_id": {
+ "description": "Ad group id, digits only (ad_group.id from run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "type": {
+ "const": "pause_ad_group",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "ad_group_id"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Re-enable one paused ad group",
+ "properties": {
+ "ad_group_id": {
+ "description": "Ad group id, digits only (ad_group.id from run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "type": {
+ "const": "enable_ad_group",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "ad_group_id"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Change a campaign's daily budget (not shared budgets)",
+ "properties": {
+ "amount": {
+ "description": "New average daily budget in the account's currency, e.g. 10 for $10.00/day (not micros)",
+ "exclusiveMinimum": 0,
+ "maximum": 1000000,
+ "type": "number"
+ },
+ "campaign_id": {
+ "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "type": {
+ "const": "set_daily_budget",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "campaign_id",
+ "amount"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Set the last day a campaign runs, so it stops spending on its own",
+ "properties": {
+ "campaign_id": {
+ "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "end_date": {
+ "anyOf": [
+ {
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
+ "type": "string"
+ },
+ {
+ "const": "none",
+ "type": "string"
+ }
+ ],
+ "description": "Last day the campaign runs, YYYY-MM-DD in the account's time zone (it stops after 23:59:59 that day), or \"none\" to remove the end date"
+ },
+ "type": {
+ "const": "set_end_date",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "campaign_id",
+ "end_date"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Build a new Search campaign with its ad groups, keywords, ads, targeting, negatives and sitelinks, in one step. It is created PAUSED: nothing spends until a separate enable_campaign",
+ "properties": {
+ "ad_groups": {
+ "items": {
+ "properties": {
+ "ads": {
+ "items": {
+ "description": "A responsive search ad",
+ "properties": {
+ "descriptions": {
+ "description": "2 to 4 descriptions, each at most 90 characters",
+ "items": {
+ "maxLength": 90,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 4,
+ "minItems": 2,
+ "type": "array"
+ },
+ "final_url": {
+ "description": "The landing page",
+ "maxLength": 2048,
+ "pattern": "^https?:\\/\\/",
+ "type": "string"
+ },
+ "headlines": {
+ "description": "3 to 15 headlines, each at most 30 characters",
+ "items": {
+ "maxLength": 30,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 15,
+ "minItems": 3,
+ "type": "array"
+ },
+ "path1": {
+ "description": "Display path part 1, at most 15 characters",
+ "maxLength": 15,
+ "minLength": 1,
+ "type": "string"
+ },
+ "path2": {
+ "description": "Display path part 2, at most 15 characters",
+ "maxLength": 15,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "headlines",
+ "descriptions",
+ "final_url"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "minItems": 1,
+ "type": "array"
+ },
+ "default_max_cpc": {
+ "description": "Default max cost per click for the ad group (required when the campaign uses manual CPC)",
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ },
+ "keywords": {
+ "items": {
+ "properties": {
+ "match_type": {
+ "description": "PHRASE matches searches containing the words in order; the usual choice",
+ "enum": [
+ "EXACT",
+ "PHRASE",
+ "BROAD"
+ ],
+ "type": "string"
+ },
+ "max_cpc": {
+ "description": "Max cost per click for this keyword in the account's currency (manual CPC only); omit to use the ad group's",
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ },
+ "text": {
+ "description": "The keyword, e.g. \"cleaning invoice template\"",
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "text",
+ "match_type"
+ ],
+ "type": "object"
+ },
+ "maxItems": 50,
+ "minItems": 1,
+ "type": "array"
+ },
+ "name": {
+ "maxLength": 255,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "keywords",
+ "ads"
+ ],
+ "type": "object"
+ },
+ "maxItems": 10,
+ "minItems": 1,
+ "type": "array"
+ },
+ "bidding": {
+ "default": "MANUAL_CPC",
+ "description": "MANUAL_CPC uses the ad group and keyword max CPCs; MAXIMIZE_CLICKS and MAXIMIZE_CONVERSIONS let Google bid within the budget",
+ "enum": [
+ "MANUAL_CPC",
+ "MAXIMIZE_CLICKS",
+ "MAXIMIZE_CONVERSIONS"
+ ],
+ "type": "string"
+ },
+ "daily_budget": {
+ "description": "Average daily budget in the account's currency, e.g. 20 for $20.00/day",
+ "exclusiveMinimum": 0,
+ "maximum": 1000000,
+ "type": "number"
+ },
+ "end_date": {
+ "description": "Last day the campaign runs, YYYY-MM-DD",
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
+ "type": "string"
+ },
+ "language_ids": {
+ "default": [
+ "1000"
+ ],
+ "description": "Google language ids, e.g. 1000 English, 1003 Spanish",
+ "items": {
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "maxItems": 20,
+ "minItems": 1,
+ "type": "array"
+ },
+ "location_ids": {
+ "default": [
+ "2840"
+ ],
+ "description": "Google geo target ids, e.g. 2840 United States, 2826 United Kingdom, 2124 Canada (look others up in geo_target_constant)",
+ "items": {
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "maxItems": 50,
+ "minItems": 1,
+ "type": "array"
+ },
+ "max_cpc_ceiling": {
+ "description": "MAXIMIZE_CLICKS only: the most Google may bid per click",
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ },
+ "name": {
+ "description": "Campaign name; must not match an existing campaign",
+ "maxLength": 255,
+ "minLength": 1,
+ "type": "string"
+ },
+ "negative_keywords": {
+ "default": [],
+ "description": "Searches to block across the campaign",
+ "items": {
+ "properties": {
+ "match_type": {
+ "enum": [
+ "EXACT",
+ "PHRASE",
+ "BROAD"
+ ],
+ "type": "string"
+ },
+ "text": {
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "text",
+ "match_type"
+ ],
+ "type": "object"
+ },
+ "maxItems": 200,
+ "type": "array"
+ },
+ "presence_only": {
+ "default": true,
+ "description": "Show ads only to people IN the locations (true), not merely interested in them",
+ "type": "boolean"
+ },
+ "search_partners": {
+ "default": false,
+ "description": "Also show on Google's search partner sites",
+ "type": "boolean"
+ },
+ "sitelinks": {
+ "default": [],
+ "items": {
+ "properties": {
+ "description1": {
+ "description": "At most 35 characters; give both descriptions or neither",
+ "maxLength": 35,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description2": {
+ "maxLength": 35,
+ "minLength": 1,
+ "type": "string"
+ },
+ "text": {
+ "description": "Link text, at most 25 characters",
+ "maxLength": 25,
+ "minLength": 1,
+ "type": "string"
+ },
+ "url": {
+ "maxLength": 2048,
+ "pattern": "^https?:\\/\\/",
+ "type": "string"
+ }
+ },
+ "required": [
+ "text",
+ "url"
+ ],
+ "type": "object"
+ },
+ "maxItems": 8,
+ "type": "array"
+ },
+ "type": {
+ "const": "create_campaign",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "name",
+ "daily_budget",
+ "ad_groups"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Build a new Display campaign (image ads across Google's Display Network of sites and apps) with ad groups and responsive display ads. Google's optimized targeting finds the audience. It is created PAUSED: nothing spends until a separate enable_campaign",
+ "properties": {
+ "ad_groups": {
+ "items": {
+ "properties": {
+ "ads": {
+ "items": {
+ "description": "A responsive display ad: Google assembles ads from these headlines, descriptions and images",
+ "properties": {
+ "business_name": {
+ "description": "The advertiser's name, at most 25 characters",
+ "maxLength": 25,
+ "minLength": 1,
+ "type": "string"
+ },
+ "descriptions": {
+ "description": "1 to 5 descriptions, each at most 90 characters",
+ "items": {
+ "maxLength": 90,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 5,
+ "minItems": 1,
+ "type": "array"
+ },
+ "final_url": {
+ "description": "The landing page",
+ "maxLength": 2048,
+ "pattern": "^https?:\\/\\/",
+ "type": "string"
+ },
+ "headlines": {
+ "description": "1 to 5 short headlines, each at most 30 characters",
+ "items": {
+ "maxLength": 30,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 5,
+ "minItems": 1,
+ "type": "array"
+ },
+ "logo_images": {
+ "default": [],
+ "description": "0 to 5 landscape logos, 4:1 (e.g. 1200×300, at least 512×128)",
+ "items": {
+ "description": "An https URL of a PNG, JPEG or GIF (at most 5120 KB), or the id of an image asset already in the account (asset.id from run_gaql WHERE asset.type = 'IMAGE')",
+ "maxLength": 2048,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 5,
+ "minItems": 0,
+ "type": "array"
+ },
+ "long_headline": {
+ "description": "One long headline, at most 90 characters",
+ "maxLength": 90,
+ "minLength": 1,
+ "type": "string"
+ },
+ "marketing_images": {
+ "description": "1 to 15 landscape images, 1.91:1 (e.g. 1200×628, at least 600×314)",
+ "items": {
+ "description": "An https URL of a PNG, JPEG or GIF (at most 5120 KB), or the id of an image asset already in the account (asset.id from run_gaql WHERE asset.type = 'IMAGE')",
+ "maxLength": 2048,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 15,
+ "minItems": 1,
+ "type": "array"
+ },
+ "square_logo_images": {
+ "default": [],
+ "description": "0 to 5 square logos, 1:1 (e.g. 1200×1200, at least 128×128)",
+ "items": {
+ "description": "An https URL of a PNG, JPEG or GIF (at most 5120 KB), or the id of an image asset already in the account (asset.id from run_gaql WHERE asset.type = 'IMAGE')",
+ "maxLength": 2048,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 5,
+ "minItems": 0,
+ "type": "array"
+ },
+ "square_marketing_images": {
+ "description": "1 to 15 square images, 1:1 (e.g. 1200×1200, at least 300×300)",
+ "items": {
+ "description": "An https URL of a PNG, JPEG or GIF (at most 5120 KB), or the id of an image asset already in the account (asset.id from run_gaql WHERE asset.type = 'IMAGE')",
+ "maxLength": 2048,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 15,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "headlines",
+ "long_headline",
+ "descriptions",
+ "business_name",
+ "final_url",
+ "marketing_images",
+ "square_marketing_images"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "minItems": 1,
+ "type": "array"
+ },
+ "default_max_cpc": {
+ "description": "Default max cost per click (required when the campaign uses manual CPC)",
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ },
+ "name": {
+ "maxLength": 255,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "ads"
+ ],
+ "type": "object"
+ },
+ "maxItems": 5,
+ "minItems": 1,
+ "type": "array"
+ },
+ "bidding": {
+ "default": "MAXIMIZE_CLICKS",
+ "description": "MANUAL_CPC uses the ad groups' max CPCs; MAXIMIZE_CLICKS and MAXIMIZE_CONVERSIONS let Google bid within the budget",
+ "enum": [
+ "MANUAL_CPC",
+ "MAXIMIZE_CLICKS",
+ "MAXIMIZE_CONVERSIONS"
+ ],
+ "type": "string"
+ },
+ "daily_budget": {
+ "description": "Average daily budget in the account's currency, e.g. 20 for $20.00/day",
+ "exclusiveMinimum": 0,
+ "maximum": 1000000,
+ "type": "number"
+ },
+ "end_date": {
+ "description": "Last day the campaign runs, YYYY-MM-DD",
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
+ "type": "string"
+ },
+ "language_ids": {
+ "default": [
+ "1000"
+ ],
+ "description": "Google language ids, e.g. 1000 English",
+ "items": {
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "maxItems": 20,
+ "minItems": 1,
+ "type": "array"
+ },
+ "location_ids": {
+ "default": [
+ "2840"
+ ],
+ "description": "Google geo target ids, e.g. 2840 United States",
+ "items": {
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "maxItems": 50,
+ "minItems": 1,
+ "type": "array"
+ },
+ "max_cpc_ceiling": {
+ "description": "MAXIMIZE_CLICKS only: the most Google may bid per click",
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ },
+ "name": {
+ "description": "Campaign name; must not match an existing campaign",
+ "maxLength": 255,
+ "minLength": 1,
+ "type": "string"
+ },
+ "presence_only": {
+ "default": true,
+ "description": "Show ads only to people IN the locations (true), not merely interested in them",
+ "type": "boolean"
+ },
+ "type": {
+ "const": "create_display_campaign",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "name",
+ "daily_budget",
+ "ad_groups"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Build a new Demand Gen campaign with YouTube video ads, which is how to advertise on YouTube through the API (Google doesn't allow creating Video campaigns there). It is created PAUSED: nothing spends until a separate enable_campaign",
+ "properties": {
+ "ad_groups": {
+ "items": {
+ "properties": {
+ "ads": {
+ "items": {
+ "description": "A Demand Gen video ad: runs on YouTube (in-stream, in-feed and Shorts), Discover and Gmail",
+ "properties": {
+ "business_name": {
+ "description": "The advertiser's name, at most 25 characters",
+ "maxLength": 25,
+ "minLength": 1,
+ "type": "string"
+ },
+ "descriptions": {
+ "description": "1 to 5 descriptions, each at most 90 characters",
+ "items": {
+ "maxLength": 90,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 5,
+ "minItems": 1,
+ "type": "array"
+ },
+ "final_url": {
+ "description": "The landing page",
+ "maxLength": 2048,
+ "pattern": "^https?:\\/\\/",
+ "type": "string"
+ },
+ "headlines": {
+ "description": "1 to 5 headlines, each at most 40 characters",
+ "items": {
+ "maxLength": 40,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 5,
+ "minItems": 1,
+ "type": "array"
+ },
+ "logo_image": {
+ "description": "A square 1:1 logo (e.g. 1200×1200, at least 128×128): an https URL, or an image asset id from the account",
+ "maxLength": 2048,
+ "minLength": 1,
+ "type": "string"
+ },
+ "long_headlines": {
+ "description": "1 to 5 long headlines, each at most 90 characters",
+ "items": {
+ "maxLength": 90,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 5,
+ "minItems": 1,
+ "type": "array"
+ },
+ "videos": {
+ "description": "1 to 5 YouTube videos",
+ "items": {
+ "description": "A YouTube video id (e.g. dQw4w9WgXcQ) or its youtube.com / youtu.be URL. The video must be public or unlisted",
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 5,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "videos",
+ "headlines",
+ "long_headlines",
+ "descriptions",
+ "business_name",
+ "logo_image",
+ "final_url"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "minItems": 1,
+ "type": "array"
+ },
+ "language_ids": {
+ "default": [
+ "1000"
+ ],
+ "description": "Google language ids, e.g. 1000 English",
+ "items": {
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "maxItems": 20,
+ "minItems": 1,
+ "type": "array"
+ },
+ "location_ids": {
+ "default": [
+ "2840"
+ ],
+ "description": "Google geo target ids, e.g. 2840 United States (Demand Gen targets locations per ad group, not per campaign)",
+ "items": {
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "maxItems": 50,
+ "minItems": 1,
+ "type": "array"
+ },
+ "name": {
+ "maxLength": 255,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "ads"
+ ],
+ "type": "object"
+ },
+ "maxItems": 5,
+ "minItems": 1,
+ "type": "array"
+ },
+ "bidding": {
+ "default": "MAXIMIZE_CONVERSIONS",
+ "description": "Demand Gen bids automatically: MAXIMIZE_CONVERSIONS (needs conversion tracking) or MAXIMIZE_CLICKS",
+ "enum": [
+ "MAXIMIZE_CONVERSIONS",
+ "MAXIMIZE_CLICKS"
+ ],
+ "type": "string"
+ },
+ "daily_budget": {
+ "description": "Average daily budget in the account's currency, e.g. 20 for $20.00/day",
+ "exclusiveMinimum": 0,
+ "maximum": 1000000,
+ "type": "number"
+ },
+ "end_date": {
+ "description": "Last day the campaign runs, YYYY-MM-DD",
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
+ "type": "string"
+ },
+ "name": {
+ "description": "Campaign name; must not match an existing campaign",
+ "maxLength": 255,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": {
+ "const": "create_demand_gen_campaign",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "name",
+ "daily_budget",
+ "ad_groups"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Build a new Performance Max campaign: one budget, Google places ads across Search, YouTube, Display, Discover, Gmail and Maps from the asset groups' text, images and videos. No shopping feed (non-retail). It is created PAUSED: nothing spends until a separate enable_campaign",
+ "properties": {
+ "asset_groups": {
+ "items": {
+ "description": "An asset group: the headlines, descriptions, images and videos Google combines into ads on every channel",
+ "properties": {
+ "descriptions": {
+ "description": "2 to 5 descriptions, each at most 90 characters; Google recommends one of 60 or fewer",
+ "items": {
+ "maxLength": 90,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 5,
+ "minItems": 2,
+ "type": "array"
+ },
+ "final_url": {
+ "description": "The landing page (Google may also send people to other pages on the same site)",
+ "maxLength": 2048,
+ "pattern": "^https?:\\/\\/",
+ "type": "string"
+ },
+ "headlines": {
+ "description": "3 to 15 headlines, each at most 30 characters",
+ "items": {
+ "maxLength": 30,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 15,
+ "minItems": 3,
+ "type": "array"
+ },
+ "long_headlines": {
+ "description": "1 to 5 long headlines, each at most 90 characters",
+ "items": {
+ "maxLength": 90,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 5,
+ "minItems": 1,
+ "type": "array"
+ },
+ "marketing_images": {
+ "description": "1 to 20 landscape images, 1.91:1 (e.g. 1200×628)",
+ "items": {
+ "description": "An https URL of a PNG, JPEG or GIF (at most 5120 KB), or the id of an image asset already in the account (asset.id from run_gaql WHERE asset.type = 'IMAGE')",
+ "maxLength": 2048,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "minItems": 1,
+ "type": "array"
+ },
+ "name": {
+ "maxLength": 255,
+ "minLength": 1,
+ "type": "string"
+ },
+ "portrait_marketing_images": {
+ "default": [],
+ "description": "0 to 20 portrait images, 4:5 (e.g. 960×1200)",
+ "items": {
+ "description": "An https URL of a PNG, JPEG or GIF (at most 5120 KB), or the id of an image asset already in the account (asset.id from run_gaql WHERE asset.type = 'IMAGE')",
+ "maxLength": 2048,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "minItems": 0,
+ "type": "array"
+ },
+ "square_marketing_images": {
+ "description": "1 to 20 square images, 1:1 (e.g. 1200×1200)",
+ "items": {
+ "description": "An https URL of a PNG, JPEG or GIF (at most 5120 KB), or the id of an image asset already in the account (asset.id from run_gaql WHERE asset.type = 'IMAGE')",
+ "maxLength": 2048,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "minItems": 1,
+ "type": "array"
+ },
+ "videos": {
+ "default": [],
+ "description": "0 to 5 YouTube videos; without one, Google may auto-generate a video from the images",
+ "items": {
+ "description": "A YouTube video id (e.g. dQw4w9WgXcQ) or its youtube.com / youtu.be URL. The video must be public or unlisted",
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 5,
+ "type": "array"
+ }
+ },
+ "required": [
+ "name",
+ "final_url",
+ "headlines",
+ "long_headlines",
+ "descriptions",
+ "marketing_images",
+ "square_marketing_images"
+ ],
+ "type": "object"
+ },
+ "maxItems": 5,
+ "minItems": 1,
+ "type": "array"
+ },
+ "bidding": {
+ "default": "MAXIMIZE_CONVERSIONS",
+ "description": "Performance Max bids for conversions only: MAXIMIZE_CONVERSIONS, or MAXIMIZE_CONVERSION_VALUE when conversions carry values",
+ "enum": [
+ "MAXIMIZE_CONVERSIONS",
+ "MAXIMIZE_CONVERSION_VALUE"
+ ],
+ "type": "string"
+ },
+ "business_name": {
+ "description": "The advertiser's name, at most 25 characters (linked to the campaign, per Google's brand guidelines)",
+ "maxLength": 25,
+ "minLength": 1,
+ "type": "string"
+ },
+ "daily_budget": {
+ "description": "Average daily budget in the account's currency, e.g. 20 for $20.00/day",
+ "exclusiveMinimum": 0,
+ "maximum": 1000000,
+ "type": "number"
+ },
+ "end_date": {
+ "description": "Last day the campaign runs, YYYY-MM-DD",
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
+ "type": "string"
+ },
+ "language_ids": {
+ "default": [
+ "1000"
+ ],
+ "description": "Google language ids, e.g. 1000 English",
+ "items": {
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "maxItems": 20,
+ "minItems": 1,
+ "type": "array"
+ },
+ "location_ids": {
+ "default": [
+ "2840"
+ ],
+ "description": "Google geo target ids, e.g. 2840 United States",
+ "items": {
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "maxItems": 50,
+ "minItems": 1,
+ "type": "array"
+ },
+ "logo_images": {
+ "description": "1 to 5 square logos, 1:1 (e.g. 1200×1200, at least 128×128), linked to the campaign",
+ "items": {
+ "description": "An https URL of a PNG, JPEG or GIF (at most 5120 KB), or the id of an image asset already in the account (asset.id from run_gaql WHERE asset.type = 'IMAGE')",
+ "maxLength": 2048,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 5,
+ "minItems": 1,
+ "type": "array"
+ },
+ "name": {
+ "description": "Campaign name; must not match an existing campaign",
+ "maxLength": 255,
+ "minLength": 1,
+ "type": "string"
+ },
+ "target_cpa": {
+ "description": "MAXIMIZE_CONVERSIONS only: target cost per conversion",
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ },
+ "type": {
+ "const": "create_performance_max_campaign",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "name",
+ "daily_budget",
+ "business_name",
+ "logo_images",
+ "asset_groups"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Add an ad group, with its keywords and ads, to an existing Search campaign",
+ "properties": {
+ "ad_group": {
+ "properties": {
+ "ads": {
+ "items": {
+ "description": "A responsive search ad",
+ "properties": {
+ "descriptions": {
+ "description": "2 to 4 descriptions, each at most 90 characters",
+ "items": {
+ "maxLength": 90,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 4,
+ "minItems": 2,
+ "type": "array"
+ },
+ "final_url": {
+ "description": "The landing page",
+ "maxLength": 2048,
+ "pattern": "^https?:\\/\\/",
+ "type": "string"
+ },
+ "headlines": {
+ "description": "3 to 15 headlines, each at most 30 characters",
+ "items": {
+ "maxLength": 30,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 15,
+ "minItems": 3,
+ "type": "array"
+ },
+ "path1": {
+ "description": "Display path part 1, at most 15 characters",
+ "maxLength": 15,
+ "minLength": 1,
+ "type": "string"
+ },
+ "path2": {
+ "description": "Display path part 2, at most 15 characters",
+ "maxLength": 15,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "headlines",
+ "descriptions",
+ "final_url"
+ ],
+ "type": "object"
+ },
+ "maxItems": 3,
+ "minItems": 1,
+ "type": "array"
+ },
+ "default_max_cpc": {
+ "description": "Default max cost per click for the ad group (required when the campaign uses manual CPC)",
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ },
+ "keywords": {
+ "items": {
+ "properties": {
+ "match_type": {
+ "description": "PHRASE matches searches containing the words in order; the usual choice",
+ "enum": [
+ "EXACT",
+ "PHRASE",
+ "BROAD"
+ ],
+ "type": "string"
+ },
+ "max_cpc": {
+ "description": "Max cost per click for this keyword in the account's currency (manual CPC only); omit to use the ad group's",
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ },
+ "text": {
+ "description": "The keyword, e.g. \"cleaning invoice template\"",
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "text",
+ "match_type"
+ ],
+ "type": "object"
+ },
+ "maxItems": 50,
+ "minItems": 1,
+ "type": "array"
+ },
+ "name": {
+ "maxLength": 255,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "keywords",
+ "ads"
+ ],
+ "type": "object"
+ },
+ "campaign_id": {
+ "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "type": {
+ "const": "add_ad_group",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "campaign_id",
+ "ad_group"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Add keywords to an existing ad group",
+ "properties": {
+ "ad_group_id": {
+ "description": "Ad group id, digits only (ad_group.id from run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "keywords": {
+ "items": {
+ "properties": {
+ "match_type": {
+ "description": "PHRASE matches searches containing the words in order; the usual choice",
+ "enum": [
+ "EXACT",
+ "PHRASE",
+ "BROAD"
+ ],
+ "type": "string"
+ },
+ "max_cpc": {
+ "description": "Max cost per click for this keyword in the account's currency (manual CPC only); omit to use the ad group's",
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ },
+ "text": {
+ "description": "The keyword, e.g. \"cleaning invoice template\"",
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "text",
+ "match_type"
+ ],
+ "type": "object"
+ },
+ "maxItems": 50,
+ "minItems": 1,
+ "type": "array"
+ },
+ "type": {
+ "const": "add_keywords",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "ad_group_id",
+ "keywords"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Add a responsive search ad to an existing ad group",
+ "properties": {
+ "ad": {
+ "description": "A responsive search ad",
+ "properties": {
+ "descriptions": {
+ "description": "2 to 4 descriptions, each at most 90 characters",
+ "items": {
+ "maxLength": 90,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 4,
+ "minItems": 2,
+ "type": "array"
+ },
+ "final_url": {
+ "description": "The landing page",
+ "maxLength": 2048,
+ "pattern": "^https?:\\/\\/",
+ "type": "string"
+ },
+ "headlines": {
+ "description": "3 to 15 headlines, each at most 30 characters",
+ "items": {
+ "maxLength": 30,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 15,
+ "minItems": 3,
+ "type": "array"
+ },
+ "path1": {
+ "description": "Display path part 1, at most 15 characters",
+ "maxLength": 15,
+ "minLength": 1,
+ "type": "string"
+ },
+ "path2": {
+ "description": "Display path part 2, at most 15 characters",
+ "maxLength": 15,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "headlines",
+ "descriptions",
+ "final_url"
+ ],
+ "type": "object"
+ },
+ "ad_group_id": {
+ "description": "Ad group id, digits only (ad_group.id from run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "type": {
+ "const": "add_responsive_search_ad",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "ad_group_id",
+ "ad"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Add sitelinks to a campaign",
+ "properties": {
+ "campaign_id": {
+ "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "sitelinks": {
+ "items": {
+ "properties": {
+ "description1": {
+ "description": "At most 35 characters; give both descriptions or neither",
+ "maxLength": 35,
+ "minLength": 1,
+ "type": "string"
+ },
+ "description2": {
+ "maxLength": 35,
+ "minLength": 1,
+ "type": "string"
+ },
+ "text": {
+ "description": "Link text, at most 25 characters",
+ "maxLength": 25,
+ "minLength": 1,
+ "type": "string"
+ },
+ "url": {
+ "maxLength": 2048,
+ "pattern": "^https?:\\/\\/",
+ "type": "string"
+ }
+ },
+ "required": [
+ "text",
+ "url"
+ ],
+ "type": "object"
+ },
+ "maxItems": 8,
+ "minItems": 1,
+ "type": "array"
+ },
+ "type": {
+ "const": "add_sitelinks",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "campaign_id",
+ "sitelinks"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Make a campaign count and bid on ONE conversion category only (e.g. SIGNUP), so another product's or step's conversions don't steer it",
+ "properties": {
+ "campaign_id": {
+ "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "category": {
+ "description": "Conversion category, e.g. SIGNUP, PURCHASE, SUBMIT_LEAD_FORM, QUALIFIED_LEAD (see conversion_action.category in run_gaql)",
+ "pattern": "^[A-Z_]+$",
+ "type": "string"
+ },
+ "type": {
+ "const": "set_conversion_goal",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "campaign_id",
+ "category"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Change one keyword's max CPC (manual CPC campaigns)",
+ "properties": {
+ "ad_group_id": {
+ "description": "Ad group id, digits only (ad_group.id from run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "criterion_id": {
+ "description": "Keyword criterion id, digits only (ad_group_criterion.criterion_id from run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "max_cpc": {
+ "anyOf": [
+ {
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "New max cost per click for this keyword, or null to clear it so the keyword uses the ad group's bid"
+ },
+ "type": {
+ "const": "set_keyword_bid",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "ad_group_id",
+ "criterion_id",
+ "max_cpc"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Change an ad group's default max CPC, which its keywords use unless they have their own",
+ "properties": {
+ "ad_group_id": {
+ "description": "Ad group id, digits only (ad_group.id from run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "max_cpc": {
+ "description": "New default max cost per click for the ad group",
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ },
+ "type": {
+ "const": "set_ad_group_bid",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "ad_group_id",
+ "max_cpc"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Pause one ad",
+ "properties": {
+ "ad_group_id": {
+ "description": "Ad group id, digits only (ad_group.id from run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "ad_id": {
+ "description": "Ad id, digits only (ad_group_ad.ad.id from run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "type": {
+ "const": "pause_ad",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "ad_group_id",
+ "ad_id"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Re-enable one paused ad",
+ "properties": {
+ "ad_group_id": {
+ "description": "Ad group id, digits only (ad_group.id from run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "ad_id": {
+ "description": "Ad id, digits only (ad_group_ad.ad.id from run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "type": {
+ "const": "enable_ad",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "ad_group_id",
+ "ad_id"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Add locations and/or languages a campaign targets",
+ "properties": {
+ "campaign_id": {
+ "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "language_ids": {
+ "default": [],
+ "description": "Language ids to add, e.g. 1000 English",
+ "items": {
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "location_ids": {
+ "default": [],
+ "description": "Geo target ids to add, e.g. 2840 United States",
+ "items": {
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "maxItems": 50,
+ "type": "array"
+ },
+ "type": {
+ "const": "add_campaign_targeting",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "campaign_id"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Stop targeting some of a campaign's locations and/or languages",
+ "properties": {
+ "campaign_id": {
+ "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "language_ids": {
+ "default": [],
+ "items": {
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ },
+ "location_ids": {
+ "default": [],
+ "items": {
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "maxItems": 50,
+ "type": "array"
+ },
+ "type": {
+ "const": "remove_campaign_targeting",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "campaign_id"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Choose whether a campaign shows to people in its locations only, or also to people interested in them",
+ "properties": {
+ "campaign_id": {
+ "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "presence_only": {
+ "description": "true: only people IN the locations; false: also people interested in them",
+ "type": "boolean"
+ },
+ "type": {
+ "const": "set_location_mode",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "campaign_id",
+ "presence_only"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Switch ONE campaign's bid strategy. A campaign on a shared (portfolio) strategy moves off it onto its own; the other campaigns on the shared strategy keep it. To change the shared strategy for every campaign on it, use set_shared_bid_strategy. If the user didn't say which they mean, ask. Google re-learns after a switch, so performance can wobble for a week or two",
+ "properties": {
+ "campaign_id": {
+ "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "max_cpc_ceiling": {
+ "description": "MAXIMIZE_CLICKS only: the most Google may bid per click",
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ },
+ "strategy": {
+ "enum": [
+ "MANUAL_CPC",
+ "MAXIMIZE_CLICKS",
+ "MAXIMIZE_CONVERSIONS"
+ ],
+ "type": "string"
+ },
+ "target_cpa": {
+ "description": "MAXIMIZE_CONVERSIONS only: target cost per conversion",
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ },
+ "type": {
+ "const": "set_bidding_strategy",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "campaign_id",
+ "strategy"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Change a shared (portfolio) bid strategy's targets. This changes EVERY campaign on it, which the proposal lists. Its type can't be changed; to move one campaign to another strategy, use set_bidding_strategy",
+ "properties": {
+ "bidding_strategy_id": {
+ "description": "Shared (portfolio) strategy id: bidding_strategy.id from run_gaql, or the id at the end of campaign.bidding_strategy",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "max_cpc_ceiling": {
+ "description": "The most Google may bid per click",
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ },
+ "target_cpa": {
+ "description": "Target cost per conversion (TARGET_CPA and MAXIMIZE_CONVERSIONS strategies)",
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ },
+ "target_roas": {
+ "description": "Target return on ad spend as a ratio, e.g. 4 = 400% (TARGET_ROAS and MAXIMIZE_CONVERSION_VALUE)",
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ },
+ "type": {
+ "const": "set_shared_bid_strategy",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "bidding_strategy_id"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Create a shared (portfolio) bid strategy, optionally moving campaigns onto it. Undo moves those campaigns back and removes it",
+ "properties": {
+ "campaign_ids": {
+ "default": [],
+ "description": "Campaigns to move onto it in the same step (each leaves its current strategy)",
+ "items": {
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "maxItems": 50,
+ "type": "array"
+ },
+ "max_cpc_ceiling": {
+ "description": "The most Google may bid per click",
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ },
+ "name": {
+ "description": "Name for the shared strategy; must not match an existing one",
+ "maxLength": 255,
+ "minLength": 1,
+ "type": "string"
+ },
+ "strategy": {
+ "enum": [
+ "MAXIMIZE_CLICKS",
+ "MAXIMIZE_CONVERSIONS",
+ "MAXIMIZE_CONVERSION_VALUE",
+ "TARGET_CPA",
+ "TARGET_ROAS"
+ ],
+ "type": "string"
+ },
+ "target_cpa": {
+ "description": "Target cost per conversion: required for TARGET_CPA, optional for MAXIMIZE_CONVERSIONS",
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ },
+ "target_roas": {
+ "description": "Target return on ad spend as a ratio, e.g. 4 = 400%: required for TARGET_ROAS, optional for MAXIMIZE_CONVERSION_VALUE",
+ "exclusiveMinimum": 0,
+ "maximum": 1000,
+ "type": "number"
+ },
+ "type": {
+ "const": "create_shared_bid_strategy",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "name",
+ "strategy"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Set or clear a campaign's final URL suffix (tracking parameters on every ad click)",
+ "properties": {
+ "campaign_id": {
+ "description": "Campaign id, digits only (campaign_id from account_overview or run_gaql)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "suffix": {
+ "description": "Query string Google appends to every landing page in the campaign, e.g. \"utm_source=google&utm_medium=cpc&utm_term={keyword}\", or \"none\" to clear it",
+ "maxLength": 1000,
+ "type": "string"
+ },
+ "type": {
+ "const": "set_url_suffix",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "campaign_id",
+ "suffix"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Create a conversion action to measure sign-ups, leads or purchases",
+ "properties": {
+ "category": {
+ "description": "Conversion category, e.g. SIGNUP, PURCHASE, SUBMIT_LEAD_FORM, QUALIFIED_LEAD (see conversion_action.category in run_gaql)",
+ "pattern": "^[A-Z_]+$",
+ "type": "string"
+ },
+ "counting": {
+ "default": "ONE_PER_CLICK",
+ "description": "ONE_PER_CLICK for sign-ups and leads; MANY_PER_CLICK for purchases",
+ "enum": [
+ "ONE_PER_CLICK",
+ "MANY_PER_CLICK"
+ ],
+ "type": "string"
+ },
+ "default_value": {
+ "description": "Value per conversion when none is sent",
+ "maximum": 1000000,
+ "minimum": 0,
+ "type": "number"
+ },
+ "name": {
+ "maxLength": 100,
+ "minLength": 1,
+ "type": "string"
+ },
+ "primary": {
+ "default": true,
+ "description": "Primary actions count in Conversions and can steer bidding",
+ "type": "boolean"
+ },
+ "source": {
+ "default": "UPLOAD_CLICKS",
+ "description": "UPLOAD_CLICKS: your server uploads ad click ids (no Google tag). WEBPAGE: Google gives you a tag to put on the page",
+ "enum": [
+ "UPLOAD_CLICKS",
+ "WEBPAGE"
+ ],
+ "type": "string"
+ },
+ "type": {
+ "const": "create_conversion_action",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "name",
+ "category"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Set how many conversions one ad click can produce for a conversion action",
+ "properties": {
+ "conversion_action_id": {
+ "description": "conversion_action.id from run_gaql",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "counting": {
+ "enum": [
+ "ONE_PER_CLICK",
+ "MANY_PER_CLICK"
+ ],
+ "type": "string"
+ },
+ "type": {
+ "const": "set_conversion_counting",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "conversion_action_id",
+ "counting"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "Import a GA4 key event into Google Ads as a conversion action, so campaigns can count and bid on it. The GA4 property must be linked to this account",
+ "properties": {
+ "event_name": {
+ "description": "The GA4 key event, e.g. generate_lead, purchase, sign_up",
+ "pattern": "^[A-Za-z][A-Za-z0-9_]{0,39}$",
+ "type": "string"
+ },
+ "primary": {
+ "default": true,
+ "description": "Primary actions count in Conversions and can steer bidding",
+ "type": "boolean"
+ },
+ "property_id": {
+ "description": "GA4 property id (from analytics_properties)",
+ "pattern": "^\\d+$",
+ "type": "string"
+ },
+ "type": {
+ "const": "import_ga4_key_event",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "property_id",
+ "event_name"
+ ],
+ "type": "object"
+ }
+]