{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/google-ads/json-schema/google-ads-google-ads-googleads-v25-services-generate-recommendations-response-schema.json",
  "title": "GoogleAdsGoogleadsV25Services__GenerateRecommendationsResponse",
  "description": "Response message for RecommendationService.GenerateRecommendations.",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/google-ads-customers-recommendations-api-openapi.yml#/components/schemas/GoogleAdsGoogleadsV25Services__GenerateRecommendationsResponse",
  "type": "object",
  "properties": {
    "recommendations": {
      "description": "List of generated recommendations from the passed in set of requested recommendation_types. If there isn't sufficient data to generate a recommendation for the requested recommendation_types, the result set won't contain a recommendation for that type.",
      "items": {
        "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources__Recommendation"
      },
      "type": "array"
    }
  },
  "$defs": {
    "GoogleAdsGoogleadsV25Common_PolicyTopicConstraint_CountryConstraint": {
      "type": "object",
      "properties": {
        "countryCriterion": {
          "description": "Geo target constant resource name of the country in which serving is constrained.",
          "type": "string"
        }
      },
      "description": "Indicates that a resource's ability to serve in a particular country is constrained."
    },
    "GoogleAdsGoogleadsV25Common_PolicyTopicConstraint_CountryConstraintList": {
      "description": "A list of countries where a resource's serving is constrained.",
      "type": "object",
      "properties": {
        "totalTargetedCountries": {
          "format": "int32",
          "type": "integer",
          "description": "Total number of countries targeted by the resource."
        },
        "countries": {
          "type": "array",
          "description": "Countries in which serving is restricted.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common_PolicyTopicConstraint_CountryConstraint"
          }
        }
      }
    },
    "GoogleAdsGoogleadsV25Common_PolicyTopicConstraint_ResellerConstraint": {
      "description": "Indicates that a policy topic was constrained due to disapproval of the website for reseller purposes.",
      "type": "object",
      "properties": {}
    },
    "GoogleAdsGoogleadsV25Common_PolicyTopicEvidence_DestinationMismatch": {
      "type": "object",
      "properties": {
        "urlTypes": {
          "type": "array",
          "description": "The set of URLs that did not match each other.",
          "items": {
            "x-enumDescriptions": [
              "No value has been specified.",
              "The received value is not known in this version. This is a response-only value.",
              "The display url.",
              "The final url.",
              "The final mobile url.",
              "The tracking url template, with substituted desktop url.",
              "The tracking url template, with substituted mobile url."
            ],
            "enum": [
              "UNSPECIFIED",
              "UNKNOWN",
              "DISPLAY_URL",
              "FINAL_URL",
              "FINAL_MOBILE_URL",
              "TRACKING_URL",
              "MOBILE_TRACKING_URL"
            ],
            "type": "string"
          }
        }
      },
      "description": "Evidence of mismatches between the URLs of a resource."
    },
    "GoogleAdsGoogleadsV25Common_PolicyTopicEvidence_DestinationNotWorking": {
      "type": "object",
      "properties": {
        "httpErrorCode": {
          "format": "int64",
          "type": "string",
          "description": "The HTTP error code."
        },
        "expandedUrl": {
          "type": "string",
          "description": "The full URL that didn't work."
        },
        "device": {
          "x-enumDescriptions": [
            "No value has been specified.",
            "The received value is not known in this version. This is a response-only value.",
            "Landing page doesn't work on desktop device.",
            "Landing page doesn't work on Android device.",
            "Landing page doesn't work on iOS device."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "DESKTOP",
            "ANDROID",
            "IOS"
          ],
          "type": "string",
          "description": "The type of device that failed to load the URL."
        },
        "dnsErrorType": {
          "description": "The type of DNS error.",
          "type": "string",
          "x-enumDescriptions": [
            "No value has been specified.",
            "The received value is not known in this version. This is a response-only value.",
            "Host name not found in DNS when fetching landing page.",
            "Google internal crawler issue when communicating with DNS. This error doesn't mean the landing page doesn't work. Google will recrawl the landing page."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "HOSTNAME_NOT_FOUND",
            "GOOGLE_CRAWLER_DNS_ISSUE"
          ]
        },
        "lastCheckedDateTime": {
          "description": "The time the URL was last checked. The format is \"YYYY-MM-DD HH:MM:SS\". Examples: \"2018-03-05 09:15:00\" or \"2018-02-01 14:34:30\"",
          "type": "string"
        }
      },
      "description": "Evidence details when the destination is returning an HTTP error code or isn't functional in all locations for commonly used devices."
    },
    "GoogleAdsGoogleadsV25Common_PolicyTopicEvidence_DestinationTextList": {
      "type": "object",
      "properties": {
        "destinationTexts": {
          "type": "array",
          "description": "List of text found in the resource's destination page.",
          "items": {
            "type": "string"
          }
        }
      },
      "description": "A list of strings found in a destination page that caused a policy finding."
    },
    "GoogleAdsGoogleadsV25Common_PolicyTopicEvidence_TextList": {
      "type": "object",
      "properties": {
        "texts": {
          "description": "The fragments of text from the resource that caused the policy finding.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "description": "A list of fragments of text that violated a policy."
    },
    "GoogleAdsGoogleadsV25Common_PolicyTopicEvidence_WebsiteList": {
      "description": "A list of websites that caused a policy finding. Used for ONE_WEBSITE_PER_AD_GROUP policy topic, for example. In case there are more than five websites, only the top five (those that appear in resources the most) will be listed here.",
      "type": "object",
      "properties": {
        "websites": {
          "type": "array",
          "description": "Websites that caused the policy finding.",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__AdAppDeepLinkAsset": {
      "description": "An app deep link used inside an ad.",
      "type": "object",
      "properties": {
        "asset": {
          "type": "string",
          "description": "The Asset resource name of this app deep link asset."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__AdAssetPolicySummary": {
      "type": "object",
      "properties": {
        "policyTopicEntries": {
          "description": "The list of policy findings for this asset.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__PolicyTopicEntry"
          },
          "type": "array"
        },
        "reviewStatus": {
          "description": "Where in the review process this asset.",
          "type": "string",
          "x-enumDescriptions": [
            "No value has been specified.",
            "The received value is not known in this version. This is a response-only value.",
            "Currently under review.",
            "Primary review complete. Other reviews may be continuing.",
            "The resource has been resubmitted for approval or its policy decision has been appealed.",
            "The resource is eligible and may be serving but could still undergo further review."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "REVIEW_IN_PROGRESS",
            "REVIEWED",
            "UNDER_APPEAL",
            "ELIGIBLE_MAY_SERVE"
          ]
        },
        "approvalStatus": {
          "x-enumDescriptions": [
            "No value has been specified.",
            "The received value is not known in this version. This is a response-only value.",
            "Will not serve.",
            "Serves with restrictions.",
            "Serves without restrictions.",
            "Will not serve in targeted countries, but may serve for users who are searching for information about the targeted countries."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "DISAPPROVED",
            "APPROVED_LIMITED",
            "APPROVED",
            "AREA_OF_INTEREST_ONLY"
          ],
          "description": "The overall approval status of this asset, which is calculated based on the status of its individual policy topic entries.",
          "type": "string"
        }
      },
      "description": "Contains policy information for an asset inside an ad."
    },
    "GoogleAdsGoogleadsV25Common__AdCallToActionAsset": {
      "description": "A call to action asset used inside an ad.",
      "type": "object",
      "properties": {
        "asset": {
          "type": "string",
          "description": "The Asset resource name of this call to action asset."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__AdDemandGenCarouselCardAsset": {
      "type": "object",
      "properties": {
        "asset": {
          "description": "The Asset resource name of this discovery carousel card.",
          "type": "string"
        }
      },
      "description": "A Demand Gen carousel card asset used inside an ad."
    },
    "GoogleAdsGoogleadsV25Common__AdImageAsset": {
      "type": "object",
      "properties": {
        "asset": {
          "description": "The Asset resource name of this image.",
          "type": "string"
        }
      },
      "description": "An image asset used inside an ad."
    },
    "GoogleAdsGoogleadsV25Common__AdMediaBundleAsset": {
      "description": "A media bundle asset used inside an ad.",
      "type": "object",
      "properties": {
        "asset": {
          "type": "string",
          "description": "The Asset resource name of this media bundle."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__AdScheduleInfo": {
      "type": "object",
      "properties": {
        "dayOfWeek": {
          "description": "Day of the week the schedule applies to. This field is required for CREATE operations and is prohibited on UPDATE operations.",
          "type": "string",
          "x-enumDescriptions": [
            "Not specified.",
            "The value is unknown in this version.",
            "Monday.",
            "Tuesday.",
            "Wednesday.",
            "Thursday.",
            "Friday.",
            "Saturday.",
            "Sunday."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "MONDAY",
            "TUESDAY",
            "WEDNESDAY",
            "THURSDAY",
            "FRIDAY",
            "SATURDAY",
            "SUNDAY"
          ]
        },
        "startHour": {
          "type": "integer",
          "description": "Starting hour in 24 hour time. This field must be between 0 and 23, inclusive. This field is required for CREATE operations and is prohibited on UPDATE operations.",
          "format": "int32"
        },
        "endHour": {
          "type": "integer",
          "description": "Ending hour in 24 hour time; 24 signifies end of the day. This field must be between 0 and 24, inclusive. This field is required for CREATE operations and is prohibited on UPDATE operations.",
          "format": "int32"
        },
        "endMinute": {
          "type": "string",
          "description": "Minutes after the end hour at which this schedule ends. The schedule is exclusive of the end minute. This field is required for CREATE operations and is prohibited on UPDATE operations.",
          "x-enumDescriptions": [
            "Not specified.",
            "The value is unknown in this version.",
            "Zero minutes past the hour.",
            "Fifteen minutes past the hour.",
            "Thirty minutes past the hour.",
            "Forty-five minutes past the hour."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "ZERO",
            "FIFTEEN",
            "THIRTY",
            "FORTY_FIVE"
          ]
        },
        "startMinute": {
          "description": "Minutes after the start hour at which this schedule starts. This field is required for CREATE operations and is prohibited on UPDATE operations.",
          "type": "string",
          "x-enumDescriptions": [
            "Not specified.",
            "The value is unknown in this version.",
            "Zero minutes past the hour.",
            "Fifteen minutes past the hour.",
            "Thirty minutes past the hour.",
            "Forty-five minutes past the hour."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "ZERO",
            "FIFTEEN",
            "THIRTY",
            "FORTY_FIVE"
          ]
        }
      },
      "description": "Represents an AdSchedule criterion. AdSchedule is specified as the day of the week and a time interval within which ads will be shown. No more than six AdSchedules can be added for the same day."
    },
    "GoogleAdsGoogleadsV25Common__AdTextAsset": {
      "description": "A text asset used inside an ad.",
      "type": "object",
      "properties": {
        "pinnedField": {
          "type": "string",
          "description": "The pinned field of the asset. This restricts the asset to only serve within this field. Multiple assets can be pinned to the same field. An asset that is unpinned or pinned to a different field will not serve in a field where some other asset has been pinned.",
          "x-enumDescriptions": [
            "No value has been specified.",
            "The received value is not known in this version. This is a response-only value.",
            "The asset is used in headline 1.",
            "The asset is used in headline 2.",
            "The asset is used in headline 3.",
            "The asset is used in description 1.",
            "The asset is used in description 2.",
            "The asset was used in a headline. Use this only if there is only one headline in the ad. Otherwise, use the HEADLINE_1, HEADLINE_2 or HEADLINE_3 enums",
            "The asset was used as a headline in portrait image.",
            "The asset was used in a long headline (used in MultiAssetResponsiveAd).",
            "The asset was used in a description. Use this only if there is only one description in the ad. Otherwise, use the DESCRIPTION_1 or DESCRIPTION_@ enums",
            "The asset was used as description in portrait image.",
            "The asset was used as business name in portrait image.",
            "The asset was used as business name.",
            "The asset was used as a marketing image.",
            "The asset was used as a marketing image in portrait image.",
            "The asset was used as a square marketing image.",
            "The asset was used as a portrait marketing image.",
            "The asset was used as a logo.",
            "The asset was used as a landscape logo.",
            "The asset was used as a call-to-action.",
            "The asset was used as a YouTube video.",
            "This asset is used as a sitelink.",
            "This asset is used as a call.",
            "This asset is used as a mobile app.",
            "This asset is used as a callout.",
            "This asset is used as a structured snippet.",
            "This asset is used as a price.",
            "This asset is used as a promotion.",
            "This asset is used as an image.",
            "The asset is used as a lead form.",
            "The asset is used as a business logo.",
            "The asset is used as a description prefix.",
            "A headline asset used as a sitelink in position 1.",
            "A headline asset used as a sitelink in position 2.",
            "A description line asset used as a sitelink in position 1.",
            "A description line asset used as a sitelink in position 2."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "HEADLINE_1",
            "HEADLINE_2",
            "HEADLINE_3",
            "DESCRIPTION_1",
            "DESCRIPTION_2",
            "HEADLINE",
            "HEADLINE_IN_PORTRAIT",
            "LONG_HEADLINE",
            "DESCRIPTION",
            "DESCRIPTION_IN_PORTRAIT",
            "BUSINESS_NAME_IN_PORTRAIT",
            "BUSINESS_NAME",
            "MARKETING_IMAGE",
            "MARKETING_IMAGE_IN_PORTRAIT",
            "SQUARE_MARKETING_IMAGE",
            "PORTRAIT_MARKETING_IMAGE",
            "LOGO",
            "LANDSCAPE_LOGO",
            "CALL_TO_ACTION",
            "YOU_TUBE_VIDEO",
            "SITELINK",
            "CALL",
            "MOBILE_APP",
            "CALLOUT",
            "STRUCTURED_SNIPPET",
            "PRICE",
            "PROMOTION",
            "AD_IMAGE",
            "LEAD_FORM",
            "BUSINESS_LOGO",
            "DESCRIPTION_PREFIX",
            "HEADLINE_AS_SITELINK_POSITION_ONE",
            "HEADLINE_AS_SITELINK_POSITION_TWO",
            "DESCRIPTION_LINE_HEADLINE_AS_SITELINK_POSITION_ONE",
            "DESCRIPTION_LINE_HEADLINE_AS_SITELINK_POSITION_TWO"
          ]
        },
        "assetPerformanceLabel": {
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "This asset does not yet have any performance informantion. This may be because it is still under review.",
            "The asset has started getting impressions but the stats are not statistically significant enough to get an asset performance label.",
            "Worst performing assets.",
            "Good performing assets.",
            "Best performing assets.",
            "Performance label cannot be assigned to this asset. This may be because it's not used by asset based creatives."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "PENDING",
            "LEARNING",
            "LOW",
            "GOOD",
            "BEST",
            "NOT_APPLICABLE"
          ],
          "type": "string",
          "description": "The performance label of this text asset."
        },
        "text": {
          "type": "string",
          "description": "Asset text."
        },
        "policySummaryInfo": {
          "description": "The policy summary of this text asset.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdAssetPolicySummary"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__AdVideoAsset": {
      "description": "A video asset used inside an ad.",
      "type": "object",
      "properties": {
        "asset": {
          "type": "string",
          "description": "The Asset resource name of this video."
        },
        "adVideoAssetInfo": {
          "description": "Contains info fields for this AdVideoAsset.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdVideoAssetInfo"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__AdVideoAssetInfo": {
      "description": "Contains info fields for AdVideoAssets.",
      "type": "object",
      "properties": {
        "adVideoAssetInventoryPreferences": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdVideoAssetInventoryPreferences",
          "description": "List of inventory preferences for this AdVideoAsset. This field can only be set for DiscoveryVideoResponsiveAd. The video assets with an inventory asset preference set will be preferred over other videos from the same ad during serving time. For example, consider this ad being served for a specific inventory. The server will first try to match an eligible video with a matching preference for that inventory. Videos with no preferences are chosen only when a video with matching preference and eligible for a given ad slot can be found."
        },
        "adVideoAssetFeatureControl": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdVideoAssetLinkFeatureControl",
          "description": "Defines feature controls for this AdVideoAsset during serving time. For example, whether YouTube comments should be enabled for Partnership Ads served on YouTube Shorts."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__AdVideoAssetInventoryPreferences": {
      "type": "object",
      "properties": {
        "inStreamPreference": {
          "description": "When true, YouTube Video Asset with this inventory preference will be preferred when choosing a video to serve In Stream.",
          "type": "boolean"
        },
        "shortsPreference": {
          "type": "boolean",
          "description": "When true, YouTube Video Asset with this inventory preference will be preferred when choosing a video to serve on YouTube Shorts."
        },
        "inFeedPreference": {
          "description": "When true, YouTube Video Asset with this inventory preference will be preferred when choosing a video to serve In Feed.",
          "type": "boolean"
        }
      },
      "description": "YouTube Video Asset inventory preferences."
    },
    "GoogleAdsGoogleadsV25Common__AdVideoAssetLinkFeatureControl": {
      "type": "object",
      "properties": {
        "allowYoutubeComments": {
          "type": "boolean",
          "description": "Defines if YouTube comments should be enabled for the creative using this YouTube video asset served on YouTube Shorts."
        }
      },
      "description": "YouTube Video Asset feature controls."
    },
    "GoogleAdsGoogleadsV25Common__AppAdInfo": {
      "type": "object",
      "properties": {
        "mandatoryAdText": {
          "description": "Mandatory ad text.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
        },
        "youtubeVideos": {
          "type": "array",
          "description": "List of YouTube video assets that may be displayed with the ad.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdVideoAsset"
          }
        },
        "descriptions": {
          "description": "List of text assets for descriptions. When the ad serves the descriptions will be selected from this list.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          },
          "type": "array"
        },
        "html5MediaBundles": {
          "type": "array",
          "description": "List of media bundle assets that may be used with the ad.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdMediaBundleAsset"
          }
        },
        "headlines": {
          "description": "List of text assets for headlines. When the ad serves the headlines will be selected from this list.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          },
          "type": "array"
        },
        "appDeepLink": {
          "description": "An app deep link asset that may be used with the ad.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdAppDeepLinkAsset"
        },
        "images": {
          "type": "array",
          "description": "List of image assets that may be displayed with the ad.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
          }
        }
      },
      "description": "An app ad."
    },
    "GoogleAdsGoogleadsV25Common__AppDeepLinkAsset": {
      "type": "object",
      "properties": {
        "appDeepLinkUri": {
          "description": "The uri for the app deep link. The uri can be either a custom scheme uri (e.g., `mystore://shoes`) or universal uri (e.g., `http://www.mystore.com/shoes`).",
          "type": "string"
        }
      },
      "description": "An app deep link asset"
    },
    "GoogleAdsGoogleadsV25Common__AppEngagementAdInfo": {
      "description": "App engagement ads allow you to write text encouraging a specific action in the app, like checking in, making a purchase, or booking a flight. They allow you to send users to a specific part of your app where they can find what they're looking for easier and faster.",
      "type": "object",
      "properties": {
        "descriptions": {
          "type": "array",
          "description": "List of text assets for descriptions. When the ad serves the descriptions will be selected from this list.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          }
        },
        "headlines": {
          "description": "List of text assets for headlines. When the ad serves the headlines will be selected from this list.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          },
          "type": "array"
        },
        "images": {
          "description": "List of image assets that may be displayed with the ad.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
          },
          "type": "array"
        },
        "videos": {
          "type": "array",
          "description": "List of video assets that may be displayed with the ad.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdVideoAsset"
          }
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__AppPreRegistrationAdInfo": {
      "type": "object",
      "properties": {
        "headlines": {
          "description": "List of text assets for headlines. When the ad serves the headlines will be selected from this list.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          },
          "type": "array"
        },
        "youtubeVideos": {
          "description": "List of YouTube video asset IDs whose videos may be displayed with the ad.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdVideoAsset"
          },
          "type": "array"
        },
        "images": {
          "type": "array",
          "description": "List of image asset IDs whose images may be displayed with the ad.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
          }
        },
        "descriptions": {
          "type": "array",
          "description": "List of text assets for descriptions. When the ad serves the descriptions will be selected from this list.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          }
        }
      },
      "description": "App pre-registration ads link to your app or game listing on Google Play, and can run on Google Play, on YouTube (in-stream only), and within other apps and mobile websites on the Display Network. It will help capture people's interest in your app or game and generate an early install base for your app or game before a launch."
    },
    "GoogleAdsGoogleadsV25Common__BookOnGoogleAsset": {
      "description": "A Book on Google asset. Used to redirect user to book through Google. Book on Google will change the redirect url to book directly through Google.",
      "type": "object",
      "properties": {}
    },
    "GoogleAdsGoogleadsV25Common__BusinessMessageAsset": {
      "type": "object",
      "properties": {
        "messageProvider": {
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "WhatsApp message provider",
            "Facebook Messenger message provider",
            "Zalo message provider"
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "WHATSAPP",
            "FACEBOOK_MESSENGER",
            "ZALO"
          ],
          "description": "Required. Message provider of the business message asset.",
          "type": "string"
        },
        "callToAction": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__BusinessMessageCallToActionInfo",
          "description": "A call to action for the business message asset."
        },
        "whatsappInfo": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__WhatsappBusinessMessageInfo",
          "description": "Whatsapp."
        },
        "zaloInfo": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__ZaloBusinessMessageInfo",
          "description": "Zalo."
        },
        "facebookMessengerInfo": {
          "description": "Facebook Messenger.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__FacebookMessengerBusinessMessageInfo"
        },
        "starterMessage": {
          "description": "Required. A welcome message to prompt the user to initiate a conversation.",
          "type": "string"
        }
      },
      "description": "A business message asset."
    },
    "GoogleAdsGoogleadsV25Common__BusinessMessageCallToActionInfo": {
      "type": "object",
      "properties": {
        "callToActionDescription": {
          "description": "Required. Text providing a clear value proposition of what users expect once they take the action. Examples: 'Message us for a quote', 'Ask our expert team'.",
          "type": "string"
        },
        "callToActionSelection": {
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "Apply now.",
            "Book now.",
            "Contact us.",
            "Get info.",
            "Get offer.",
            "Get quote.",
            "Get started.",
            "Learn more."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "APPLY_NOW",
            "BOOK_NOW",
            "CONTACT_US",
            "GET_INFO",
            "GET_OFFER",
            "GET_QUOTE",
            "GET_STARTED",
            "LEARN_MORE"
          ],
          "type": "string",
          "description": "Required. Pre-defined call to action text."
        }
      },
      "description": "Display information that encourages the user to take action."
    },
    "GoogleAdsGoogleadsV25Common__BusinessProfileLocation": {
      "description": "Business Profile location data synced from the linked Business Profile account.",
      "type": "object",
      "properties": {
        "storeCode": {
          "type": "string",
          "description": "Business Profile store code of this location. This is synced from the Business Profile account."
        },
        "labels": {
          "description": "Advertiser specified label for the location on the Business Profile account. This is synced from the Business Profile account.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "listingId": {
          "format": "int64",
          "description": "Listing ID of this Business Profile location. This is synced from the linked Business Profile account.",
          "type": "string"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__CallAsset": {
      "description": "A Call asset.",
      "type": "object",
      "properties": {
        "callConversionAction": {
          "type": "string",
          "description": "The conversion action to attribute a call conversion to. If not set, the default conversion action is used. This field only has effect if call_conversion_reporting_state is set to USE_RESOURCE_LEVEL_CALL_CONVERSION_ACTION."
        },
        "phoneNumber": {
          "description": "Required. The advertiser's raw phone number. Examples: '1234567890', '(123)456-7890'",
          "type": "string"
        },
        "adScheduleTargets": {
          "type": "array",
          "description": "List of non-overlapping schedules specifying all time intervals for which the asset may serve. There can be a maximum of 6 schedules per day, 42 in total.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdScheduleInfo"
          }
        },
        "countryCode": {
          "description": "Required. Two-letter country code of the phone number. Examples: 'US', 'us'.",
          "type": "string"
        },
        "callConversionReportingState": {
          "type": "string",
          "description": "Indicates whether this CallAsset should use its own call conversion setting, follow the account level setting, or disable call conversion.",
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "Call conversion action is disabled.",
            "Call conversion action will use call conversion type set at the account level.",
            "Call conversion action will use call conversion type set at the resource (call only ads/call extensions) level."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "DISABLED",
            "USE_ACCOUNT_LEVEL_CALL_CONVERSION_ACTION",
            "USE_RESOURCE_LEVEL_CALL_CONVERSION_ACTION"
          ]
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__CallToActionAsset": {
      "type": "object",
      "properties": {
        "callToAction": {
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "The call to action type is learn more.",
            "The call to action type is get quote.",
            "The call to action type is apply now.",
            "The call to action type is sign up.",
            "The call to action type is contact us.",
            "The call to action type is subscribe.",
            "The call to action type is download.",
            "The call to action type is book now.",
            "The call to action type is shop now.",
            "The call to action type is buy now.",
            "The call to action type is donate now.",
            "The call to action type is order now.",
            "The call to action type is play now.",
            "The call to action type is see more.",
            "The call to action type is start now.",
            "The call to action type is visit site.",
            "The call to action type is watch now."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "LEARN_MORE",
            "GET_QUOTE",
            "APPLY_NOW",
            "SIGN_UP",
            "CONTACT_US",
            "SUBSCRIBE",
            "DOWNLOAD",
            "BOOK_NOW",
            "SHOP_NOW",
            "BUY_NOW",
            "DONATE_NOW",
            "ORDER_NOW",
            "PLAY_NOW",
            "SEE_MORE",
            "START_NOW",
            "VISIT_SITE",
            "WATCH_NOW"
          ],
          "description": "Call to action.",
          "type": "string"
        }
      },
      "description": "A call to action asset."
    },
    "GoogleAdsGoogleadsV25Common__CalloutAsset": {
      "description": "A Callout asset.",
      "type": "object",
      "properties": {
        "startDate": {
          "description": "Start date of when this asset is effective and can begin serving, in yyyy-MM-dd format.",
          "type": "string"
        },
        "endDate": {
          "description": "Last date of when this asset is effective and still serving, in yyyy-MM-dd format.",
          "type": "string"
        },
        "adScheduleTargets": {
          "type": "array",
          "description": "List of non-overlapping schedules specifying all time intervals for which the asset may serve. There can be a maximum of 6 schedules per day, 42 in total.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdScheduleInfo"
          }
        },
        "calloutText": {
          "description": "Required. The callout text. The length of this string should be between 1 and 25, inclusive.",
          "type": "string"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__CustomParameter": {
      "type": "object",
      "properties": {
        "key": {
          "description": "The key matching the parameter tag name.",
          "type": "string"
        },
        "value": {
          "type": "string",
          "description": "The value to be substituted."
        }
      },
      "description": "A mapping that can be used by custom parameter tags in a `tracking_url_template`, `final_urls`, or `mobile_final_urls`."
    },
    "GoogleAdsGoogleadsV25Common__DemandGenCarouselAdInfo": {
      "type": "object",
      "properties": {
        "carouselCards": {
          "description": "Required. Carousel cards that will display with the ad. Min 2 max 10.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdDemandGenCarouselCardAsset"
          },
          "type": "array"
        },
        "callToActionText": {
          "description": "Call to action text.",
          "type": "string"
        },
        "headline": {
          "description": "Required. Headline of the ad.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
        },
        "businessName": {
          "type": "string",
          "description": "Required. The Advertiser/brand name."
        },
        "logoImage": {
          "description": "Required. Logo image to be used in the ad. The minimum size is 128x128 and the aspect ratio must be 1:1 (+-1%).",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
        },
        "description": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset",
          "description": "Required. The descriptive text of the ad."
        }
      },
      "description": "A Demand Gen carousel ad."
    },
    "GoogleAdsGoogleadsV25Common__DemandGenCarouselCardAsset": {
      "type": "object",
      "properties": {
        "headline": {
          "type": "string",
          "description": "Required. Headline of the carousel card."
        },
        "callToActionText": {
          "description": "Call to action text.",
          "type": "string"
        },
        "portraitMarketingImageAsset": {
          "type": "string",
          "description": "Asset resource name of the associated 4:5 portrait marketing image."
        },
        "marketingImageAsset": {
          "description": "Asset resource name of the associated 1.91:1 marketing image. This and/or square marketing image asset is required.",
          "type": "string"
        },
        "squareMarketingImageAsset": {
          "type": "string",
          "description": "Asset resource name of the associated square marketing image. This and/or a marketing image asset is required."
        }
      },
      "description": "A Demand Gen Carousel Card asset."
    },
    "GoogleAdsGoogleadsV25Common__DemandGenMultiAssetAdInfo": {
      "type": "object",
      "properties": {
        "portraitMarketingImages": {
          "type": "array",
          "description": "Portrait marketing image assets to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 480x600 and the aspect ratio must be 4:5 (+-1%). Combined with `marketing_images`, `square_marketing_images`, and `tall_portrait_marketing_images` the maximum is 20.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
          }
        },
        "classicDisplayImages": {
          "type": "array",
          "description": "Classic display image assets to be used in the ad. Valid image types are GIF, JPEG, and PNG. At most 20 classic display images can be specified per ad.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
          }
        },
        "tallPortraitMarketingImages": {
          "type": "array",
          "description": "Tall portrait marketing image assets to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 600x1067 and the aspect ratio must be 9:16 (+-1%). Combined with `marketing_images`, `square_marketing_images`, and `portrait_marketing_images`, the maximum is 20.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
          }
        },
        "businessName": {
          "type": "string",
          "description": "The Advertiser/brand name. Maximum display width is 25. Required."
        },
        "logoImages": {
          "description": "Logo image assets to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 128x128 and the aspect ratio must be 1:1 (+-1%). At least 1 and max 5 logo images can be specified.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
          },
          "type": "array"
        },
        "descriptions": {
          "type": "array",
          "description": "The descriptive text of the ad. Maximum display width is 90. At least 1 and max 5 descriptions can be specified.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          }
        },
        "callToActionText": {
          "type": "string",
          "description": "Call to action text."
        },
        "headlines": {
          "type": "array",
          "description": "Headline text asset of the ad. Maximum display width is 30. At least 1 and max 5 headlines can be specified.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          }
        },
        "marketingImages": {
          "type": "array",
          "description": "Marketing image assets to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 600x314 and the aspect ratio must be 1.91:1 (+-1%). Required if square_marketing_images is not present. Combined with `square_marketing_images`, `portrait_marketing_images`, and `tall_portrait_marketing_images` the maximum is 20.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
          }
        },
        "squareMarketingImages": {
          "type": "array",
          "description": "Square marketing image assets to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 300x300 and the aspect ratio must be 1:1 (+-1%). Required if marketing_images is not present. Combined with `marketing_images`, `portrait_marketing_images`, and `tall_portrait_marketing_images` the maximum is 20.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
          }
        }
      },
      "description": "A Demand Gen multi asset ad."
    },
    "GoogleAdsGoogleadsV25Common__DemandGenProductAdInfo": {
      "description": "A Demand Gen product ad.",
      "type": "object",
      "properties": {
        "description": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset",
          "description": "Required. Text asset used for the description."
        },
        "breadcrumb1": {
          "description": "First part of text that appears in the ad with the displayed URL.",
          "type": "string"
        },
        "breadcrumb2": {
          "description": "Second part of text that appears in the ad with the displayed URL.",
          "type": "string"
        },
        "logoImage": {
          "description": "Required. Logo image to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 128x128 and the aspect ratio must be 1:1 (+-1%).",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
        },
        "businessName": {
          "description": "Required. The advertiser/brand name.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
        },
        "callToAction": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdCallToActionAsset",
          "description": "Asset of type CallToActionAsset used for the \"Call To Action\" button."
        },
        "headline": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset",
          "description": "Required. Text asset used for the short headline."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__DemandGenVideoResponsiveAdInfo": {
      "description": "A Demand Gen video responsive ad.",
      "type": "object",
      "properties": {
        "companionBanners": {
          "type": "array",
          "description": "List of image assets used for the companion banner. Currently, only a single value for the companion banner asset is supported.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
          }
        },
        "longHeadlines": {
          "type": "array",
          "description": "List of text assets used for the long headline.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          }
        },
        "videos": {
          "type": "array",
          "description": "Required. List of YouTube video assets used for the ad.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdVideoAsset"
          }
        },
        "breadcrumb1": {
          "description": "First part of text that appears in the ad with the displayed URL.",
          "type": "string"
        },
        "breadcrumb2": {
          "description": "Second part of text that appears in the ad with the displayed URL.",
          "type": "string"
        },
        "callToActions": {
          "description": "Assets of type CallToActionAsset used for the \"Call To Action\" button.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdCallToActionAsset"
          },
          "type": "array"
        },
        "businessName": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset",
          "description": "Required. The advertiser/brand name."
        },
        "headlines": {
          "type": "array",
          "description": "List of text assets used for the short headline.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          }
        },
        "descriptions": {
          "type": "array",
          "description": "List of text assets used for the description.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          }
        },
        "logoImages": {
          "type": "array",
          "description": "Required. Logo image to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 128x128 and the aspect ratio must be 1:1 (+-1%).",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
          }
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__DisplayUploadAdInfo": {
      "type": "object",
      "properties": {
        "displayUploadProductType": {
          "type": "string",
          "description": "The product type of this ad. See comments on the enum for details.",
          "x-enumDescriptions": [
            "Not specified.",
            "The value is unknown in this version.",
            "HTML5 upload ad. This product type requires the upload_media_bundle field in DisplayUploadAdInfo to be set.",
            "Dynamic HTML5 education ad. This product type requires the upload_media_bundle field in DisplayUploadAdInfo to be set. Can only be used in an education campaign.",
            "Dynamic HTML5 flight ad. This product type requires the upload_media_bundle field in DisplayUploadAdInfo to be set. Can only be used in a flight campaign.",
            "Dynamic HTML5 hotel and rental ad. This product type requires the upload_media_bundle field in DisplayUploadAdInfo to be set. Can only be used in a hotel campaign.",
            "Dynamic HTML5 job ad. This product type requires the upload_media_bundle field in DisplayUploadAdInfo to be set. Can only be used in a job campaign.",
            "Dynamic HTML5 local ad. This product type requires the upload_media_bundle field in DisplayUploadAdInfo to be set. Can only be used in a local campaign.",
            "Dynamic HTML5 real estate ad. This product type requires the upload_media_bundle field in DisplayUploadAdInfo to be set. Can only be used in a real estate campaign.",
            "Dynamic HTML5 custom ad. This product type requires the upload_media_bundle field in DisplayUploadAdInfo to be set. Can only be used in a custom campaign.",
            "Dynamic HTML5 travel ad. This product type requires the upload_media_bundle field in DisplayUploadAdInfo to be set. Can only be used in a travel campaign.",
            "Dynamic HTML5 hotel ad. This product type requires the upload_media_bundle field in DisplayUploadAdInfo to be set. Can only be used in a hotel campaign."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "HTML5_UPLOAD_AD",
            "DYNAMIC_HTML5_EDUCATION_AD",
            "DYNAMIC_HTML5_FLIGHT_AD",
            "DYNAMIC_HTML5_HOTEL_RENTAL_AD",
            "DYNAMIC_HTML5_JOB_AD",
            "DYNAMIC_HTML5_LOCAL_AD",
            "DYNAMIC_HTML5_REAL_ESTATE_AD",
            "DYNAMIC_HTML5_CUSTOM_AD",
            "DYNAMIC_HTML5_TRAVEL_AD",
            "DYNAMIC_HTML5_HOTEL_AD"
          ]
        },
        "mediaBundle": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdMediaBundleAsset",
          "description": "A media bundle asset to be used in the ad. For information about the media bundle for HTML5_UPLOAD_AD, see https://support.google.com/google-ads/answer/1722096 Media bundles that are part of dynamic product types use a special format that needs to be created through the Google Web Designer. See https://support.google.com/webdesigner/answer/7543898 for more information."
        }
      },
      "description": "A generic type of display ad. The exact ad format is controlled by the `display_upload_product_type` field, which determines what kinds of data need to be included with the ad."
    },
    "GoogleAdsGoogleadsV25Common__DynamicCustomAsset": {
      "description": "A dynamic custom asset.",
      "type": "object",
      "properties": {
        "formattedPrice": {
          "description": "Formatted price which can be any characters. If set, this attribute will be used instead of 'price', for example, Starting at $20,000.00.",
          "type": "string"
        },
        "iosAppLink": {
          "description": "iOS deep link, for example, exampleApp://content/page.",
          "type": "string"
        },
        "iosAppStoreId": {
          "format": "int64",
          "description": "iOS app store ID. This is used to check if the user has the app installed on their device before deep linking. If this field is set, then the ios_app_link field must also be present.",
          "type": "string"
        },
        "androidAppLink": {
          "type": "string",
          "description": "Android deep link, for example, android-app://com.example.android/http/example.com/gizmos?1234."
        },
        "contextualKeywords": {
          "type": "array",
          "description": "Contextual keywords, for example, Sedans, 4 door sedans.",
          "items": {
            "type": "string"
          }
        },
        "salePrice": {
          "type": "string",
          "description": "Sale price which can be number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 15,000.00 USD. Must be less than the 'price' field."
        },
        "imageUrl": {
          "type": "string",
          "description": "Image URL, for example, http://www.example.com/image.png. The image will not be uploaded as image asset."
        },
        "itemSubtitle": {
          "type": "string",
          "description": "Item subtitle, for example, At your Mountain View dealership."
        },
        "itemCategory": {
          "type": "string",
          "description": "Item category, for example, Sedans."
        },
        "itemDescription": {
          "description": "Item description, for example, Best selling mid-size car.",
          "type": "string"
        },
        "itemAddress": {
          "description": "Item address which can be specified in one of the following formats. (1) City, state, code, country, for example, Mountain View, CA, USA. (2) Full address, for example, 123 Boulevard St, Mountain View, CA 94043. (3) Latitude-longitude in the DDD format, for example, 41.40338, 2.17403",
          "type": "string"
        },
        "similarIds": {
          "type": "array",
          "description": "Similar IDs.",
          "items": {
            "type": "string"
          }
        },
        "formattedSalePrice": {
          "description": "Formatted sale price which can be any characters. If set, this attribute will be used instead of 'sale price', for example, On sale for $15,000.00.",
          "type": "string"
        },
        "id2": {
          "description": "ID2 which can be any sequence of letters and digits, for example, red. ID sequence (ID + ID2) must be unique.",
          "type": "string"
        },
        "id": {
          "description": "Required. ID which can be any sequence of letters and digits, and must be unique and match the values of remarketing tag, for example, sedan. Required.",
          "type": "string"
        },
        "itemTitle": {
          "type": "string",
          "description": "Required. Item title, for example, Mid-size sedan. Required."
        },
        "price": {
          "description": "Price which can be number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 20,000.00 USD.",
          "type": "string"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__DynamicEducationAsset": {
      "type": "object",
      "properties": {
        "contextualKeywords": {
          "type": "array",
          "description": "Contextual keywords, for example, Nursing certification, Health, Mountain View.",
          "items": {
            "type": "string"
          }
        },
        "imageUrl": {
          "type": "string",
          "description": "Image url, for example, http://www.example.com/image.png. The image will not be uploaded as image asset."
        },
        "locationId": {
          "type": "string",
          "description": "Location ID which can be any sequence of letters and digits and must be unique."
        },
        "programDescription": {
          "description": "Program description, for example, Nursing Certification.",
          "type": "string"
        },
        "iosAppLink": {
          "description": "iOS deep link, for example, exampleApp://content/page.",
          "type": "string"
        },
        "iosAppStoreId": {
          "description": "iOS app store ID. This is used to check if the user has the app installed on their device before deep linking. If this field is set, then the ios_app_link field must also be present.",
          "type": "string",
          "format": "int64"
        },
        "androidAppLink": {
          "description": "Android deep link, for example, android-app://com.example.android/http/example.com/gizmos?1234.",
          "type": "string"
        },
        "programId": {
          "type": "string",
          "description": "Required. Program ID which can be any sequence of letters and digits, and must be unique and match the values of remarketing tag. Required."
        },
        "address": {
          "description": "School address which can be specified in one of the following formats. (1) City, state, code, country, for example, Mountain View, CA, USA. (2) Full address, for example, 123 Boulevard St, Mountain View, CA 94043. (3) Latitude-longitude in the DDD format, for example, 41.40338, 2.17403",
          "type": "string"
        },
        "subject": {
          "description": "Subject of study, for example, Health.",
          "type": "string"
        },
        "similarProgramIds": {
          "description": "Similar program IDs.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "schoolName": {
          "type": "string",
          "description": "School name, for example, Mountain View School of Nursing."
        },
        "thumbnailImageUrl": {
          "type": "string",
          "description": "Thumbnail image url, for example, http://www.example.com/thumbnail.png. The thumbnail image will not be uploaded as image asset."
        },
        "programName": {
          "type": "string",
          "description": "Required. Program name, for example, Nursing. Required."
        }
      },
      "description": "A Dynamic Education asset."
    },
    "GoogleAdsGoogleadsV25Common__DynamicFlightsAsset": {
      "description": "A dynamic flights asset.",
      "type": "object",
      "properties": {
        "formattedSalePrice": {
          "description": "Formatted sale price which can be any characters. If set, this attribute will be used instead of 'sale price', for example, On sale for $80.00.",
          "type": "string"
        },
        "flightSalePrice": {
          "type": "string",
          "description": "Flight sale price which can be number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 80.00 USD. Must be less than the 'flight_price' field."
        },
        "destinationName": {
          "description": "Destination name, for example, Paris.",
          "type": "string"
        },
        "originName": {
          "description": "Origin name, for example, London.",
          "type": "string"
        },
        "customMapping": {
          "description": "A custom field which can be multiple key to values mapping separated by delimiters (\",\", \"|\" and \":\"), in the forms of \": , , ... , | : , ... , | ... | : , ... ,\" for example, wifi: most | aircraft: 320, 77W | flights: 42 | legroom: 32\".",
          "type": "string"
        },
        "originId": {
          "description": "Origin ID which can be any sequence of letters and digits. The ID sequence (destination ID + origin ID) must be unique.",
          "type": "string"
        },
        "similarDestinationIds": {
          "type": "array",
          "description": "Similar destination IDs, for example, PAR,LON.",
          "items": {
            "type": "string"
          }
        },
        "destinationId": {
          "description": "Required. Destination ID which can be any sequence of letters and digits, and must be unique and match the values of remarketing tag. Required.",
          "type": "string"
        },
        "flightDescription": {
          "type": "string",
          "description": "Required. Flight description, for example, Book your ticket. Required."
        },
        "imageUrl": {
          "description": "Image URL, for example, http://www.example.com/image.png. The image will not be uploaded as image asset.",
          "type": "string"
        },
        "flightPrice": {
          "description": "Flight price which can be number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 100.00 USD.",
          "type": "string"
        },
        "formattedPrice": {
          "description": "Formatted price which can be any characters. If set, this attribute will be used instead of 'price', for example, Starting at $100.00.",
          "type": "string"
        },
        "iosAppLink": {
          "type": "string",
          "description": "iOS deep link, for example, exampleApp://content/page."
        },
        "iosAppStoreId": {
          "format": "int64",
          "type": "string",
          "description": "iOS app store ID. This is used to check if the user has the app installed on their device before deep linking. If this field is set, then the ios_app_link field must also be present."
        },
        "androidAppLink": {
          "description": "Android deep link, for example, android-app://com.example.android/http/example.com/gizmos?1234.",
          "type": "string"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__DynamicHotelsAndRentalsAsset": {
      "description": "A dynamic hotels and rentals asset.",
      "type": "object",
      "properties": {
        "contextualKeywords": {
          "description": "Contextual keywords, for example, Mountain View \"Hotels\", South Bay hotels.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "imageUrl": {
          "type": "string",
          "description": "Image URL, for example, http://www.example.com/image.png. The image will not be uploaded as image asset."
        },
        "salePrice": {
          "type": "string",
          "description": "ISO 4217 standard. Use '.' as the decimal mark, for example, 80.00 USD. Must be less than the 'price' field."
        },
        "propertyName": {
          "description": "Required. Property name, for example, Mountain View Hotel. Required.",
          "type": "string"
        },
        "category": {
          "description": "Category, for example, Hotel suite.",
          "type": "string"
        },
        "description": {
          "type": "string",
          "description": "Description, for example, Close to SJC Airport."
        },
        "formattedPrice": {
          "description": "Formatted price which can be any characters. If set, this attribute will be used instead of 'price', for example, Starting at $100.00.",
          "type": "string"
        },
        "iosAppLink": {
          "type": "string",
          "description": "iOS deep link, for example, exampleApp://content/page."
        },
        "iosAppStoreId": {
          "type": "string",
          "description": "iOS app store ID. This is used to check if the user has the app installed on their device before deep linking. If this field is set, then the ios_app_link field must also be present.",
          "format": "int64"
        },
        "androidAppLink": {
          "type": "string",
          "description": "Android deep link, for example, android-app://com.example.android/http/example.com/gizmos?1234."
        },
        "formattedSalePrice": {
          "description": "Formatted sale price which can be any characters. If set, this attribute will be used instead of 'sale price', for example, On sale for $80.00.",
          "type": "string"
        },
        "destinationName": {
          "type": "string",
          "description": "Destination name, for example, Downtown Mountain View."
        },
        "price": {
          "type": "string",
          "description": "Price which can be number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 100.00 USD."
        },
        "address": {
          "description": "Address which can be specified in one of the following formats. (1) City, state, code, country, for example, Mountain View, CA, USA. (2) Full address, for example, 123 Boulevard St, Mountain View, CA 94043. (3) Latitude-longitude in the DDD format, for example, 41.40338, 2.17403",
          "type": "string"
        },
        "similarPropertyIds": {
          "description": "Similar property IDs.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "starRating": {
          "description": "Star rating. Must be a number between 1 to 5, inclusive.",
          "type": "string",
          "format": "int64"
        },
        "propertyId": {
          "type": "string",
          "description": "Required. Property ID which can be any sequence of letters and digits, and must be unique and match the values of remarketing tag. Required."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__DynamicJobsAsset": {
      "description": "A dynamic jobs asset.",
      "type": "object",
      "properties": {
        "jobId": {
          "type": "string",
          "description": "Required. Job ID which can be any sequence of letters and digits, and must be unique and match the values of remarketing tag. Required."
        },
        "salary": {
          "type": "string",
          "description": "Salary, for example, $100,000."
        },
        "jobTitle": {
          "type": "string",
          "description": "Required. Job title, for example, Software engineer. Required."
        },
        "contextualKeywords": {
          "type": "array",
          "description": "Contextual keywords, for example, Software engineering job.",
          "items": {
            "type": "string"
          }
        },
        "imageUrl": {
          "type": "string",
          "description": "Image URL, for example, http://www.example.com/image.png. The image will not be uploaded as image asset."
        },
        "iosAppLink": {
          "description": "iOS deep link, for example, exampleApp://content/page.",
          "type": "string"
        },
        "iosAppStoreId": {
          "format": "int64",
          "description": "iOS app store ID. This is used to check if the user has the app installed on their device before deep linking. If this field is set, then the ios_app_link field must also be present.",
          "type": "string"
        },
        "androidAppLink": {
          "type": "string",
          "description": "Android deep link, for example, android-app://com.example.android/http/example.com/gizmos?1234."
        },
        "locationId": {
          "type": "string",
          "description": "Location ID which can be any sequence of letters and digits. The ID sequence (job ID + location ID) must be unique."
        },
        "description": {
          "type": "string",
          "description": "Description, for example, Apply your technical skills."
        },
        "similarJobIds": {
          "type": "array",
          "description": "Similar job IDs, for example, 1275.",
          "items": {
            "type": "string"
          }
        },
        "jobCategory": {
          "description": "Job category, for example, Technical.",
          "type": "string"
        },
        "address": {
          "type": "string",
          "description": "Address which can be specified in one of the following formats. (1) City, state, code, country, for example, Mountain View, CA, USA. (2) Full address, for example, 123 Boulevard St, Mountain View, CA 94043. (3) Latitude-longitude in the DDD format, for example, 41.40338, 2.17403."
        },
        "jobSubtitle": {
          "description": "Job subtitle, for example, Level II.",
          "type": "string"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__DynamicLocalAsset": {
      "description": "A dynamic local asset.",
      "type": "object",
      "properties": {
        "description": {
          "description": "Description, for example, Save on your weekly bill.",
          "type": "string"
        },
        "formattedPrice": {
          "description": "Formatted price which can be any characters. If set, this attribute will be used instead of 'price', for example, Starting at $100.00.",
          "type": "string"
        },
        "similarDealIds": {
          "description": "Similar deal IDs, for example, 1275.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "category": {
          "type": "string",
          "description": "Category, for example, Food."
        },
        "androidAppLink": {
          "description": "Android deep link, for example, android-app://com.example.android/http/example.com/gizmos?1234.",
          "type": "string"
        },
        "iosAppLink": {
          "description": "iOS deep link, for example, exampleApp://content/page.",
          "type": "string"
        },
        "iosAppStoreId": {
          "format": "int64",
          "type": "string",
          "description": "iOS app store ID. This is used to check if the user has the app installed on their device before deep linking. If this field is set, then the ios_app_link field must also be present."
        },
        "salePrice": {
          "description": "Sale price which can be number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 80.00 USD. Must be less than the 'price' field.",
          "type": "string"
        },
        "imageUrl": {
          "description": "Image URL, for example, http://www.example.com/image.png. The image will not be uploaded as image asset.",
          "type": "string"
        },
        "contextualKeywords": {
          "description": "Contextual keywords, for example, Save groceries coupons.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "subtitle": {
          "type": "string",
          "description": "Subtitle, for example, Groceries."
        },
        "dealId": {
          "description": "Required. Deal ID which can be any sequence of letters and digits, and must be unique and match the values of remarketing tag. Required.",
          "type": "string"
        },
        "dealName": {
          "description": "Required. Deal name, for example, 50% off at Mountain View Grocers. Required.",
          "type": "string"
        },
        "formattedSalePrice": {
          "description": "Formatted sale price which can be any characters. If set, this attribute will be used instead of 'sale price', for example, On sale for $80.00.",
          "type": "string"
        },
        "address": {
          "type": "string",
          "description": "Address which can be specified in one of the following formats. (1) City, state, code, country, for example, Mountain View, CA, USA. (2) Full address, for example, 123 Boulevard St, Mountain View, CA 94043. (3) Latitude-longitude in the DDD format, for example, 41.40338, 2.17403."
        },
        "price": {
          "type": "string",
          "description": "Price which can be a number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 100.00 USD."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__DynamicRealEstateAsset": {
      "description": "A dynamic real estate asset.",
      "type": "object",
      "properties": {
        "price": {
          "description": "Price which can be number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 200,000.00 USD.",
          "type": "string"
        },
        "address": {
          "type": "string",
          "description": "Address which can be specified in one of the following formats. (1) City, state, code, country, for example, Mountain View, CA, USA. (2) Full address, for example, 123 Boulevard St, Mountain View, CA 94043. (3) Latitude-longitude in the DDD format, for example, 41.40338, 2.17403"
        },
        "propertyType": {
          "description": "Property type, for example, House.",
          "type": "string"
        },
        "listingName": {
          "type": "string",
          "description": "Required. Listing name, for example, Boulevard Bungalow. Required."
        },
        "listingType": {
          "description": "Listing type, for example, For sale.",
          "type": "string"
        },
        "contextualKeywords": {
          "description": "Contextual keywords, for example, For sale; Houses for sale.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "imageUrl": {
          "description": "Image URL, for example, http://www.example.com/image.png. The image will not be uploaded as image asset.",
          "type": "string"
        },
        "cityName": {
          "description": "City name, for example, Mountain View, California.",
          "type": "string"
        },
        "iosAppLink": {
          "type": "string",
          "description": "iOS deep link, for example, exampleApp://content/page."
        },
        "iosAppStoreId": {
          "type": "string",
          "description": "iOS app store ID. This is used to check if the user has the app installed on their device before deep linking. If this field is set, then the ios_app_link field must also be present.",
          "format": "int64"
        },
        "listingId": {
          "description": "Required. Listing ID which can be any sequence of letters and digits, and must be unique and match the values of remarketing tag. Required.",
          "type": "string"
        },
        "androidAppLink": {
          "description": "Android deep link, for example, android-app://com.example.android/http/example.com/gizmos?1234.",
          "type": "string"
        },
        "description": {
          "type": "string",
          "description": "Description, for example, 3 beds, 2 baths, 1568 sq. ft."
        },
        "similarListingIds": {
          "type": "array",
          "description": "Similar listing IDs.",
          "items": {
            "type": "string"
          }
        },
        "formattedPrice": {
          "type": "string",
          "description": "Formatted price which can be any characters. If set, this attribute will be used instead of 'price', for example, Starting at $200,000.00."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__DynamicTravelAsset": {
      "description": "A dynamic travel asset.",
      "type": "object",
      "properties": {
        "androidAppLink": {
          "description": "Android deep link, for example, android-app://com.example.android/http/example.com/gizmos?1234.",
          "type": "string"
        },
        "iosAppLink": {
          "description": "iOS deep link, for example, exampleApp://content/page.",
          "type": "string"
        },
        "iosAppStoreId": {
          "format": "int64",
          "type": "string",
          "description": "iOS app store ID. This is used to check if the user has the app installed on their device before deep linking. If this field is set, then the ios_app_link field must also be present."
        },
        "formattedPrice": {
          "type": "string",
          "description": "Formatted price which can be any characters. If set, this attribute will be used instead of 'price', for example, Starting at $100.00."
        },
        "category": {
          "type": "string",
          "description": "Category, for example, Express."
        },
        "salePrice": {
          "type": "string",
          "description": "Sale price which can be a number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 80.00 USD. Must be less than the 'price' field."
        },
        "imageUrl": {
          "type": "string",
          "description": "Image URL, for example, http://www.example.com/image.png. The image will not be uploaded as image asset."
        },
        "destinationId": {
          "description": "Required. Destination ID which can be any sequence of letters and digits, and must be unique and match the values of remarketing tag. Required.",
          "type": "string"
        },
        "contextualKeywords": {
          "type": "array",
          "description": "Contextual keywords, for example, Paris trains.",
          "items": {
            "type": "string"
          }
        },
        "similarDestinationIds": {
          "description": "Similar destination IDs, for example, NYC.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "title": {
          "description": "Required. Title, for example, Book your train ticket. Required.",
          "type": "string"
        },
        "originId": {
          "type": "string",
          "description": "Origin ID which can be any sequence of letters and digits. The ID sequence (destination ID + origin ID) must be unique."
        },
        "originName": {
          "type": "string",
          "description": "Origin name, for example, London."
        },
        "price": {
          "description": "Price which can be a number followed by the alphabetic currency code, ISO 4217 standard. Use '.' as the decimal mark, for example, 100.00 USD.",
          "type": "string"
        },
        "destinationName": {
          "description": "Destination name, for example, Paris.",
          "type": "string"
        },
        "destinationAddress": {
          "description": "Destination address which can be specified in one of the following formats. (1) City, state, code, country, for example, Mountain View, CA, USA. (2) Full address, for example, 123 Boulevard St, Mountain View, CA 94043. (3) Latitude-longitude in the DDD format, for example, 41.40338, 2.17403.",
          "type": "string"
        },
        "formattedSalePrice": {
          "type": "string",
          "description": "Formatted sale price which can be any characters. If set, this attribute will be used instead of 'sale price', for example, On sale for $80.00."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__ExpandedDynamicSearchAdInfo": {
      "type": "object",
      "properties": {
        "description": {
          "description": "The description of the ad.",
          "type": "string"
        },
        "description2": {
          "type": "string",
          "description": "The second description of the ad."
        }
      },
      "description": "An expanded dynamic search ad."
    },
    "GoogleAdsGoogleadsV25Common__ExpandedTextAdInfo": {
      "type": "object",
      "properties": {
        "headlinePart2": {
          "description": "The second part of the ad's headline.",
          "type": "string"
        },
        "description2": {
          "type": "string",
          "description": "The second description of the ad."
        },
        "headlinePart3": {
          "description": "The third part of the ad's headline.",
          "type": "string"
        },
        "description": {
          "description": "The description of the ad.",
          "type": "string"
        },
        "path1": {
          "type": "string",
          "description": "The text that can appear alongside the ad's displayed URL."
        },
        "headlinePart1": {
          "type": "string",
          "description": "The first part of the ad's headline."
        },
        "path2": {
          "description": "Additional text that can appear alongside the ad's displayed URL.",
          "type": "string"
        }
      },
      "description": "An expanded text ad. Expanded text ads are deprecated."
    },
    "GoogleAdsGoogleadsV25Common__FacebookMessengerBusinessMessageInfo": {
      "type": "object",
      "properties": {
        "pageName": {
          "type": "string",
          "description": "Required. Facebook page name used for starting a chat on Facebook Messenger."
        }
      },
      "description": "Facebook Messenger information to use for messaging."
    },
    "GoogleAdsGoogleadsV25Common__FinalAppUrl": {
      "description": "A URL for deep linking into an app for the given operating system.",
      "type": "object",
      "properties": {
        "osType": {
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "The Apple IOS operating system.",
            "The Android operating system."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "IOS",
            "ANDROID"
          ],
          "type": "string",
          "description": "The operating system targeted by this URL. Required."
        },
        "url": {
          "type": "string",
          "description": "The app deep link URL. Deep links specify a location in an app that corresponds to the content you'd like to show, and should be of the form {scheme}://{host_path} The scheme identifies which app to open. For your app, you can use a custom scheme that starts with the app's name. The host and path specify the unique location in the app where your content exists. Example: \"exampleapp://productid_1234\". Required."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__HotelAdInfo": {
      "description": "A hotel ad.",
      "type": "object",
      "properties": {}
    },
    "GoogleAdsGoogleadsV25Common__HotelCalloutAsset": {
      "description": "An asset representing a hotel callout.",
      "type": "object",
      "properties": {
        "text": {
          "description": "Required. The text of the hotel callout asset. The length of this string should be between 1 and 25, inclusive.",
          "type": "string"
        },
        "languageCode": {
          "type": "string",
          "description": "Required. The language of the hotel callout. Represented as BCP 47 language tag."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__HotelPropertyAsset": {
      "description": "A hotel property asset.",
      "type": "object",
      "properties": {
        "hotelAddress": {
          "description": "Address of the hotel. Read-only.",
          "type": "string"
        },
        "placeId": {
          "type": "string",
          "description": "Place IDs uniquely identify a place in the Google Places database and on Google Maps. See https://developers.google.com/places/web-service/place-id to learn more."
        },
        "hotelName": {
          "type": "string",
          "description": "Name of the hotel. Read-only."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__ImageAdInfo": {
      "type": "object",
      "properties": {
        "imageAsset": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset",
          "description": "The image assets used for the ad."
        },
        "pixelHeight": {
          "description": "Height in pixels of the full size image.",
          "type": "string",
          "format": "int64"
        },
        "adIdToCopyImageFrom": {
          "format": "int64",
          "description": "An ad ID to copy the image from.",
          "type": "string"
        },
        "imageUrl": {
          "description": "URL of the full size image.",
          "type": "string"
        },
        "pixelWidth": {
          "format": "int64",
          "type": "string",
          "description": "Width in pixels of the full size image."
        },
        "previewImageUrl": {
          "description": "URL of the preview size image.",
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "The name of the image. If the image was created from a MediaFile, this is the MediaFile's name. If the image was created from bytes, this is empty."
        },
        "previewPixelHeight": {
          "description": "Height in pixels of the preview size image.",
          "type": "string",
          "format": "int64"
        },
        "data": {
          "format": "byte",
          "type": "string",
          "description": "Raw image data as bytes."
        },
        "previewPixelWidth": {
          "description": "Width in pixels of the preview size image.",
          "type": "string",
          "format": "int64"
        },
        "mimeType": {
          "x-enumDescriptions": [
            "The mime type has not been specified.",
            "The received value is not known in this version. This is a response-only value.",
            "MIME type of image/jpeg.",
            "MIME type of image/gif.",
            "MIME type of image/png.",
            "MIME type of application/x-shockwave-flash.",
            "MIME type of text/html.",
            "MIME type of application/pdf.",
            "MIME type of application/msword.",
            "MIME type of application/vnd.ms-excel.",
            "MIME type of application/rtf.",
            "MIME type of audio/wav.",
            "MIME type of audio/mp3.",
            "MIME type of application/x-html5-ad-zip."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "IMAGE_JPEG",
            "IMAGE_GIF",
            "IMAGE_PNG",
            "FLASH",
            "TEXT_HTML",
            "PDF",
            "MSWORD",
            "MSEXCEL",
            "RTF",
            "AUDIO_WAV",
            "AUDIO_MP3",
            "HTML5_AD_ZIP"
          ],
          "type": "string",
          "description": "The mime type of the image."
        }
      },
      "description": "An image ad."
    },
    "GoogleAdsGoogleadsV25Common__ImageAsset": {
      "type": "object",
      "properties": {
        "mimeType": {
          "x-enumDescriptions": [
            "The mime type has not been specified.",
            "The received value is not known in this version. This is a response-only value.",
            "MIME type of image/jpeg.",
            "MIME type of image/gif.",
            "MIME type of image/png.",
            "MIME type of application/x-shockwave-flash.",
            "MIME type of text/html.",
            "MIME type of application/pdf.",
            "MIME type of application/msword.",
            "MIME type of application/vnd.ms-excel.",
            "MIME type of application/rtf.",
            "MIME type of audio/wav.",
            "MIME type of audio/mp3.",
            "MIME type of application/x-html5-ad-zip."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "IMAGE_JPEG",
            "IMAGE_GIF",
            "IMAGE_PNG",
            "FLASH",
            "TEXT_HTML",
            "PDF",
            "MSWORD",
            "MSEXCEL",
            "RTF",
            "AUDIO_WAV",
            "AUDIO_MP3",
            "HTML5_AD_ZIP"
          ],
          "type": "string",
          "description": "MIME type of the image asset."
        },
        "fullSize": {
          "description": "Metadata for this image at its original size.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__ImageDimension"
        },
        "data": {
          "format": "byte",
          "type": "string",
          "description": "The raw bytes data of an image. This field is mutate only."
        },
        "fileSize": {
          "description": "File size of the image asset in bytes.",
          "type": "string",
          "format": "int64"
        }
      },
      "description": "An Image asset."
    },
    "GoogleAdsGoogleadsV25Common__ImageDimension": {
      "description": "Metadata for an image at a certain size, either original or resized.",
      "type": "object",
      "properties": {
        "heightPixels": {
          "description": "Height of the image.",
          "type": "string",
          "format": "int64"
        },
        "widthPixels": {
          "format": "int64",
          "description": "Width of the image.",
          "type": "string"
        },
        "url": {
          "description": "A URL that returns the image with this height and width.",
          "type": "string"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__InFeedVideoAdInfo": {
      "type": "object",
      "properties": {
        "headline": {
          "description": "The headline of the ad.",
          "type": "string"
        },
        "description1": {
          "type": "string",
          "description": "First text line for the ad."
        },
        "description2": {
          "description": "Second text line for the ad.",
          "type": "string"
        },
        "thumbnail": {
          "x-enumDescriptions": [
            "The type has not been specified.",
            "The received value is not known in this version. This is a response-only value.",
            "The default thumbnail. Can be auto-generated or user-uploaded.",
            "Thumbnail 1, generated from the video.",
            "Thumbnail 2, generated from the video.",
            "Thumbnail 3, generated from the video."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "DEFAULT_THUMBNAIL",
            "THUMBNAIL_1",
            "THUMBNAIL_2",
            "THUMBNAIL_3"
          ],
          "type": "string",
          "description": "Video thumbnail image to use."
        }
      },
      "description": "Representation of In-feed video ad format."
    },
    "GoogleAdsGoogleadsV25Common__KeywordInfo": {
      "type": "object",
      "properties": {
        "text": {
          "type": "string",
          "description": "The text of the keyword (at most 80 characters and 10 words)."
        },
        "matchType": {
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "Exact match.",
            "Phrase match.",
            "Broad match."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "EXACT",
            "PHRASE",
            "BROAD"
          ],
          "type": "string",
          "description": "The match type of the keyword."
        }
      },
      "description": "A keyword criterion."
    },
    "GoogleAdsGoogleadsV25Common__LeadFormAsset": {
      "description": "A Lead Form asset.",
      "type": "object",
      "properties": {
        "headline": {
          "description": "Required. Headline of the expanded form to describe what the form is asking for or facilitating.",
          "type": "string"
        },
        "customDisclosure": {
          "description": "Custom disclosure shown along with Google disclaimer on the lead form. Accessible to allowed customers only.",
          "type": "string"
        },
        "customQuestionFields": {
          "description": "Ordered list of custom question fields. This field is subject to a limit of 5 qualifying questions per form.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__LeadFormCustomQuestionField"
          },
          "type": "array"
        },
        "postSubmitDescription": {
          "description": "Detailed description shown after form submission that describes how the advertiser will follow up with the user.",
          "type": "string"
        },
        "callToActionType": {
          "description": "Required. Pre-defined display text that encourages user to expand the form.",
          "type": "string",
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "Learn more.",
            "Get quote.",
            "Apply now.",
            "Sign Up.",
            "Contact us.",
            "Subscribe.",
            "Download.",
            "Book now.",
            "Get offer.",
            "Register.",
            "Get info.",
            "Request a demo.",
            "Join now.",
            "Get started."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "LEARN_MORE",
            "GET_QUOTE",
            "APPLY_NOW",
            "SIGN_UP",
            "CONTACT_US",
            "SUBSCRIBE",
            "DOWNLOAD",
            "BOOK_NOW",
            "GET_OFFER",
            "REGISTER",
            "GET_INFO",
            "REQUEST_DEMO",
            "JOIN_NOW",
            "GET_STARTED"
          ]
        },
        "privacyPolicyUrl": {
          "description": "Required. Link to a page describing the policy on how the collected data is handled by the advertiser/business.",
          "type": "string"
        },
        "deliveryMethods": {
          "type": "array",
          "description": "Configured methods for collected lead data to be delivered to advertiser. Only one method typed as WebhookDelivery can be configured.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__LeadFormDeliveryMethod"
          }
        },
        "businessName": {
          "description": "Required. The name of the business being advertised.",
          "type": "string"
        },
        "backgroundImageAsset": {
          "description": "Asset resource name of the background image. The image dimensions must be exactly 1200x628.",
          "type": "string"
        },
        "description": {
          "type": "string",
          "description": "Required. Detailed description of the expanded form to describe what the form is asking for or facilitating."
        },
        "postSubmitHeadline": {
          "type": "string",
          "description": "Headline of text shown after form submission that describes how the advertiser will follow up with the user."
        },
        "callToActionDescription": {
          "description": "Required. Text giving a clear value proposition of what users expect once they expand the form.",
          "type": "string"
        },
        "desiredIntent": {
          "type": "string",
          "description": "Chosen intent for the lead form, for example, more volume or more qualified.",
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "Deliver more leads at a potentially lower quality.",
            "Deliver leads that are more qualified."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "LOW_INTENT",
            "HIGH_INTENT"
          ]
        },
        "fields": {
          "type": "array",
          "description": "Ordered list of input fields. This field can be updated by reordering questions, but not by adding or removing questions.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__LeadFormField"
          }
        },
        "postSubmitCallToActionType": {
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "Visit site.",
            "Download.",
            "Learn more.",
            "Shop now."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "VISIT_SITE",
            "DOWNLOAD",
            "LEARN_MORE",
            "SHOP_NOW"
          ],
          "type": "string",
          "description": "Pre-defined display text that encourages user action after the form is submitted."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__LeadFormCustomQuestionField": {
      "type": "object",
      "properties": {
        "customQuestionText": {
          "description": "The exact custom question field text (for example, \"What kind of vehicle do you have?\").",
          "type": "string"
        },
        "singleChoiceAnswers": {
          "description": "Answer configuration for a single choice question. Minimum of 2 answers and maximum of 12 allowed.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__LeadFormSingleChoiceAnswers"
        },
        "hasLocationAnswer": {
          "type": "boolean",
          "description": "Answer configuration for location question. If true, campaign/account level location data (state, city, business name etc) will be rendered on the Lead Form. Starting V13.1, has_location_answer can only be set for \"What is your preferred dealership?\" question, for advertisers with Location Assets setup at campaign/account level."
        }
      },
      "description": "One custom question input field instance within a form."
    },
    "GoogleAdsGoogleadsV25Common__LeadFormDeliveryMethod": {
      "type": "object",
      "properties": {
        "webhook": {
          "description": "Webhook method of delivery.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__WebhookDelivery"
        }
      },
      "description": "A configuration of how leads are delivered to the advertiser."
    },
    "GoogleAdsGoogleadsV25Common__LeadFormField": {
      "description": "One input field instance within a form.",
      "type": "object",
      "properties": {
        "inputType": {
          "type": "string",
          "description": "Describes the input type, which may be a predefined type such as \"full name\" or a pre-vetted question like \"What kind of vehicle do you have?\".",
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "The user will be asked to fill in their given and family name. This field cannot be set at the same time as GIVEN_NAME or FAMILY_NAME.",
            "The user will be asked to fill in their email address.",
            "The user will be asked to fill in their phone number.",
            "The user will be asked to fill in their zip code.",
            "The user will be asked to fill in their street address.",
            "The user will be asked to fill in their city.",
            "The user will be asked to fill in their region part of the address (for example, state for US, province for Canada).",
            "The user will be asked to fill in their country.",
            "The user will be asked to fill in their work email address.",
            "The user will be asked to fill in their company name.",
            "The user will be asked to fill in their work phone.",
            "The user will be asked to fill in their job title.",
            "The user will be asked to fill in their CPF for Brazil users.",
            "The user will be asked to fill in their DNI for Argentina users.",
            "The user will be asked to fill in their DNI for Peru users.",
            "The user will be asked to fill in their RUT for Chile users.",
            "The user will be asked to fill in their CC for Colombia users.",
            "The user will be asked to fill in their CI for Ecuador users.",
            "The user will be asked to fill in their RFC for Mexico users.",
            "The user will be asked to fill in their first name. This field can not be set at the same time as FULL_NAME.",
            "The user will be asked to fill in their last name. This field can not be set at the same time as FULL_NAME.",
            "Question: \"Which model are you interested in?\" Category: \"Auto\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Which type of vehicle are you interested in?\" Category: \"Auto\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What is your preferred dealership?\" Category: \"Auto\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"When do you plan on purchasing a vehicle?\" Category: \"Auto\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Do you own a vehicle?\" Category: \"Auto\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What vehicle ownership option are you interested in?\" Category: \"Auto\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What type of vehicle condition are you interested in?\" Category: \"Auto\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What size is your company?\" Category: \"Business\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What is your annual sales volume?\" Category: \"Business\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"How many years have you been in business?\" Category: \"Business\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What is your job department?\" Category: \"Business\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What is your job role?\" Category: \"Business\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 18 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 19 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 20 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 21 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 22 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 23 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 24 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 25 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 26 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 27 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 28 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 29 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 30 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 31 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 32 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 33 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 34 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 35 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 36 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 37 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 38 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 39 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 40 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 41 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 42 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 43 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 44 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 45 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 46 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 47 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 48 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 49 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 50 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 51 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 52 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 53 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 54 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 55 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 56 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 57 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 58 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 59 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 60 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 61 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 62 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 63 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 64 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you over 65 years of age?\" Category: \"Demographics\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Which program are you interested in?\" Category: \"Education\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Which course are you interested in?\" Category: \"Education\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Which product are you interested in?\" Category: \"General\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Which service are you interested in?\" Category: \"General\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Which offer are you interested in?\" Category: \"General\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Which category are you interested in?\" Category: \"General\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What is your preferred method of contact?\" Category: \"General\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What is your preferred location?\" Category: \"General\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What is the best time to contact you?\" Category: \"General\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"When are you looking to make a purchase?\" Category: \"General\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"How many years of work experience do you have?\" Category: \"Jobs\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What industry do you work in?\" Category: \"Jobs\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What is your highest level of education?\" Category: \"Jobs\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What type of property are you looking for?\" Category: \"Real Estate\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What do you need a realtor's help with?\" Category: \"Real Estate\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What neighborhood are you interested in?\" Category: \"Real Estate\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What price range are you looking for?\" Category: \"Real Estate\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"How many bedrooms are you looking for?\" Category: \"Real Estate\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you looking for a fully furnished property?\" Category: \"Real Estate\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Are you looking for properties that allow pets?\" Category: \"Real Estate\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What is the next product you plan to purchase?\" Category: \"Retail\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Would you like to sign up for an event?\" Category: \"Retail\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Where are you interested in shopping?\" Category: \"Retail\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What is your favorite brand?\" Category: \"Retail\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Which type of valid commercial license do you have?\" Category: \"Transportation\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Interested in booking an event?\" Category: \"Travel\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What is your destination country?\" Category: \"Travel\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What is your destination city?\" Category: \"Travel\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What is your departure country?\" Category: \"Travel\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What is your departure city?\" Category: \"Travel\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What is your departure date?\" Category: \"Travel\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What is your return date?\" Category: \"Travel\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"How many people are you traveling with?\" Category: \"Travel\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"What is your travel budget?\" Category: \"Travel\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields.",
            "Question: \"Where do you want to stay during your travel?\" Category: \"Travel\" This field is subject to a limit of 5 qualifying questions per form and cannot be used if values are set using custom_question_fields."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "FULL_NAME",
            "EMAIL",
            "PHONE_NUMBER",
            "POSTAL_CODE",
            "STREET_ADDRESS",
            "CITY",
            "REGION",
            "COUNTRY",
            "WORK_EMAIL",
            "COMPANY_NAME",
            "WORK_PHONE",
            "JOB_TITLE",
            "GOVERNMENT_ISSUED_ID_CPF_BR",
            "GOVERNMENT_ISSUED_ID_DNI_AR",
            "GOVERNMENT_ISSUED_ID_DNI_PE",
            "GOVERNMENT_ISSUED_ID_RUT_CL",
            "GOVERNMENT_ISSUED_ID_CC_CO",
            "GOVERNMENT_ISSUED_ID_CI_EC",
            "GOVERNMENT_ISSUED_ID_RFC_MX",
            "FIRST_NAME",
            "LAST_NAME",
            "VEHICLE_MODEL",
            "VEHICLE_TYPE",
            "PREFERRED_DEALERSHIP",
            "VEHICLE_PURCHASE_TIMELINE",
            "VEHICLE_OWNERSHIP",
            "VEHICLE_PAYMENT_TYPE",
            "VEHICLE_CONDITION",
            "COMPANY_SIZE",
            "ANNUAL_SALES",
            "YEARS_IN_BUSINESS",
            "JOB_DEPARTMENT",
            "JOB_ROLE",
            "OVER_18_AGE",
            "OVER_19_AGE",
            "OVER_20_AGE",
            "OVER_21_AGE",
            "OVER_22_AGE",
            "OVER_23_AGE",
            "OVER_24_AGE",
            "OVER_25_AGE",
            "OVER_26_AGE",
            "OVER_27_AGE",
            "OVER_28_AGE",
            "OVER_29_AGE",
            "OVER_30_AGE",
            "OVER_31_AGE",
            "OVER_32_AGE",
            "OVER_33_AGE",
            "OVER_34_AGE",
            "OVER_35_AGE",
            "OVER_36_AGE",
            "OVER_37_AGE",
            "OVER_38_AGE",
            "OVER_39_AGE",
            "OVER_40_AGE",
            "OVER_41_AGE",
            "OVER_42_AGE",
            "OVER_43_AGE",
            "OVER_44_AGE",
            "OVER_45_AGE",
            "OVER_46_AGE",
            "OVER_47_AGE",
            "OVER_48_AGE",
            "OVER_49_AGE",
            "OVER_50_AGE",
            "OVER_51_AGE",
            "OVER_52_AGE",
            "OVER_53_AGE",
            "OVER_54_AGE",
            "OVER_55_AGE",
            "OVER_56_AGE",
            "OVER_57_AGE",
            "OVER_58_AGE",
            "OVER_59_AGE",
            "OVER_60_AGE",
            "OVER_61_AGE",
            "OVER_62_AGE",
            "OVER_63_AGE",
            "OVER_64_AGE",
            "OVER_65_AGE",
            "EDUCATION_PROGRAM",
            "EDUCATION_COURSE",
            "PRODUCT",
            "SERVICE",
            "OFFER",
            "CATEGORY",
            "PREFERRED_CONTACT_METHOD",
            "PREFERRED_LOCATION",
            "PREFERRED_CONTACT_TIME",
            "PURCHASE_TIMELINE",
            "YEARS_OF_EXPERIENCE",
            "JOB_INDUSTRY",
            "LEVEL_OF_EDUCATION",
            "PROPERTY_TYPE",
            "REALTOR_HELP_GOAL",
            "PROPERTY_COMMUNITY",
            "PRICE_RANGE",
            "NUMBER_OF_BEDROOMS",
            "FURNISHED_PROPERTY",
            "PETS_ALLOWED_PROPERTY",
            "NEXT_PLANNED_PURCHASE",
            "EVENT_SIGNUP_INTEREST",
            "PREFERRED_SHOPPING_PLACES",
            "FAVORITE_BRAND",
            "TRANSPORTATION_COMMERCIAL_LICENSE_TYPE",
            "EVENT_BOOKING_INTEREST",
            "DESTINATION_COUNTRY",
            "DESTINATION_CITY",
            "DEPARTURE_COUNTRY",
            "DEPARTURE_CITY",
            "DEPARTURE_DATE",
            "RETURN_DATE",
            "NUMBER_OF_TRAVELERS",
            "TRAVEL_BUDGET",
            "TRAVEL_ACCOMMODATION"
          ]
        },
        "singleChoiceAnswers": {
          "description": "Answer configuration for a single choice question. Can be set only for pre-vetted question fields. Minimum of 2 answers required and maximum of 12 allowed.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__LeadFormSingleChoiceAnswers"
        },
        "hasLocationAnswer": {
          "description": "Answer configuration for location question. If true, campaign/account level location data (state, city, business name etc) will be rendered on the Lead Form. Starting V13.1, has_location_answer can only be set for \"What is your preferred dealership?\" question, for advertisers with Location Assets setup at campaign/account level.",
          "type": "boolean"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__LeadFormSingleChoiceAnswers": {
      "description": "Defines possible answers for a single choice question, usually presented as a single-choice drop-down list.",
      "type": "object",
      "properties": {
        "answers": {
          "type": "array",
          "description": "List of choices for a single question field. The order of entries defines UI order. Minimum of 2 answers required and maximum of 12 allowed.",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__LegacyAppInstallAdInfo": {
      "description": "A legacy app install ad that only can be used by a few select customers.",
      "type": "object",
      "properties": {
        "appStore": {
          "description": "The app store the mobile app is available in.",
          "type": "string",
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "Apple iTunes.",
            "Google Play.",
            "Windows Store.",
            "Windows Phone Store.",
            "The app is hosted in a Chinese app store."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "APPLE_APP_STORE",
            "GOOGLE_PLAY",
            "WINDOWS_STORE",
            "WINDOWS_PHONE_STORE",
            "CN_APP_STORE"
          ]
        },
        "description1": {
          "type": "string",
          "description": "The first description line of the ad."
        },
        "description2": {
          "type": "string",
          "description": "The second description line of the ad."
        },
        "headline": {
          "type": "string",
          "description": "The headline of the ad."
        },
        "appId": {
          "description": "The ID of the mobile app.",
          "type": "string"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__LegacyResponsiveDisplayAdInfo": {
      "description": "A legacy responsive display ad. Ads of this type are labeled 'Responsive ads' in the Google Ads UI.",
      "type": "object",
      "properties": {
        "allowFlexibleColor": {
          "description": "Advertiser's consent to allow flexible color. When true, the ad may be served with different color if necessary. When false, the ad will be served with the specified colors or a neutral color. The default value is `true`. Must be true if `main_color` and `accent_color` are not set.",
          "type": "boolean"
        },
        "callToActionText": {
          "description": "The call-to-action text for the ad.",
          "type": "string"
        },
        "squareLogoImage": {
          "type": "string",
          "description": "The MediaFile resource name of the square logo image used in the ad."
        },
        "accentColor": {
          "type": "string",
          "description": "The accent color of the ad in hexadecimal, for example, #ffffff for white. If one of `main_color` and `accent_color` is set, the other is required as well."
        },
        "marketingImage": {
          "description": "The MediaFile resource name of the marketing image used in the ad.",
          "type": "string"
        },
        "squareMarketingImage": {
          "description": "The MediaFile resource name of the square marketing image used in the ad.",
          "type": "string"
        },
        "shortHeadline": {
          "type": "string",
          "description": "The short version of the ad's headline."
        },
        "description": {
          "description": "The description of the ad.",
          "type": "string"
        },
        "longHeadline": {
          "type": "string",
          "description": "The long version of the ad's headline."
        },
        "businessName": {
          "type": "string",
          "description": "The business name in the ad."
        },
        "mainColor": {
          "description": "The main color of the ad in hexadecimal, for example, #ffffff for white. If one of `main_color` and `accent_color` is set, the other is required as well.",
          "type": "string"
        },
        "formatSetting": {
          "x-enumDescriptions": [
            "Not specified.",
            "The value is unknown in this version.",
            "Text, image and native formats.",
            "Text and image formats.",
            "Native format, for example, the format rendering is controlled by the publisher and not by Google."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "ALL_FORMATS",
            "NON_NATIVE",
            "NATIVE"
          ],
          "type": "string",
          "description": "Specifies which format the ad will be served in. Default is ALL_FORMATS."
        },
        "pricePrefix": {
          "type": "string",
          "description": "Prefix before price. For example, 'as low as'."
        },
        "promoText": {
          "type": "string",
          "description": "Promotion text used for dynamic formats of responsive ads. For example 'Free two-day shipping'."
        },
        "logoImage": {
          "description": "The MediaFile resource name of the logo image used in the ad.",
          "type": "string"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__LocalAdInfo": {
      "type": "object",
      "properties": {
        "callToActions": {
          "type": "array",
          "description": "List of text assets for call-to-actions. When the ad serves the call-to-actions will be selected from this list. At least 1 and at most 5 call-to-actions must be specified.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          }
        },
        "path1": {
          "type": "string",
          "description": "First part of optional text that can be appended to the URL in the ad."
        },
        "path2": {
          "description": "Second part of optional text that can be appended to the URL in the ad. This field can only be set when `path1` is also set.",
          "type": "string"
        },
        "descriptions": {
          "description": "List of text assets for descriptions. When the ad serves the descriptions will be selected from this list. At least 1 and at most 5 descriptions must be specified.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          },
          "type": "array"
        },
        "logoImages": {
          "type": "array",
          "description": "List of logo image assets that may be displayed with the ad. The images must be 128x128 pixels and not larger than 120KB. At least 1 and at most 5 image assets must be specified.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
          }
        },
        "headlines": {
          "type": "array",
          "description": "List of text assets for headlines. When the ad serves the headlines will be selected from this list. At least 1 and at most 5 headlines must be specified.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          }
        },
        "marketingImages": {
          "type": "array",
          "description": "List of marketing image assets that may be displayed with the ad. The images must be 314x600 pixels or 320x320 pixels. At least 1 and at most 20 image assets must be specified.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
          }
        },
        "videos": {
          "description": "List of YouTube video assets that may be displayed with the ad. At least 1 and at most 20 video assets must be specified.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdVideoAsset"
          },
          "type": "array"
        }
      },
      "description": "A local ad."
    },
    "GoogleAdsGoogleadsV25Common__LocationAsset": {
      "type": "object",
      "properties": {
        "businessProfileLocations": {
          "description": "The list of business locations for the customer. This will only be returned if the Location Asset is syncing from the Business Profile account. It is possible to have multiple Business Profile listings under the same account that point to the same Place ID.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__BusinessProfileLocation"
          },
          "type": "array"
        },
        "locationOwnershipType": {
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "Business Owner of location(legacy location extension - LE).",
            "Affiliate location(Third party location extension - ALE)."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "BUSINESS_OWNER",
            "AFFILIATE"
          ],
          "type": "string",
          "description": "The type of location ownership. If the type is BUSINESS_OWNER, it will be served as a location extension. If the type is AFFILIATE, it will be served as an affiliate location."
        },
        "placeId": {
          "type": "string",
          "description": "Place IDs uniquely identify a place in the Google Places database and on Google Maps. This field is unique for a given customer ID and asset type. See https://developers.google.com/places/web-service/place-id to learn more about Place ID."
        }
      },
      "description": "A location asset."
    },
    "GoogleAdsGoogleadsV25Common__MediaBundleAsset": {
      "description": "A MediaBundle asset.",
      "type": "object",
      "properties": {
        "data": {
          "format": "byte",
          "description": "Media bundle (ZIP file) asset data. The format of the uploaded ZIP file depends on the ad field where it will be used. For more information on the format, see the documentation of the ad field where you plan on using the MediaBundleAsset. This field is mutate only.",
          "type": "string"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__MobileAppAsset": {
      "type": "object",
      "properties": {
        "appStore": {
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "Mobile app vendor for Apple app store.",
            "Mobile app vendor for Google app store."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "APPLE_APP_STORE",
            "GOOGLE_APP_STORE"
          ],
          "description": "Required. The application store that distributes this specific app.",
          "type": "string"
        },
        "linkText": {
          "description": "Required. The visible text displayed when the link is rendered in an ad. The length of this string should be between 1 and 25, inclusive.",
          "type": "string"
        },
        "startDate": {
          "description": "Start date of when this asset is effective and can begin serving, in yyyy-MM-dd format.",
          "type": "string"
        },
        "endDate": {
          "type": "string",
          "description": "Last date of when this asset is effective and still serving, in yyyy-MM-dd format."
        },
        "appId": {
          "description": "Required. A string that uniquely identifies a mobile application. It should just contain the platform native id, like \"com.android.ebay\" for Android or \"12345689\" for iOS.",
          "type": "string"
        }
      },
      "description": "An asset representing a mobile app."
    },
    "GoogleAdsGoogleadsV25Common__Money": {
      "type": "object",
      "properties": {
        "currencyCode": {
          "description": "Three-character ISO 4217 currency code.",
          "type": "string"
        },
        "amountMicros": {
          "description": "Amount in micros. One million is equivalent to one unit.",
          "type": "string",
          "format": "int64"
        }
      },
      "description": "Represents a price in a particular currency."
    },
    "GoogleAdsGoogleadsV25Common__PageFeedAsset": {
      "description": "A Page Feed asset.",
      "type": "object",
      "properties": {
        "labels": {
          "description": "Labels used to group the page urls.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "pageUrl": {
          "type": "string",
          "description": "Required. The webpage that advertisers want to target."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__PolicyTopicConstraint": {
      "type": "object",
      "properties": {
        "resellerConstraint": {
          "description": "Reseller constraint.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common_PolicyTopicConstraint_ResellerConstraint"
        },
        "certificateMissingInCountryList": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common_PolicyTopicConstraint_CountryConstraintList",
          "description": "Countries where a certificate is required for serving."
        },
        "countryConstraintList": {
          "description": "Countries where the resource cannot serve.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common_PolicyTopicConstraint_CountryConstraintList"
        },
        "certificateDomainMismatchInCountryList": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common_PolicyTopicConstraint_CountryConstraintList",
          "description": "Countries where the resource's domain is not covered by the certificates associated with it."
        }
      },
      "description": "Describes the effect on serving that a policy topic entry will have."
    },
    "GoogleAdsGoogleadsV25Common__PolicyTopicEntry": {
      "type": "object",
      "properties": {
        "topic": {
          "description": "Policy topic this finding refers to. For example, \"ALCOHOL\", \"TRADEMARKS_IN_AD_TEXT\", or \"DESTINATION_NOT_WORKING\". The set of possible policy topics is not fixed for a particular API version and may change at any time.",
          "type": "string"
        },
        "type": {
          "type": "string",
          "description": "Describes the negative or positive effect this policy will have on serving.",
          "x-enumDescriptions": [
            "No value has been specified.",
            "The received value is not known in this version. This is a response-only value.",
            "The resource will not be served.",
            "The resource will not be served under some circumstances.",
            "The resource cannot serve at all because of the current targeting criteria.",
            "May be of interest, but does not limit how the resource is served.",
            "Could increase coverage beyond normal.",
            "Constrained for all targeted countries, but may serve in other countries through area of interest."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "PROHIBITED",
            "LIMITED",
            "FULLY_LIMITED",
            "DESCRIPTIVE",
            "BROADENING",
            "AREA_OF_INTEREST_ONLY"
          ]
        },
        "constraints": {
          "description": "Indicates how serving of this resource may be affected (for example, not serving in a country).",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__PolicyTopicConstraint"
          },
          "type": "array"
        },
        "evidences": {
          "type": "array",
          "description": "Additional information that explains policy finding (for example, the brand name for a trademark finding).",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__PolicyTopicEvidence"
          }
        }
      },
      "description": "Policy finding attached to a resource (for example, alcohol policy associated with a site that sells alcohol). Each PolicyTopicEntry has a topic that indicates the specific ads policy the entry is about and a type to indicate the effect that the entry will have on serving. It may optionally have one or more evidences that indicate the reason for the finding. It may also optionally have one or more constraints that provide details about how serving may be restricted."
    },
    "GoogleAdsGoogleadsV25Common__PolicyTopicEvidence": {
      "description": "Additional information that explains a policy finding.",
      "type": "object",
      "properties": {
        "websiteList": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common_PolicyTopicEvidence_WebsiteList",
          "description": "List of websites linked with this resource."
        },
        "languageCode": {
          "description": "The language the resource was detected to be written in. This is an IETF language tag such as \"en-US\".",
          "type": "string"
        },
        "destinationTextList": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common_PolicyTopicEvidence_DestinationTextList",
          "description": "The text in the destination of the resource that is causing a policy finding."
        },
        "destinationMismatch": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common_PolicyTopicEvidence_DestinationMismatch",
          "description": "Mismatch between the destinations of a resource's URLs."
        },
        "destinationNotWorking": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common_PolicyTopicEvidence_DestinationNotWorking",
          "description": "Details when the destination is returning an HTTP error code or isn't functional in all locations for commonly used devices."
        },
        "textList": {
          "description": "List of evidence found in the text of a resource.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common_PolicyTopicEvidence_TextList"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__PriceAsset": {
      "type": "object",
      "properties": {
        "priceQualifier": {
          "description": "The price qualifier of the price asset.",
          "type": "string",
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "'From' qualifier for the price.",
            "'Up to' qualifier for the price.",
            "'Average' qualifier for the price."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "FROM",
            "UP_TO",
            "AVERAGE"
          ]
        },
        "languageCode": {
          "description": "Required. The language of the price asset. Represented as BCP 47 language tag.",
          "type": "string"
        },
        "type": {
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "The type for showing a list of brands.",
            "The type for showing a list of events.",
            "The type for showing locations relevant to your business.",
            "The type for showing sub-regions or districts within a city or region.",
            "The type for showing a collection of product categories.",
            "The type for showing a collection of related product tiers.",
            "The type for showing a collection of services offered by your business.",
            "The type for showing a collection of service categories.",
            "The type for showing a collection of related service tiers."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "BRANDS",
            "EVENTS",
            "LOCATIONS",
            "NEIGHBORHOODS",
            "PRODUCT_CATEGORIES",
            "PRODUCT_TIERS",
            "SERVICES",
            "SERVICE_CATEGORIES",
            "SERVICE_TIERS"
          ],
          "type": "string",
          "description": "Required. The type of the price asset."
        },
        "priceOfferings": {
          "description": "The price offerings of the price asset. The size of this collection should be between 3 and 8, inclusive.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__PriceOffering"
          },
          "type": "array"
        }
      },
      "description": "An asset representing a list of price offers."
    },
    "GoogleAdsGoogleadsV25Common__PriceOffering": {
      "description": "A single price offering within a PriceAsset.",
      "type": "object",
      "properties": {
        "finalUrl": {
          "description": "Required. The final URL after all cross domain redirects.",
          "type": "string"
        },
        "description": {
          "description": "Required. The description of the price offering. The length of this string should be between 1 and 25, inclusive.",
          "type": "string"
        },
        "unit": {
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "Per hour.",
            "Per day.",
            "Per week.",
            "Per month.",
            "Per year.",
            "Per night."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "PER_HOUR",
            "PER_DAY",
            "PER_WEEK",
            "PER_MONTH",
            "PER_YEAR",
            "PER_NIGHT"
          ],
          "type": "string",
          "description": "The price unit of the price offering."
        },
        "header": {
          "description": "Required. The header of the price offering. The length of this string should be between 1 and 25, inclusive.",
          "type": "string"
        },
        "price": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__Money",
          "description": "Required. The price value of the price offering."
        },
        "finalMobileUrl": {
          "type": "string",
          "description": "The final mobile URL after all cross domain redirects."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__PromotionAsset": {
      "description": "A Promotion asset.",
      "type": "object",
      "properties": {
        "ordersOverAmount": {
          "description": "The amount the total order needs to be for the user to be eligible for the promotion.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__Money"
        },
        "promotionTarget": {
          "description": "Required. A freeform description of what the promotion is targeting.",
          "type": "string"
        },
        "termsAndConditionsText": {
          "description": "Terms and conditions of the promotion.",
          "type": "string"
        },
        "promotionQrCodeInfo": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__PromotionQrCodeInfo",
          "description": "QR code info used to generate promotion QR code for user to be eligible for the promotion."
        },
        "moneyAmountOff": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__Money",
          "description": "Money amount off for discount in the promotion. Either this or percent_off is required."
        },
        "promotionCode": {
          "description": "A code the user should use in order to be eligible for the promotion.",
          "type": "string"
        },
        "termsAndConditionsUri": {
          "description": "URI to the terms and conditions of the promotion.",
          "type": "string"
        },
        "startDate": {
          "description": "Start date of when this asset is effective and can begin serving, in yyyy-MM-dd format.",
          "type": "string"
        },
        "redemptionStartDate": {
          "description": "Start date of when the promotion is eligible to be redeemed, in yyyy-MM-dd format.",
          "type": "string"
        },
        "promotionBarcodeInfo": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__PromotionBarcodeInfo",
          "description": "Barcode info used to generate promotion barcode for user to be eligible for the promotion."
        },
        "endDate": {
          "type": "string",
          "description": "Last date of when this asset is effective and still serving, in yyyy-MM-dd format."
        },
        "redemptionEndDate": {
          "description": "Last date of when the promotion is eligible to be redeemed, in yyyy-MM-dd format.",
          "type": "string"
        },
        "languageCode": {
          "type": "string",
          "description": "The language of the promotion. Represented as BCP 47 language tag."
        },
        "adScheduleTargets": {
          "type": "array",
          "description": "List of non-overlapping schedules specifying all time intervals for which the asset may serve. There can be a maximum of 6 schedules per day, 42 in total.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdScheduleInfo"
          }
        },
        "discountModifier": {
          "description": "A modifier for qualification of the discount.",
          "type": "string",
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "'Up to'."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "UP_TO"
          ]
        },
        "occasion": {
          "type": "string",
          "description": "The occasion the promotion was intended for. If an occasion is set, the redemption window will need to fall within the date range associated with the occasion.",
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "New Year's.",
            "Chinese New Year.",
            "Valentine's Day.",
            "Easter.",
            "Mother's Day.",
            "Father's Day.",
            "Labor Day.",
            "Back To School.",
            "Halloween.",
            "Black Friday.",
            "Cyber Monday.",
            "Christmas.",
            "Boxing Day.",
            "Independence Day in any country.",
            "National Day in any country.",
            "End of any season.",
            "Winter Sale.",
            "Summer sale.",
            "Fall Sale.",
            "Spring Sale.",
            "Ramadan.",
            "Eid al-Fitr.",
            "Eid al-Adha.",
            "Singles Day.",
            "Women's Day.",
            "Holi.",
            "Parent's Day.",
            "St. Nicholas Day.",
            "Carnival.",
            "Epiphany, also known as Three Kings' Day.",
            "Rosh Hashanah.",
            "Passover.",
            "Hanukkah.",
            "Diwali.",
            "Navratri.",
            "Available in Thai: Songkran.",
            "Available in Japanese: Year-end Gift."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "NEW_YEARS",
            "CHINESE_NEW_YEAR",
            "VALENTINES_DAY",
            "EASTER",
            "MOTHERS_DAY",
            "FATHERS_DAY",
            "LABOR_DAY",
            "BACK_TO_SCHOOL",
            "HALLOWEEN",
            "BLACK_FRIDAY",
            "CYBER_MONDAY",
            "CHRISTMAS",
            "BOXING_DAY",
            "INDEPENDENCE_DAY",
            "NATIONAL_DAY",
            "END_OF_SEASON",
            "WINTER_SALE",
            "SUMMER_SALE",
            "FALL_SALE",
            "SPRING_SALE",
            "RAMADAN",
            "EID_AL_FITR",
            "EID_AL_ADHA",
            "SINGLES_DAY",
            "WOMENS_DAY",
            "HOLI",
            "PARENTS_DAY",
            "ST_NICHOLAS_DAY",
            "CARNIVAL",
            "EPIPHANY",
            "ROSH_HASHANAH",
            "PASSOVER",
            "HANUKKAH",
            "DIWALI",
            "NAVRATRI",
            "SONGKRAN",
            "YEAR_END_GIFT"
          ]
        },
        "percentOff": {
          "description": "Percentage off discount in the promotion. 1,000,000 = 100%. Either this or money_amount_off is required.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__PromotionBarcodeInfo": {
      "description": "Barcode info to generate promotion barcode.",
      "type": "object",
      "properties": {
        "barcodeContent": {
          "type": "string",
          "description": "Promotion message to be encoded in the barcode."
        },
        "type": {
          "type": "string",
          "description": "Barcode type used to generate barcode with the correct format.",
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "Aztec 2D barcode format. Max 350 characters and no links",
            "CODABAR 1D format. Max 12 characters and no links. Supported characters include 0123456789-$:/.+ and optional start and end guards from ABCD.",
            "Code 39 1D format. Max 8 characters and no links. Supported characters include 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%.",
            "Code 128 1D format. Max 18 ASCII characters only and no links",
            "Data Matrix 2D barcode format. Max 525 ISO-8859-1 characters only and no links",
            "EAN-8 1D format. The barcode value should be 7 digits (the check digit will be computed automatically) or 8 digits (if you are providing your own check digit).",
            "EAN-13 1D format. The barcode value should be 12 digits (the check digit will be computed automatically) or 13 digits (if you are providing your own check digit).",
            "ITF (Interleaved Two of Five) 1D format. Must be 14 digits long",
            "PDF417 format. Max 140 characters and no links",
            "UPC-A 1D format. The barcode value should be 11 digits (the check digit will be computed automatically) or 12 digits (if you are providing your own check digit)."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "AZTEC",
            "CODABAR",
            "CODE39",
            "CODE128",
            "DATA_MATRIX",
            "EAN8",
            "EAN13",
            "ITF",
            "PDF417",
            "UPC_A"
          ]
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__PromotionQrCodeInfo": {
      "type": "object",
      "properties": {
        "qrCodeContent": {
          "description": "Promotion message to be encoded in the QR code.",
          "type": "string"
        }
      },
      "description": "QR code info to generate promotion QR code."
    },
    "GoogleAdsGoogleadsV25Common__ResponsiveDisplayAdControlSpec": {
      "description": "Specification for various creative controls for a responsive display ad.",
      "type": "object",
      "properties": {
        "enableAutogenVideo": {
          "description": "Whether the advertiser has opted into auto-gen video feature.",
          "type": "boolean"
        },
        "enableAssetEnhancements": {
          "description": "Whether the advertiser has opted into the asset enhancements feature.",
          "type": "boolean"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__ResponsiveDisplayAdInfo": {
      "description": "A responsive display ad.",
      "type": "object",
      "properties": {
        "promoText": {
          "description": "Promotion text used for dynamic formats of responsive ads. For example 'Free two-day shipping'.",
          "type": "string"
        },
        "pricePrefix": {
          "type": "string",
          "description": "Prefix before price. For example, 'as low as'."
        },
        "formatSetting": {
          "type": "string",
          "description": "Specifies which format the ad will be served in. Default is ALL_FORMATS.",
          "x-enumDescriptions": [
            "Not specified.",
            "The value is unknown in this version.",
            "Text, image and native formats.",
            "Text and image formats.",
            "Native format, for example, the format rendering is controlled by the publisher and not by Google."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "ALL_FORMATS",
            "NON_NATIVE",
            "NATIVE"
          ]
        },
        "youtubeVideos": {
          "description": "Optional YouTube videos for the ad. A maximum of 5 videos can be specified.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdVideoAsset"
          },
          "type": "array"
        },
        "controlSpec": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__ResponsiveDisplayAdControlSpec",
          "description": "Specification for various creative controls."
        },
        "logoImages": {
          "type": "array",
          "description": "Logo images to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 512x128 and the aspect ratio must be 4:1 (+-1%). Combined with `square_logo_images`, the maximum is 5.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
          }
        },
        "descriptions": {
          "type": "array",
          "description": "Descriptive texts for the ad. The maximum length is 90 characters. At least 1 and max 5 headlines can be specified.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          }
        },
        "allowFlexibleColor": {
          "description": "Advertiser's consent to allow flexible color. When true, the ad may be served with different color if necessary. When false, the ad will be served with the specified colors or a neutral color. The default value is `true`. Must be true if `main_color` and `accent_color` are not set.",
          "type": "boolean"
        },
        "callToActionText": {
          "description": "The call-to-action text for the ad. Maximum display width is 30.",
          "type": "string"
        },
        "headlines": {
          "type": "array",
          "description": "Short format headlines for the ad. The maximum length is 30 characters. At least 1 and max 5 headlines can be specified.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          }
        },
        "accentColor": {
          "type": "string",
          "description": "The accent color of the ad in hexadecimal, for example, #ffffff for white. If one of `main_color` and `accent_color` is set, the other is required as well."
        },
        "marketingImages": {
          "type": "array",
          "description": "Marketing images to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 600x314 and the aspect ratio must be 1.91:1 (+-1%). At least one `marketing_image` is required. Combined with `square_marketing_images`, the maximum is 15.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
          }
        },
        "squareMarketingImages": {
          "type": "array",
          "description": "Square marketing images to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 300x300 and the aspect ratio must be 1:1 (+-1%). At least one square `marketing_image` is required. Combined with `marketing_images`, the maximum is 15.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
          }
        },
        "longHeadline": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset",
          "description": "A required long format headline. The maximum length is 90 characters."
        },
        "mainColor": {
          "description": "The main color of the ad in hexadecimal, for example, #ffffff for white. If one of `main_color` and `accent_color` is set, the other is required as well.",
          "type": "string"
        },
        "squareLogoImages": {
          "description": "Square logo images to be used in the ad. Valid image types are GIF, JPEG, and PNG. The minimum size is 128x128 and the aspect ratio must be 1:1 (+-1%). Combined with `logo_images`, the maximum is 5.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
          },
          "type": "array"
        },
        "businessName": {
          "type": "string",
          "description": "The advertiser/brand name. Maximum display width is 25."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__ResponsiveSearchAdInfo": {
      "type": "object",
      "properties": {
        "headlines": {
          "description": "List of text assets for headlines. When the ad serves the headlines will be selected from this list.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          },
          "type": "array"
        },
        "path1": {
          "description": "First part of text that can be appended to the URL in the ad.",
          "type": "string"
        },
        "path2": {
          "type": "string",
          "description": "Second part of text that can be appended to the URL in the ad. This field can only be set when `path1` is also set."
        },
        "descriptions": {
          "type": "array",
          "description": "List of text assets for descriptions. When the ad serves the descriptions will be selected from this list.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          }
        }
      },
      "description": "A responsive search ad. Responsive search ads let you create an ad that adapts to show more text, and more relevant messages, to your customers. Enter multiple headlines and descriptions when creating a responsive search ad, and over time, Google Ads will automatically test different combinations and learn which combinations perform best. By adapting your ad's content to more closely match potential customers' search terms, responsive search ads may improve your campaign's performance. More information at https://support.google.com/google-ads/answer/7684791"
    },
    "GoogleAdsGoogleadsV25Common__ShoppingComparisonListingAdInfo": {
      "type": "object",
      "properties": {
        "headline": {
          "type": "string",
          "description": "Headline of the ad. This field is required. Allowed length is between 25 and 45 characters."
        }
      },
      "description": "A Shopping Comparison Listing ad."
    },
    "GoogleAdsGoogleadsV25Common__ShoppingProductAdInfo": {
      "type": "object",
      "properties": {},
      "description": "A standard Shopping ad."
    },
    "GoogleAdsGoogleadsV25Common__ShoppingSmartAdInfo": {
      "type": "object",
      "properties": {},
      "description": "A Smart Shopping ad."
    },
    "GoogleAdsGoogleadsV25Common__SitelinkAsset": {
      "description": "A Sitelink asset.",
      "type": "object",
      "properties": {
        "description1": {
          "type": "string",
          "description": "First line of the description for the sitelink. If set, the length should be between 1 and 35, inclusive, and description2 must also be set."
        },
        "description2": {
          "type": "string",
          "description": "Second line of the description for the sitelink. If set, the length should be between 1 and 35, inclusive, and description1 must also be set."
        },
        "linkText": {
          "description": "Required. URL display text for the sitelink. The length of this string should be between 1 and 25, inclusive.",
          "type": "string"
        },
        "startDate": {
          "description": "Start date of when this asset is effective and can begin serving, in yyyy-MM-dd format.",
          "type": "string"
        },
        "endDate": {
          "type": "string",
          "description": "Last date of when this asset is effective and still serving, in yyyy-MM-dd format."
        },
        "adScheduleTargets": {
          "description": "List of non-overlapping schedules specifying all time intervals for which the asset may serve. There can be a maximum of 6 schedules per day, 42 in total.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdScheduleInfo"
          },
          "type": "array"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__SmartCampaignAdInfo": {
      "type": "object",
      "properties": {
        "headlines": {
          "type": "array",
          "description": "List of text assets, each of which corresponds to a headline when the ad serves. This list consists of a minimum of 3 and up to 15 text assets.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          }
        },
        "descriptions": {
          "description": "List of text assets, each of which corresponds to a description when the ad serves. This list consists of a minimum of 2 and up to 4 text assets.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          },
          "type": "array"
        }
      },
      "description": "A Smart campaign ad."
    },
    "GoogleAdsGoogleadsV25Common__StructuredSnippetAsset": {
      "description": "A Structured Snippet asset.",
      "type": "object",
      "properties": {
        "header": {
          "type": "string",
          "description": "Required. The header of the snippet. This string should be one of the predefined values at https://developers.google.com/google-ads/api/reference/data/structured-snippet-headers"
        },
        "values": {
          "type": "array",
          "description": "Required. The values in the snippet. The size of this collection should be between 3 and 10, inclusive. The length of each value should be between 1 and 25 characters, inclusive.",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__SyntheticContentAttestation": {
      "description": "Represents an attestation about synthetic content from a single source.",
      "type": "object",
      "properties": {
        "source": {
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return values only. Represents value unknown in this version.",
            "Attestation provided by the advertiser.",
            "Google-generated content with advertiser review or input.",
            "Google-autogenerated content without advertiser review."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "ADVERTISER_ATTESTED",
            "GOOGLE_GENERATED_ADVERTISER_REVIEWED",
            "GOOGLE_GENERATED_FULLY_AUTOMATED"
          ],
          "type": "string",
          "description": "The source of the synthetic content attestation."
        },
        "status": {
          "description": "Indicates whether the content is considered synthetic by this source.",
          "type": "string",
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return values only. Represents value unknown in this version.",
            "The content is attested as not synthetic.",
            "The content is attested as synthetic."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "NOT_SYNTHETIC",
            "IS_SYNTHETIC"
          ]
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__SyntheticContentInfo": {
      "description": "Container for synthetic content attestations from different sources, such as the advertiser and Google systems.",
      "type": "object",
      "properties": {
        "systemAttestation": {
          "description": "Output only. Information about synthetic content generated by Google's systems.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__SyntheticContentAttestation"
        },
        "advertiserAttestation": {
          "description": "Input provided by the advertiser.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__SyntheticContentAttestation"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__TextAdInfo": {
      "type": "object",
      "properties": {
        "description1": {
          "type": "string",
          "description": "The first line of the ad's description."
        },
        "description2": {
          "description": "The second line of the ad's description.",
          "type": "string"
        },
        "headline": {
          "type": "string",
          "description": "The headline of the ad."
        }
      },
      "description": "A text ad."
    },
    "GoogleAdsGoogleadsV25Common__TextAsset": {
      "description": "A Text asset.",
      "type": "object",
      "properties": {
        "text": {
          "type": "string",
          "description": "Text content of the text asset."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__TravelAdInfo": {
      "description": "A travel ad.",
      "type": "object",
      "properties": {}
    },
    "GoogleAdsGoogleadsV25Common__UrlCollection": {
      "description": "Collection of urls that is tagged with a unique identifier.",
      "type": "object",
      "properties": {
        "urlCollectionId": {
          "type": "string",
          "description": "Unique identifier for this UrlCollection instance."
        },
        "trackingUrlTemplate": {
          "type": "string",
          "description": "URL template for constructing a tracking URL."
        },
        "finalUrls": {
          "type": "array",
          "description": "A list of possible final URLs.",
          "items": {
            "type": "string"
          }
        },
        "finalMobileUrls": {
          "description": "A list of possible final mobile URLs.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__VideoAdInfo": {
      "type": "object",
      "properties": {
        "video": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdVideoAsset",
          "description": "The YouTube video assets used for the ad."
        },
        "inStream": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__VideoTrueViewInStreamAdInfo",
          "description": "Video TrueView in-stream ad format."
        },
        "nonSkippable": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__VideoNonSkippableInStreamAdInfo",
          "description": "Video non-skippable in-stream ad format."
        },
        "bumper": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__VideoBumperInStreamAdInfo",
          "description": "Video bumper in-stream ad format."
        },
        "outStream": {
          "description": "Video out-stream ad format.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__VideoOutstreamAdInfo"
        },
        "inFeed": {
          "description": "In-feed video ad format.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__InFeedVideoAdInfo"
        },
        "audio": {
          "description": "YouTube Audio ad format.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__YouTubeAudioAdInfo"
        }
      },
      "description": "A video ad."
    },
    "GoogleAdsGoogleadsV25Common__VideoBumperInStreamAdInfo": {
      "type": "object",
      "properties": {
        "actionButtonLabel": {
          "description": "Label on the \"Call To Action\" button taking the user to the video ad's final URL.",
          "type": "string"
        },
        "actionHeadline": {
          "type": "string",
          "description": "Additional text displayed with the CTA (call-to-action) button to give context and encourage clicking on the button."
        },
        "companionBanner": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset",
          "description": "The image assets of the companion banner used with the ad."
        }
      },
      "description": "Representation of video bumper in-stream ad format (very short in-stream non-skippable video ad)."
    },
    "GoogleAdsGoogleadsV25Common__VideoNonSkippableInStreamAdInfo": {
      "description": "Representation of video non-skippable in-stream ad format (15 second in-stream non-skippable video ad).",
      "type": "object",
      "properties": {
        "actionButtonLabel": {
          "type": "string",
          "description": "Label on the \"Call To Action\" button taking the user to the video ad's final URL."
        },
        "actionHeadline": {
          "type": "string",
          "description": "Additional text displayed with the \"Call To Action\" button to give context and encourage clicking on the button."
        },
        "companionBanner": {
          "description": "The image assets of the companion banner used with the ad.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__VideoOutstreamAdInfo": {
      "description": "Representation of video out-stream ad format (ad shown alongside a feed with automatic playback, without sound).",
      "type": "object",
      "properties": {
        "headline": {
          "description": "The headline of the ad.",
          "type": "string"
        },
        "description": {
          "type": "string",
          "description": "The description line."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__VideoResponsiveAdInfo": {
      "type": "object",
      "properties": {
        "businessName": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset",
          "description": "Required. Advertiser/brand name. Maximum display width is 25 characters."
        },
        "callToActions": {
          "description": "List of text assets used for the button, for example, the \"Call To Action\" button. Currently, only a single value for the button is supported.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          },
          "type": "array"
        },
        "breadcrumb1": {
          "description": "First part of text that appears in the ad with the displayed URL.",
          "type": "string"
        },
        "breadcrumb2": {
          "type": "string",
          "description": "Second part of text that appears in the ad with the displayed URL."
        },
        "longHeadlines": {
          "description": "List of text assets used for the long headline. Currently, only a single value for the long headline is supported.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          },
          "type": "array"
        },
        "videos": {
          "type": "array",
          "description": "Required. List of YouTube video assets used for the ad. Currently, only a single value for the YouTube video asset is supported.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdVideoAsset"
          }
        },
        "companionBanners": {
          "type": "array",
          "description": "List of image assets used for the companion banner. Currently, only a single value for the companion banner asset is supported.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
          }
        },
        "descriptions": {
          "description": "List of text assets used for the description. Currently, only a single value for the description is supported.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          },
          "type": "array"
        },
        "logoImages": {
          "description": "Required. Logo image to be used in the ad. The minimum size is 128x128 and the aspect ratio must be 1:1(+-1%).",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset"
          },
          "type": "array"
        },
        "headlines": {
          "description": "List of text assets used for the short headline. Currently, only a single value for the short headline is supported.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdTextAsset"
          },
          "type": "array"
        }
      },
      "description": "A video responsive ad."
    },
    "GoogleAdsGoogleadsV25Common__VideoTrueViewInStreamAdInfo": {
      "description": "Representation of video TrueView in-stream ad format (ad shown during video playback, often at beginning, which displays a skip button a few seconds into the video).",
      "type": "object",
      "properties": {
        "actionHeadline": {
          "description": "Additional text displayed with the CTA (call-to-action) button to give context and encourage clicking on the button.",
          "type": "string"
        },
        "actionButtonLabel": {
          "description": "Label on the CTA (call-to-action) button taking the user to the video ad's final URL. Required for TrueView for action campaigns, optional otherwise.",
          "type": "string"
        },
        "companionBanner": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdImageAsset",
          "description": "The image assets of the companion banner used with the ad."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__WebhookDelivery": {
      "type": "object",
      "properties": {
        "advertiserWebhookUrl": {
          "description": "Webhook url specified by advertiser to send the lead.",
          "type": "string"
        },
        "payloadSchemaVersion": {
          "format": "int64",
          "type": "string",
          "description": "The schema version that this delivery instance will use."
        },
        "googleSecret": {
          "description": "Anti-spoofing secret set by the advertiser as part of the webhook payload.",
          "type": "string"
        }
      },
      "description": "Google notifies the advertiser of leads by making HTTP calls to an endpoint they specify. The requests contain JSON matching a schema that Google publishes as part of form ads documentation."
    },
    "GoogleAdsGoogleadsV25Common__WhatsappBusinessMessageInfo": {
      "type": "object",
      "properties": {
        "countryCode": {
          "description": "Required. Two-letter country code of the phone number. Examples: 'US', 'us'.",
          "type": "string"
        },
        "phoneNumber": {
          "description": "Required. Whatsapp phone number of the business. Examples: '1234567890', '(123)456-7890'.",
          "type": "string"
        }
      },
      "description": "Whatsapp information to use for messaging."
    },
    "GoogleAdsGoogleadsV25Common__YouTubeAudioAdInfo": {
      "type": "object",
      "properties": {},
      "description": "Representation of YouTube Audio ad format."
    },
    "GoogleAdsGoogleadsV25Common__YouTubeVideoListAsset": {
      "description": "A YouTube video list asset.",
      "type": "object",
      "properties": {
        "youtubeVideos": {
          "type": "array",
          "description": "List of videos. Each is a reference to a YouTube video asset. Minimum of 2 videos required and maximum of 5 allowed.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AdVideoAsset"
          }
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__YoutubeVideoAsset": {
      "description": "A YouTube asset.",
      "type": "object",
      "properties": {
        "youtubeVideoId": {
          "description": "YouTube video id. This is the 11 character string value used in the YouTube video URL.",
          "type": "string"
        },
        "youtubeVideoTitle": {
          "description": "YouTube video title.",
          "type": "string"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__ZaloBusinessMessageInfo": {
      "type": "object",
      "properties": {
        "customName": {
          "description": "Custom name generated by the advertiser for their Zalo Account. These names will usually be registered brands or trademarks.",
          "type": "string"
        },
        "oaId": {
          "type": "string",
          "description": "Zalo Official Account ID of the advertiser.",
          "format": "int64"
        }
      },
      "description": "Zalo information to use for messaging."
    },
    "GoogleAdsGoogleadsV25Resources_RecommendationCampaignBudgetRecommendation_CampaignBudgetRecommendationOption": {
      "description": "The impact estimates for a given budget amount.",
      "type": "object",
      "properties": {
        "budgetAmountMicros": {
          "type": "string",
          "description": "Output only. The budget amount for this option.",
          "format": "int64"
        },
        "impact": {
          "description": "Output only. The impact estimate if budget is changed to amount specified in this option.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_RecommendationImpact"
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_RecommendationKeywordRecommendation_SearchTerm": {
      "type": "object",
      "properties": {
        "text": {
          "type": "string",
          "description": "Output only. The text of the search term."
        },
        "estimatedWeeklySearchCount": {
          "format": "int64",
          "type": "string",
          "description": "Output only. Estimated number of historical weekly searches for this search term."
        }
      },
      "description": "Information about a search term as related to a keyword recommendation."
    },
    "GoogleAdsGoogleadsV25Resources_RecommendationTargetCpaOptInRecommendation_TargetCpaOptInRecommendationOption": {
      "description": "The Target CPA opt-in option with impact estimate.",
      "type": "object",
      "properties": {
        "targetCpaMicros": {
          "format": "int64",
          "type": "string",
          "description": "Output only. Average CPA target."
        },
        "impact": {
          "description": "Output only. The impact estimate if this option is selected.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_RecommendationImpact"
        },
        "goal": {
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "Recommendation to set Target CPA to maintain the same cost.",
            "Recommendation to set Target CPA to maintain the same conversions.",
            "Recommendation to set Target CPA to maintain the same CPA.",
            "Recommendation to set Target CPA to a value that is as close as possible to, yet lower than, the actual CPA (computed for past 28 days)."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "SAME_COST",
            "SAME_CONVERSIONS",
            "SAME_CPA",
            "CLOSEST_CPA"
          ],
          "description": "Output only. The goal achieved by this option.",
          "type": "string"
        },
        "requiredCampaignBudgetAmountMicros": {
          "type": "string",
          "description": "Output only. The minimum campaign budget, in local currency for the account, required to achieve the target CPA. Amount is specified in micros, where one million is equivalent to one currency unit.",
          "format": "int64"
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_AccountInfo": {
      "description": "Wrapper for information about a Google Ads account.",
      "type": "object",
      "properties": {
        "descriptiveName": {
          "type": "string",
          "description": "Output only. The descriptive name of the account."
        },
        "customerId": {
          "format": "int64",
          "description": "Output only. The customer ID of the account.",
          "type": "string"
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_CallAssetRecommendation": {
      "type": "object",
      "properties": {},
      "description": "The call asset recommendation."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_CalloutAssetRecommendation": {
      "type": "object",
      "properties": {
        "recommendedCampaignCalloutAssets": {
          "description": "Output only. New callout extension assets recommended at the campaign level.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources__Asset"
          },
          "type": "array"
        },
        "recommendedCustomerCalloutAssets": {
          "description": "Output only. New callout extension assets recommended at the customer level.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources__Asset"
          },
          "type": "array"
        }
      },
      "description": "The callout asset recommendation."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_CampaignBudget": {
      "description": "A campaign budget shared amongst various budget recommendation types.",
      "type": "object",
      "properties": {
        "newStartDate": {
          "description": "Output only. The date when the new budget would start being used. This field will be set for the following recommendation types: FORECASTING_SET_TARGET_ROAS , FORECASTING_SET_TARGET_CPA YYYY-MM-DD format, for example, 2018-04-17.",
          "type": "string"
        },
        "currentAmountMicros": {
          "description": "Output only. Current budget amount.",
          "type": "string",
          "format": "int64"
        },
        "recommendedNewAmountMicros": {
          "type": "string",
          "description": "Output only. Recommended budget amount.",
          "format": "int64"
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_CampaignBudgetRecommendation": {
      "type": "object",
      "properties": {
        "recommendedBudgetAmountMicros": {
          "description": "Output only. The recommended budget amount in micros.",
          "type": "string",
          "format": "int64"
        },
        "currentBudgetAmountMicros": {
          "format": "int64",
          "type": "string",
          "description": "Output only. The current budget amount in micros."
        },
        "budgetOptions": {
          "description": "Output only. The budget amounts and associated impact estimates for some values of possible budget amounts.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_RecommendationCampaignBudgetRecommendation_CampaignBudgetRecommendationOption"
          },
          "type": "array"
        }
      },
      "description": "The budget recommendation for budget constrained campaigns."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_CustomAudienceOptInRecommendation": {
      "description": "The Custom Audience Opt In recommendation.",
      "type": "object",
      "properties": {
        "keywords": {
          "description": "Output only. The list of keywords to use for custom audience creation.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__KeywordInfo"
          },
          "type": "array"
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_DisplayExpansionOptInRecommendation": {
      "type": "object",
      "properties": {},
      "description": "The Display Expansion opt-in recommendation."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_DynamicImageExtensionOptInRecommendation": {
      "type": "object",
      "properties": {},
      "description": "Recommendation to enable dynamic image extensions on the account, allowing Google to find the best images from ad landing pages and complement text ads."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_EnhancedCpcOptInRecommendation": {
      "description": "The Enhanced Cost-Per-Click Opt-In recommendation.",
      "type": "object",
      "properties": {}
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_ForecastingSetTargetCpaRecommendation": {
      "description": "The set target CPA recommendations.",
      "type": "object",
      "properties": {
        "campaignBudget": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_CampaignBudget",
          "description": "Output only. The campaign budget."
        },
        "recommendedTargetCpaMicros": {
          "format": "int64",
          "description": "Output only. The recommended target CPA.",
          "type": "string"
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_ForecastingSetTargetRoasRecommendation": {
      "description": "The forecasting set target ROAS recommendation.",
      "type": "object",
      "properties": {
        "recommendedTargetRoas": {
          "format": "double",
          "description": "Output only. The recommended target ROAS (revenue per unit of spend). The value is between 0.01 and 1000.0, inclusive.",
          "type": "number"
        },
        "campaignBudget": {
          "description": "Output only. The campaign budget.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_CampaignBudget"
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_ImproveDemandGenAdStrengthRecommendation": {
      "description": "The improve Demand Gen ad strength recommendation.",
      "type": "object",
      "properties": {
        "adStrength": {
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "The ad strength is currently pending.",
            "No ads could be generated.",
            "Poor strength.",
            "Average strength.",
            "Good strength.",
            "Excellent strength."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "PENDING",
            "NO_ADS",
            "POOR",
            "AVERAGE",
            "GOOD",
            "EXCELLENT"
          ],
          "description": "Output only. The current ad strength.",
          "type": "string"
        },
        "ad": {
          "description": "Output only. The resource name of the ad that can be improved.",
          "type": "string"
        },
        "demandGenAssetActionItems": {
          "description": "Output only. A list of recommendations to improve the ad strength.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_ImproveGoogleTagCoverageRecommendation": {
      "description": "Recommendation to deploy Google Tag on more pages.",
      "type": "object",
      "properties": {}
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_ImprovePerformanceMaxAdStrengthRecommendation": {
      "description": "Recommendation to improve the asset group strength of a Performance Max campaign to an \"Excellent\" rating.",
      "type": "object",
      "properties": {
        "assetGroup": {
          "type": "string",
          "description": "Output only. The asset group resource name."
        },
        "adStrength": {
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "The ad strength is currently pending.",
            "No ads could be generated.",
            "Poor strength.",
            "Average strength.",
            "Good strength.",
            "Excellent strength."
          ],
          "type": "string",
          "description": "Output only. The current ad strength score of the asset group.",
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "PENDING",
            "NO_ADS",
            "POOR",
            "AVERAGE",
            "GOOD",
            "EXCELLENT"
          ]
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_KeywordMatchTypeRecommendation": {
      "description": "The keyword match type recommendation.",
      "type": "object",
      "properties": {
        "keyword": {
          "description": "Output only. The existing keyword where the match type should be more broad.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__KeywordInfo"
        },
        "recommendedMatchType": {
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "EXACT",
            "PHRASE",
            "BROAD"
          ],
          "description": "Output only. The recommended new match type.",
          "type": "string",
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "Exact match.",
            "Phrase match.",
            "Broad match."
          ]
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_KeywordRecommendation": {
      "description": "The keyword recommendation.",
      "type": "object",
      "properties": {
        "searchTerms": {
          "description": "Output only. A list of search terms this keyword matches. The same search term may be repeated for multiple keywords.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_RecommendationKeywordRecommendation_SearchTerm"
          },
          "type": "array"
        },
        "recommendedCpcBidMicros": {
          "format": "int64",
          "description": "Output only. The recommended CPC (cost-per-click) bid.",
          "type": "string"
        },
        "keyword": {
          "description": "Output only. The recommended keyword.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__KeywordInfo"
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_LeadFormAssetRecommendation": {
      "description": "The lead form asset recommendation.",
      "type": "object",
      "properties": {}
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_LowerTargetRoasRecommendation": {
      "type": "object",
      "properties": {
        "targetAdjustment": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_TargetAdjustmentInfo",
          "description": "Output only. The relevant information describing the recommended target adjustment."
        }
      },
      "description": "Recommendation to lower Target ROAS."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_MaximizeClicksOptInRecommendation": {
      "type": "object",
      "properties": {
        "recommendedBudgetAmountMicros": {
          "type": "string",
          "description": "Output only. The recommended new budget amount. Only set if the current budget is too high.",
          "format": "int64"
        }
      },
      "description": "The Maximize Clicks opt-in recommendation."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_MaximizeConversionValueOptInRecommendation": {
      "type": "object",
      "properties": {},
      "description": "Recommendation to opt into Maximize Conversion Value bidding strategy."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_MaximizeConversionsOptInRecommendation": {
      "description": "The Maximize Conversions Opt-In recommendation.",
      "type": "object",
      "properties": {
        "recommendedBudgetAmountMicros": {
          "format": "int64",
          "description": "Output only. The recommended new budget amount.",
          "type": "string"
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_MerchantInfo": {
      "description": "The Merchant Center account details.",
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The Merchant Center account ID.",
          "format": "int64"
        },
        "name": {
          "description": "Output only. The name of the Merchant Center account.",
          "type": "string"
        },
        "multiClient": {
          "type": "boolean",
          "description": "Output only. Whether the Merchant Center account is a Multi-Client account (MCA)."
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation": {
      "type": "object",
      "properties": {
        "applyLink": {
          "description": "Output only. A link to the Google Ads UI where the customer can manually apply the recommendation.",
          "type": "string"
        }
      },
      "description": "The Dynamic Search Ads to Performance Max migration recommendation."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_MoveUnusedBudgetRecommendation": {
      "description": "The move unused budget recommendation.",
      "type": "object",
      "properties": {
        "excessCampaignBudget": {
          "type": "string",
          "description": "Output only. The excess budget's resource_name."
        },
        "budgetRecommendation": {
          "description": "Output only. The recommendation for the constrained budget to increase.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_CampaignBudgetRecommendation"
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_OptimizeAdRotationRecommendation": {
      "type": "object",
      "properties": {},
      "description": "The Optimize Ad Rotation recommendation."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_PerformanceMaxFinalUrlOptInRecommendation": {
      "description": "Recommendation to turn on Final URL expansion for your Performance Max campaigns.",
      "type": "object",
      "properties": {}
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_PerformanceMaxOptInRecommendation": {
      "type": "object",
      "properties": {},
      "description": "The Performance Max Opt In recommendation."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_RaiseTargetCpaBidTooLowRecommendation": {
      "description": "The raise target CPA bid too low recommendation.",
      "type": "object",
      "properties": {
        "averageTargetCpaMicros": {
          "format": "int64",
          "description": "Output only. The current average target CPA of the campaign, in micros of customer local currency.",
          "type": "string"
        },
        "recommendedTargetMultiplier": {
          "description": "Output only. A number greater than 1.0 indicating the factor by which we recommend the target CPA should be increased.",
          "type": "number",
          "format": "double"
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_RaiseTargetCpaRecommendation": {
      "type": "object",
      "properties": {
        "appBiddingGoal": {
          "description": "Output only. Represents the goal towards which the bidding strategy should optimize. Only populated for App Campaigns.",
          "type": "string",
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "OPTIMIZE_FOR_INSTALL_CONVERSION_VOLUME",
            "OPTIMIZE_FOR_IN_APP_CONVERSION_VOLUME",
            "OPTIMIZE_FOR_TOTAL_CONVERSION_VALUE",
            "OPTIMIZE_FOR_TARGET_IN_APP_CONVERSION",
            "OPTIMIZE_FOR_RETURN_ON_ADVERTISING_SPEND",
            "OPTIMIZE_FOR_INSTALL_CONVERSION_VOLUME_WITHOUT_TARGET_CPI",
            "OPTIMIZE_FOR_PRE_REGISTRATION_CONVERSION_VOLUME"
          ],
          "x-enumDescriptions": [
            "Not specified.",
            "Represents value unknown in this version of the API.",
            "The bidding strategy of the app campaign should aim to maximize installation of the app.",
            "The bidding strategy of the app campaign should aim to maximize the selected in-app conversions' volume.",
            "The bidding strategy of the app campaign should aim to maximize all conversions' value, that is, install and selected in-app conversions.",
            "The bidding strategy of the app campaign should aim to maximize just the selected in-app conversion's volume, while achieving or exceeding target cost per in-app conversion.",
            "The bidding strategy of the app campaign should aim to maximize all conversions' value, that is, install and selected in-app conversions while achieving or exceeding target return on advertising spend.",
            "This bidding strategy of the app campaign should aim to maximize installation of the app without advertiser-provided target cost-per-install.",
            "This bidding strategy of the app campaign should aim to maximize pre-registration of the app."
          ]
        },
        "targetAdjustment": {
          "description": "Output only. The relevant information describing the recommended target adjustment.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_TargetAdjustmentInfo"
        }
      },
      "description": "Recommendation to raise Target CPA."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_RecommendationImpact": {
      "description": "The impact of making the change as described in the recommendation. Some types of recommendations may not have impact information.",
      "type": "object",
      "properties": {
        "baseMetrics": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_RecommendationMetrics",
          "description": "Output only. Base metrics at the time the recommendation was generated."
        },
        "potentialMetrics": {
          "description": "Output only. Estimated metrics if the recommendation is applied.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_RecommendationMetrics"
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_RecommendationMetrics": {
      "type": "object",
      "properties": {
        "videoViews": {
          "description": "Output only. Number of video views for a video ad campaign.",
          "type": "number",
          "format": "double"
        },
        "impressions": {
          "format": "double",
          "description": "Output only. Number of ad impressions.",
          "type": "number"
        },
        "clicks": {
          "format": "double",
          "description": "Output only. Number of ad clicks.",
          "type": "number"
        },
        "conversions": {
          "description": "Output only. Number of conversions.",
          "type": "number",
          "format": "double"
        },
        "conversionsValue": {
          "format": "double",
          "description": "Output only. Sum of the conversion value of the conversions.",
          "type": "number"
        },
        "costMicros": {
          "format": "int64",
          "description": "Output only. Cost (in micros) for advertising, in the local currency for the account.",
          "type": "string"
        }
      },
      "description": "Weekly account performance metrics. For some recommendation types, these are averaged over the past 90-day period and hence can be fractional."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_RefreshCustomerMatchListRecommendation": {
      "description": "The recommendation to update a customer list that hasn't been updated in the last 90 days. The customer receiving the recommendation is not necessarily the owner account. The owner account should update the customer list.",
      "type": "object",
      "properties": {
        "daysSinceLastRefresh": {
          "format": "int64",
          "type": "string",
          "description": "Output only. Days since last refresh."
        },
        "ownerAccount": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_AccountInfo",
          "description": "Output only. The owner account. This is the account that should update the customer list."
        },
        "targetingAccountsCount": {
          "description": "Output only. User lists can be shared with other accounts by the owner. targeting_accounts_count is the number of those accounts that can use it for targeting.",
          "type": "string",
          "format": "int64"
        },
        "userListId": {
          "type": "string",
          "description": "Output only. The user list ID.",
          "format": "int64"
        },
        "topSpendingAccount": {
          "type": "array",
          "description": "Output only. The top spending account.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_AccountInfo"
          }
        },
        "userListName": {
          "description": "Output only. The name of the list.",
          "type": "string"
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_ResponsiveSearchAdAssetRecommendation": {
      "type": "object",
      "properties": {
        "currentAd": {
          "description": "Output only. The current ad to be updated.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources__Ad"
        },
        "recommendedAssets": {
          "description": "Output only. The recommended assets. This is populated only with the new headlines and/or descriptions, and is otherwise empty.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources__Ad"
        }
      },
      "description": "The add responsive search ad asset recommendation."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_ResponsiveSearchAdImproveAdStrengthRecommendation": {
      "type": "object",
      "properties": {
        "recommendedAd": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources__Ad",
          "description": "Output only. The updated ad."
        },
        "currentAd": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources__Ad",
          "description": "Output only. The current ad to be updated."
        }
      },
      "description": "The responsive search ad improve ad strength recommendation."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_ResponsiveSearchAdRecommendation": {
      "description": "The add responsive search ad recommendation.",
      "type": "object",
      "properties": {
        "ad": {
          "description": "Output only. Recommended ad.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources__Ad"
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_SearchPartnersOptInRecommendation": {
      "description": "The Search Partners Opt-In recommendation.",
      "type": "object",
      "properties": {}
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_ShoppingAddProductsToCampaignRecommendation": {
      "description": "The shopping recommendation to add products to a Shopping Campaign Inventory.",
      "type": "object",
      "properties": {
        "merchant": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_MerchantInfo",
          "description": "Output only. The details of the Merchant Center account."
        },
        "feedLabel": {
          "description": "Output only. The feed label for the campaign.",
          "type": "string"
        },
        "reason": {
          "type": "string",
          "description": "Output only. The reason why no products are attached to the campaign.",
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "MERCHANT_CENTER_ACCOUNT_HAS_NO_SUBMITTED_PRODUCTS",
            "MERCHANT_CENTER_ACCOUNT_HAS_NO_SUBMITTED_PRODUCTS_IN_FEED",
            "ADS_ACCOUNT_EXCLUDES_OFFERS_FROM_CAMPAIGN",
            "ALL_PRODUCTS_ARE_EXCLUDED_FROM_CAMPAIGN"
          ],
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "The Merchant Center account does not have any submitted products.",
            "The Merchant Center account does not have any submitted products in the feed.",
            "The Google Ads account has active campaign filters that prevents inclusion of offers in the campaign.",
            "All products available have been explicitly excluded from being targeted by the campaign."
          ]
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_ShoppingFixDisapprovedProductsRecommendation": {
      "type": "object",
      "properties": {
        "disapprovedProductsCount": {
          "type": "string",
          "description": "Output only. The numbers of products of the campaign that are disapproved.",
          "format": "int64"
        },
        "merchant": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_MerchantInfo",
          "description": "Output only. The details of the Merchant Center account."
        },
        "feedLabel": {
          "description": "Output only. The feed label for the campaign.",
          "type": "string"
        },
        "productsCount": {
          "type": "string",
          "description": "Output only. The number of products of the campaign.",
          "format": "int64"
        }
      },
      "description": "The shopping recommendation to fix disapproved products in a Shopping Campaign Inventory."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_ShoppingMerchantCenterAccountSuspensionRecommendation": {
      "description": "The shopping recommendation to fix Merchant Center account suspension issues.",
      "type": "object",
      "properties": {
        "merchant": {
          "description": "Output only. The details of the Merchant Center account.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_MerchantInfo"
        },
        "feedLabel": {
          "description": "Output only. The feed label of the campaign for which the suspension happened.",
          "type": "string"
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation": {
      "type": "object",
      "properties": {
        "merchant": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_MerchantInfo",
          "description": "Output only. The details of the Merchant Center account."
        },
        "feedLabel": {
          "description": "Output only. The feed label of the offers targeted by the campaigns sharing this suggestion.",
          "type": "string"
        }
      },
      "description": "The shopping recommendation to migrate Regular Shopping Campaign targeted offers to Performance Max campaigns."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_ShoppingOfferAttributeRecommendation": {
      "type": "object",
      "properties": {
        "merchant": {
          "description": "Output only. The details of the Merchant Center account.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_MerchantInfo"
        },
        "feedLabel": {
          "description": "Output only. The campaign feed label.",
          "type": "string"
        },
        "demotedOffersCount": {
          "format": "int64",
          "type": "string",
          "description": "Output only. The number of online, servable offers that are demoted for missing attributes. Visit the Merchant Center for more details."
        },
        "offersCount": {
          "format": "int64",
          "type": "string",
          "description": "Output only. The number of online, servable offers."
        }
      },
      "description": "The shopping recommendation to add an attribute to offers that are demoted because it is missing."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_ShoppingTargetAllOffersRecommendation": {
      "description": "The shopping recommendation to create a catch-all campaign that targets all offers.",
      "type": "object",
      "properties": {
        "untargetedOffersCount": {
          "type": "string",
          "description": "Output only. The number of untargeted offers.",
          "format": "int64"
        },
        "merchant": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_MerchantInfo",
          "description": "Output only. The details of the Merchant Center account."
        },
        "feedLabel": {
          "type": "string",
          "description": "Output only. The offer feed label."
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_SitelinkAssetRecommendation": {
      "type": "object",
      "properties": {
        "recommendedCampaignSitelinkAssets": {
          "type": "array",
          "description": "Output only. New sitelink assets recommended at the campaign level.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources__Asset"
          }
        },
        "recommendedCustomerSitelinkAssets": {
          "description": "Output only. New sitelink assets recommended at the customer level.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources__Asset"
          },
          "type": "array"
        }
      },
      "description": "The sitelink asset recommendation."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_TargetAdjustmentInfo": {
      "type": "object",
      "properties": {
        "sharedSet": {
          "type": "string",
          "description": "Output only. The shared set resource name of the portfolio bidding strategy where the target is defined. Only populated if the recommendation is portfolio level."
        },
        "currentAverageTargetMicros": {
          "format": "int64",
          "type": "string",
          "description": "Output only. The current average target of the campaign or portfolio targeted by this recommendation."
        },
        "recommendedTargetMultiplier": {
          "format": "double",
          "description": "Output only. The factor by which we recommend the target to be adjusted by.",
          "type": "number"
        }
      },
      "description": "Information of a target adjustment recommendation."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_TargetCpaOptInRecommendation": {
      "description": "The Target CPA opt-in recommendation.",
      "type": "object",
      "properties": {
        "recommendedTargetCpaMicros": {
          "type": "string",
          "description": "Output only. The recommended average CPA target. See required budget amount and impact of using this recommendation in options list.",
          "format": "int64"
        },
        "options": {
          "type": "array",
          "description": "Output only. The available goals and corresponding options for Target CPA strategy.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_RecommendationTargetCpaOptInRecommendation_TargetCpaOptInRecommendationOption"
          }
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_TargetRoasOptInRecommendation": {
      "description": "The Target ROAS opt-in recommendation.",
      "type": "object",
      "properties": {
        "recommendedTargetRoas": {
          "type": "number",
          "description": "Output only. The recommended target ROAS (revenue per unit of spend). The value is between 0.01 and 1000.0, inclusive.",
          "format": "double"
        },
        "requiredCampaignBudgetAmountMicros": {
          "type": "string",
          "description": "Output only. The minimum campaign budget, in local currency for the account, required to achieve the target ROAS. Amount is specified in micros, where one million is equivalent to one currency unit.",
          "format": "int64"
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_TextAdRecommendation": {
      "description": "The text ad recommendation.",
      "type": "object",
      "properties": {
        "autoApplyDate": {
          "type": "string",
          "description": "Output only. Date, if present, is the earliest when the recommendation will be auto applied. YYYY-MM-DD format, for example, 2018-04-17."
        },
        "ad": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources__Ad",
          "description": "Output only. Recommended ad."
        },
        "creationDate": {
          "type": "string",
          "description": "Output only. Creation date of the recommended ad. YYYY-MM-DD format, for example, 2018-04-17."
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_UpgradeLocalCampaignToPerformanceMaxRecommendation": {
      "type": "object",
      "properties": {},
      "description": "The Upgrade Local campaign to Performance Max campaign recommendation."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation": {
      "type": "object",
      "properties": {
        "merchantId": {
          "type": "string",
          "description": "Output only. ID of Merchant Center account.",
          "format": "int64"
        },
        "salesCountryCode": {
          "description": "Output only. Country whose products from merchant's inventory should be included.",
          "type": "string"
        }
      },
      "description": "The upgrade a Smart Shopping campaign to a Performance Max campaign recommendation."
    },
    "GoogleAdsGoogleadsV25Resources_Recommendation_UseBroadMatchKeywordRecommendation": {
      "description": "The use broad match keyword recommendation.",
      "type": "object",
      "properties": {
        "suggestedKeywordsCount": {
          "format": "int64",
          "type": "string",
          "description": "Output only. Total number of keywords to be expanded to Broad Match in the campaign."
        },
        "campaignUsesSharedBudget": {
          "description": "Output only. Whether the associated campaign uses a shared budget.",
          "type": "boolean"
        },
        "requiredCampaignBudgetAmountMicros": {
          "type": "string",
          "description": "Output only. The budget recommended to avoid becoming budget constrained after applying the recommendation.",
          "format": "int64"
        },
        "keyword": {
          "type": "array",
          "description": "Output only. Sample of keywords to be expanded to Broad Match.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__KeywordInfo"
          }
        },
        "campaignKeywordsCount": {
          "type": "string",
          "description": "Output only. Total number of keywords in the campaign.",
          "format": "int64"
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources__Ad": {
      "type": "object",
      "properties": {
        "appPreRegistrationAd": {
          "description": "Details pertaining to an app pre-registration ad.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AppPreRegistrationAdInfo"
        },
        "smartCampaignAd": {
          "description": "Details pertaining to a Smart campaign ad.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__SmartCampaignAdInfo"
        },
        "appEngagementAd": {
          "description": "Details pertaining to an app engagement ad.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AppEngagementAdInfo"
        },
        "syntheticContentInfo": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__SyntheticContentInfo",
          "description": "Synthetic content info for the ad."
        },
        "displayUrl": {
          "type": "string",
          "description": "The URL that appears in the ad description for some ad formats."
        },
        "responsiveDisplayAd": {
          "description": "Details pertaining to a responsive display ad.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__ResponsiveDisplayAdInfo"
        },
        "expandedDynamicSearchAd": {
          "description": "Immutable. Details pertaining to an Expanded Dynamic Search Ad. This type of ad has its headline, final URLs, and display URL auto-generated at serving time according to domain name specific information provided by `dynamic_search_ads_setting` linked at the campaign level.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__ExpandedDynamicSearchAdInfo"
        },
        "finalUrlSuffix": {
          "description": "The suffix to use when constructing a final URL.",
          "type": "string"
        },
        "imageAd": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__ImageAdInfo",
          "description": "Immutable. Details pertaining to an Image ad."
        },
        "addedByGoogleAds": {
          "description": "Output only. Indicates if this ad was automatically added by Google Ads and not by a user. For example, this could happen when ads are automatically created as suggestions for new ads based on knowledge of how existing ads are performing.",
          "type": "boolean"
        },
        "responsiveSearchAd": {
          "description": "Details pertaining to a responsive search ad.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__ResponsiveSearchAdInfo"
        },
        "expandedTextAd": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__ExpandedTextAdInfo",
          "description": "Details pertaining to an expanded text ad. Expanded text ads are deprecated. Use `ResponsiveSearchAd` instead."
        },
        "type": {
          "x-enumDescriptions": [
            "No value has been specified.",
            "The received value is not known in this version. This is a response-only value.",
            "The ad is a text ad.",
            "The ad is an expanded text ad. Expanded text ads are deprecated.",
            "The ad is an expanded dynamic search ad.",
            "The ad is a hotel ad.",
            "The ad is a Smart Shopping ad.",
            "The ad is a standard Shopping ad.",
            "The ad is a video ad.",
            "This ad is an Image ad.",
            "The ad is a responsive search ad.",
            "The ad is a legacy responsive display ad.",
            "The ad is an app ad.",
            "The ad is a legacy app install ad.",
            "The ad is a responsive display ad.",
            "The ad is a local ad.",
            "The ad is a display upload ad with the HTML5_UPLOAD_AD product type.",
            "The ad is a display upload ad with one of the DYNAMIC_HTML5_* product types.",
            "The ad is an app engagement ad.",
            "The ad is a Shopping Comparison Listing ad.",
            "Video bumper ad.",
            "Video non-skippable in-stream ad.",
            "Video TrueView in-stream ad.",
            "Video responsive ad.",
            "Smart campaign ad.",
            "Call ad.",
            "Universal app pre-registration ad.",
            "In-feed video ad.",
            "Demand Gen multi asset ad.",
            "Demand Gen carousel ad.",
            "Travel ad.",
            "Demand Gen video responsive ad.",
            "Demand Gen product ad.",
            "YouTube Audio ad."
          ],
          "type": "string",
          "description": "Output only. The type of ad.",
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "TEXT_AD",
            "EXPANDED_TEXT_AD",
            "EXPANDED_DYNAMIC_SEARCH_AD",
            "HOTEL_AD",
            "SHOPPING_SMART_AD",
            "SHOPPING_PRODUCT_AD",
            "VIDEO_AD",
            "IMAGE_AD",
            "RESPONSIVE_SEARCH_AD",
            "LEGACY_RESPONSIVE_DISPLAY_AD",
            "APP_AD",
            "LEGACY_APP_INSTALL_AD",
            "RESPONSIVE_DISPLAY_AD",
            "LOCAL_AD",
            "HTML5_UPLOAD_AD",
            "DYNAMIC_HTML5_AD",
            "APP_ENGAGEMENT_AD",
            "SHOPPING_COMPARISON_LISTING_AD",
            "VIDEO_BUMPER_AD",
            "VIDEO_NON_SKIPPABLE_IN_STREAM_AD",
            "VIDEO_TRUEVIEW_IN_STREAM_AD",
            "VIDEO_RESPONSIVE_AD",
            "SMART_CAMPAIGN_AD",
            "CALL_AD",
            "APP_PRE_REGISTRATION_AD",
            "IN_FEED_VIDEO_AD",
            "DEMAND_GEN_MULTI_ASSET_AD",
            "DEMAND_GEN_CAROUSEL_AD",
            "TRAVEL_AD",
            "DEMAND_GEN_VIDEO_RESPONSIVE_AD",
            "DEMAND_GEN_PRODUCT_AD",
            "YOUTUBE_AUDIO_AD"
          ]
        },
        "shoppingProductAd": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__ShoppingProductAdInfo",
          "description": "Details pertaining to a Shopping product ad."
        },
        "displayUploadAd": {
          "description": "Details pertaining to a display upload ad.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__DisplayUploadAdInfo"
        },
        "finalAppUrls": {
          "description": "A list of final app URLs that will be used on mobile if the user has the specific app installed.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__FinalAppUrl"
          },
          "type": "array"
        },
        "devicePreference": {
          "description": "The device preference for the ad. You can only specify a preference for mobile devices. When this preference is set the ad will be preferred over other ads when being displayed on a mobile device. The ad can still be displayed on other device types, for example, if no other ads are available. If unspecified (no device preference), all devices are targeted. This is only supported by some ad types.",
          "type": "string",
          "x-enumDescriptions": [
            "Not specified.",
            "The value is unknown in this version.",
            "Mobile devices with full browsers.",
            "Tablets with full browsers.",
            "Computers.",
            "Smart TVs and game consoles.",
            "Other device types."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "MOBILE",
            "TABLET",
            "DESKTOP",
            "CONNECTED_TV",
            "OTHER"
          ]
        },
        "travelAd": {
          "description": "Details pertaining to a travel ad.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__TravelAdInfo"
        },
        "appAd": {
          "description": "Details pertaining to an app ad.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AppAdInfo"
        },
        "finalMobileUrls": {
          "type": "array",
          "description": "The list of possible final mobile URLs after all cross-domain redirects for the ad.",
          "items": {
            "type": "string"
          }
        },
        "shoppingSmartAd": {
          "description": "Details pertaining to a Smart Shopping ad.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__ShoppingSmartAdInfo"
        },
        "textAd": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__TextAdInfo",
          "description": "Immutable. Details pertaining to a text ad."
        },
        "legacyAppInstallAd": {
          "description": "Immutable. Details pertaining to a legacy app install ad.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__LegacyAppInstallAdInfo"
        },
        "demandGenMultiAssetAd": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__DemandGenMultiAssetAdInfo",
          "description": "Details pertaining to a Demand Gen multi asset ad."
        },
        "videoAd": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__VideoAdInfo",
          "description": "Details pertaining to a Video ad."
        },
        "urlCustomParameters": {
          "type": "array",
          "description": "The list of mappings that can be used to substitute custom parameter tags in a `tracking_url_template`, `final_urls`, or `mobile_final_urls`. For mutates, use url custom parameter operations.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__CustomParameter"
          }
        },
        "systemManagedResourceSource": {
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "AD_VARIATIONS"
          ],
          "description": "Output only. If this ad is system managed, then this field will indicate the source. This field is read-only.",
          "type": "string",
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "Generated ad variations experiment ad."
          ]
        },
        "videoResponsiveAd": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__VideoResponsiveAdInfo",
          "description": "Details pertaining to a Video responsive ad."
        },
        "shoppingComparisonListingAd": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__ShoppingComparisonListingAdInfo",
          "description": "Details pertaining to a Shopping Comparison Listing ad."
        },
        "legacyResponsiveDisplayAd": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__LegacyResponsiveDisplayAdInfo",
          "description": "Details pertaining to a legacy responsive display ad."
        },
        "demandGenVideoResponsiveAd": {
          "description": "Details pertaining to a Demand Gen video responsive ad.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__DemandGenVideoResponsiveAdInfo"
        },
        "localAd": {
          "description": "Details pertaining to a local ad.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__LocalAdInfo"
        },
        "demandGenProductAd": {
          "description": "Details pertaining to a Demand Gen product ad.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__DemandGenProductAdInfo"
        },
        "name": {
          "description": "Immutable. The name of the ad. This is only used to be able to identify the ad. It does not need to be unique and does not affect the served ad. The name field is currently only supported for DisplayUploadAd, ImageAd, LegacyAppInstallAd, ShoppingComparisonListingAd, VideoAd, VideoResponsiveAd and DemandGen ads.",
          "type": "string"
        },
        "urlCollections": {
          "type": "array",
          "description": "Additional URLs for the ad that are tagged with a unique identifier that can be referenced from other fields in the ad.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__UrlCollection"
          }
        },
        "id": {
          "type": "string",
          "description": "Output only. The ID of the ad.",
          "format": "int64"
        },
        "finalUrls": {
          "type": "array",
          "description": "The list of possible final URLs after all cross-domain redirects for the ad.",
          "items": {
            "type": "string"
          }
        },
        "demandGenCarouselAd": {
          "description": "Details pertaining to a Demand Gen carousel ad.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__DemandGenCarouselAdInfo"
        },
        "resourceName": {
          "description": "Immutable. The resource name of the ad. Ad resource names have the form: `customers/{customer_id}/ads/{ad_id}`",
          "type": "string"
        },
        "hotelAd": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__HotelAdInfo",
          "description": "Details pertaining to a hotel ad."
        },
        "trackingUrlTemplate": {
          "type": "string",
          "description": "The URL template for constructing a tracking URL."
        }
      },
      "description": "An ad."
    },
    "GoogleAdsGoogleadsV25Resources__Asset": {
      "description": "Asset is a part of an ad which can be shared across multiple ads. It can be an image (ImageAsset), a video (YoutubeVideoAsset), etc. Assets are immutable and cannot be removed. To stop an asset from serving, remove the asset from the entity that is using it.",
      "type": "object",
      "properties": {
        "source": {
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "The asset or asset link is provided by advertiser.",
            "The asset or asset link is generated by Google."
          ],
          "type": "string",
          "description": "Output only. Source of the asset.",
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "ADVERTISER",
            "AUTOMATICALLY_CREATED"
          ]
        },
        "callAsset": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__CallAsset",
          "description": "A call asset."
        },
        "dynamicHotelsAndRentalsAsset": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__DynamicHotelsAndRentalsAsset",
          "description": "A dynamic hotels and rentals asset."
        },
        "callToActionAsset": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__CallToActionAsset",
          "description": "Immutable. A call to action asset."
        },
        "dynamicFlightsAsset": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__DynamicFlightsAsset",
          "description": "A dynamic flights asset."
        },
        "dynamicTravelAsset": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__DynamicTravelAsset",
          "description": "A dynamic travel asset."
        },
        "dynamicJobsAsset": {
          "description": "A dynamic jobs asset.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__DynamicJobsAsset"
        },
        "pageFeedAsset": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__PageFeedAsset",
          "description": "A page feed asset."
        },
        "finalUrlSuffix": {
          "description": "URL template for appending params to landing page URLs served with parallel tracking.",
          "type": "string"
        },
        "locationAsset": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__LocationAsset",
          "description": "Output only. A location asset."
        },
        "textAsset": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__TextAsset",
          "description": "Immutable. A text asset."
        },
        "type": {
          "description": "Output only. Type of the asset.",
          "type": "string",
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "YOUTUBE_VIDEO",
            "MEDIA_BUNDLE",
            "IMAGE",
            "TEXT",
            "LEAD_FORM",
            "BOOK_ON_GOOGLE",
            "PROMOTION",
            "CALLOUT",
            "STRUCTURED_SNIPPET",
            "SITELINK",
            "PAGE_FEED",
            "DYNAMIC_EDUCATION",
            "MOBILE_APP",
            "HOTEL_CALLOUT",
            "CALL",
            "PRICE",
            "CALL_TO_ACTION",
            "DYNAMIC_REAL_ESTATE",
            "DYNAMIC_CUSTOM",
            "DYNAMIC_HOTELS_AND_RENTALS",
            "DYNAMIC_FLIGHTS",
            "DYNAMIC_TRAVEL",
            "DYNAMIC_LOCAL",
            "DYNAMIC_JOBS",
            "LOCATION",
            "HOTEL_PROPERTY",
            "DEMAND_GEN_CAROUSEL_CARD",
            "BUSINESS_MESSAGE",
            "APP_DEEP_LINK",
            "YOUTUBE_VIDEO_LIST"
          ],
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "YouTube video asset.",
            "Media bundle asset.",
            "Image asset.",
            "Text asset.",
            "Lead form asset.",
            "Book on Google asset.",
            "Promotion asset.",
            "Callout asset.",
            "Structured Snippet asset.",
            "Sitelink asset.",
            "Page Feed asset.",
            "Dynamic Education asset.",
            "Mobile app asset.",
            "Hotel callout asset.",
            "Call asset.",
            "Price asset.",
            "Call to action asset.",
            "Dynamic real estate asset.",
            "Dynamic custom asset.",
            "Dynamic hotels and rentals asset.",
            "Dynamic flights asset.",
            "Dynamic travel asset.",
            "Dynamic local asset.",
            "Dynamic jobs asset.",
            "Location asset.",
            "Hotel property asset.",
            "Demand Gen Carousel Card asset.",
            "Business message asset.",
            "App deep link asset.",
            "YouTube video list asset."
          ]
        },
        "sitelinkAsset": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__SitelinkAsset",
          "description": "A sitelink asset."
        },
        "mediaBundleAsset": {
          "description": "Immutable. A media bundle asset.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__MediaBundleAsset"
        },
        "priceAsset": {
          "description": "A price asset.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__PriceAsset"
        },
        "youtubeVideoListAsset": {
          "description": "Immutable. A YouTube video list asset.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__YouTubeVideoListAsset"
        },
        "structuredSnippetAsset": {
          "description": "A structured snippet asset.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__StructuredSnippetAsset"
        },
        "hotelPropertyAsset": {
          "description": "Immutable. A hotel property asset.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__HotelPropertyAsset"
        },
        "dynamicCustomAsset": {
          "description": "A dynamic custom asset.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__DynamicCustomAsset"
        },
        "fieldTypePolicySummaries": {
          "type": "array",
          "description": "Output only. Policy information for the asset for each FieldType.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources__AssetFieldTypePolicySummary"
          }
        },
        "orientation": {
          "x-enumDescriptions": [
            "Not specified.",
            "The value is unknown in this version.",
            "Landscape orientation.",
            "Portrait orientation.",
            "Square orientation."
          ],
          "description": "Output only. Orientation of the asset. This is only supported for image and video assets.",
          "type": "string",
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "LANDSCAPE",
            "PORTRAIT",
            "SQUARE"
          ]
        },
        "syntheticContentInfo": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__SyntheticContentInfo",
          "description": "Synthetic content info for the asset."
        },
        "name": {
          "type": "string",
          "description": "Optional name of the asset."
        },
        "hotelCalloutAsset": {
          "description": "A hotel callout asset.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__HotelCalloutAsset"
        },
        "leadFormAsset": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__LeadFormAsset",
          "description": "A lead form asset."
        },
        "calloutAsset": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__CalloutAsset",
          "description": "A callout asset."
        },
        "dynamicRealEstateAsset": {
          "description": "A dynamic real estate asset.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__DynamicRealEstateAsset"
        },
        "finalUrls": {
          "description": "A list of possible final URLs after all cross domain redirects.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "dynamicEducationAsset": {
          "description": "A dynamic education asset.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__DynamicEducationAsset"
        },
        "resourceName": {
          "type": "string",
          "description": "Immutable. The resource name of the asset. Asset resource names have the form: `customers/{customer_id}/assets/{asset_id}`"
        },
        "trackingUrlTemplate": {
          "description": "URL template for constructing a tracking URL.",
          "type": "string"
        },
        "appDeepLinkAsset": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__AppDeepLinkAsset",
          "description": "Immutable. An app deep link asset."
        },
        "id": {
          "format": "int64",
          "description": "Output only. The ID of the asset.",
          "type": "string"
        },
        "finalMobileUrls": {
          "type": "array",
          "description": "A list of possible final mobile URLs after all cross domain redirects.",
          "items": {
            "type": "string"
          }
        },
        "policySummary": {
          "description": "Output only. Policy information for the asset.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources__AssetPolicySummary"
        },
        "bookOnGoogleAsset": {
          "description": "A book on google asset.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__BookOnGoogleAsset"
        },
        "imageAsset": {
          "description": "Output only. An image asset.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__ImageAsset"
        },
        "demandGenCarouselCardAsset": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__DemandGenCarouselCardAsset",
          "description": "Immutable. A Demand Gen carousel card asset."
        },
        "mobileAppAsset": {
          "description": "A mobile app asset.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__MobileAppAsset"
        },
        "youtubeVideoAsset": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__YoutubeVideoAsset",
          "description": "Immutable. A YouTube video asset."
        },
        "promotionAsset": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__PromotionAsset",
          "description": "A promotion asset."
        },
        "dynamicLocalAsset": {
          "description": "A dynamic local asset.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__DynamicLocalAsset"
        },
        "businessMessageAsset": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__BusinessMessageAsset",
          "description": "A business message asset."
        },
        "urlCustomParameters": {
          "description": "A list of mappings to be used for substituting URL custom parameter tags in the tracking_url_template, final_urls, and/or final_mobile_urls.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__CustomParameter"
          },
          "type": "array"
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources__AssetFieldTypePolicySummary": {
      "type": "object",
      "properties": {
        "assetFieldType": {
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "HEADLINE",
            "DESCRIPTION",
            "MANDATORY_AD_TEXT",
            "MARKETING_IMAGE",
            "MEDIA_BUNDLE",
            "YOUTUBE_VIDEO",
            "BOOK_ON_GOOGLE",
            "LEAD_FORM",
            "PROMOTION",
            "CALLOUT",
            "STRUCTURED_SNIPPET",
            "SITELINK",
            "MOBILE_APP",
            "HOTEL_CALLOUT",
            "CALL",
            "PRICE",
            "LONG_HEADLINE",
            "BUSINESS_NAME",
            "SQUARE_MARKETING_IMAGE",
            "PORTRAIT_MARKETING_IMAGE",
            "LOGO",
            "LANDSCAPE_LOGO",
            "VIDEO",
            "CALL_TO_ACTION_SELECTION",
            "AD_IMAGE",
            "BUSINESS_LOGO",
            "HOTEL_PROPERTY",
            "DEMAND_GEN_CAROUSEL_CARD",
            "BUSINESS_MESSAGE",
            "TALL_PORTRAIT_MARKETING_IMAGE",
            "RELATED_YOUTUBE_VIDEOS",
            "LANDING_PAGE_PREVIEW",
            "LONG_DESCRIPTION",
            "CALL_TO_ACTION",
            "CLASSIC_DISPLAY_IMAGE"
          ],
          "type": "string",
          "description": "Output only. FieldType of this asset.",
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "The asset is linked for use as a headline.",
            "The asset is linked for use as a description.",
            "The asset is linked for use as mandatory ad text.",
            "The asset is linked for use as a marketing image.",
            "The asset is linked for use as a media bundle.",
            "The asset is linked for use as a YouTube video.",
            "The asset is linked to indicate that a hotels campaign is \"Book on Google\" enabled.",
            "The asset is linked for use as a Lead Form extension.",
            "The asset is linked for use as a Promotion extension.",
            "The asset is linked for use as a Callout extension.",
            "The asset is linked for use as a Structured Snippet extension.",
            "The asset is linked for use as a Sitelink.",
            "The asset is linked for use as a Mobile App extension.",
            "The asset is linked for use as a Hotel Callout extension.",
            "The asset is linked for use as a Call extension.",
            "The asset is linked for use as a Price extension.",
            "The asset is linked for use as a long headline.",
            "The asset is linked for use as a business name.",
            "The asset is linked for use as a square marketing image.",
            "The asset is linked for use as a portrait marketing image.",
            "The asset is linked for use as a logo.",
            "The asset is linked for use as a landscape logo.",
            "The asset is linked for use as a non YouTube logo.",
            "The asset is linked for use to select a call-to-action.",
            "The asset is linked for use to select an ad image.",
            "The asset is linked for use as a business logo.",
            "The asset is linked for use as a hotel property in a Performance Max for travel goals campaign.",
            "The asset is linked for use as a Demand Gen carousel card.",
            "The asset is linked for use as a Business Message.",
            "The asset is linked for use as a tall portrait marketing image.",
            "The asset is linked for use as related YouTube videos.",
            "The asset is linked for use as a landing page preview image.",
            "The asset is linked for use as a long description.",
            "The asset is linked for use as a call-to-action.",
            "The asset is linked for use as a classic display image."
          ]
        },
        "assetSource": {
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "ADVERTISER",
            "AUTOMATICALLY_CREATED"
          ],
          "description": "Output only. Source of this asset.",
          "type": "string",
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "The asset or asset link is provided by advertiser.",
            "The asset or asset link is generated by Google."
          ]
        },
        "policySummaryInfo": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources__AssetPolicySummary",
          "description": "Output only. Policy summary."
        }
      },
      "description": "Contains policy information for an asset under AssetFieldType context."
    },
    "GoogleAdsGoogleadsV25Resources__AssetPolicySummary": {
      "description": "Contains policy information for an asset.",
      "type": "object",
      "properties": {
        "approvalStatus": {
          "type": "string",
          "description": "Output only. The overall approval status of this asset, calculated based on the status of its individual policy topic entries.",
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "DISAPPROVED",
            "APPROVED_LIMITED",
            "APPROVED",
            "AREA_OF_INTEREST_ONLY"
          ],
          "x-enumDescriptions": [
            "No value has been specified.",
            "The received value is not known in this version. This is a response-only value.",
            "Will not serve.",
            "Serves with restrictions.",
            "Serves without restrictions.",
            "Will not serve in targeted countries, but may serve for users who are searching for information about the targeted countries."
          ]
        },
        "policyTopicEntries": {
          "description": "Output only. The list of policy findings for this asset.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__PolicyTopicEntry"
          },
          "type": "array"
        },
        "reviewStatus": {
          "description": "Output only. Where in the review process this asset is.",
          "type": "string",
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "REVIEW_IN_PROGRESS",
            "REVIEWED",
            "UNDER_APPEAL",
            "ELIGIBLE_MAY_SERVE"
          ],
          "x-enumDescriptions": [
            "No value has been specified.",
            "The received value is not known in this version. This is a response-only value.",
            "Currently under review.",
            "Primary review complete. Other reviews may be continuing.",
            "The resource has been resubmitted for approval or its policy decision has been appealed.",
            "The resource is eligible and may be serving but could still undergo further review."
          ]
        }
      }
    },
    "GoogleAdsGoogleadsV25Resources__Recommendation": {
      "description": "A recommendation.",
      "type": "object",
      "properties": {
        "shoppingFixMerchantCenterAccountSuspensionWarningRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ShoppingMerchantCenterAccountSuspensionRecommendation",
          "description": "Output only. The shopping fix Merchant Center account suspension warning recommendation."
        },
        "shoppingFixSuspendedMerchantCenterAccountRecommendation": {
          "description": "Output only. The shopping fix suspended Merchant Center account recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ShoppingMerchantCenterAccountSuspensionRecommendation"
        },
        "shoppingTargetAllOffersRecommendation": {
          "description": "Output only. The shopping target all offers recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ShoppingTargetAllOffersRecommendation"
        },
        "optimizeAdRotationRecommendation": {
          "description": "Output only. The Optimize Ad Rotation recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_OptimizeAdRotationRecommendation"
        },
        "leadFormAssetRecommendation": {
          "description": "Output only. The lead form asset recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_LeadFormAssetRecommendation"
        },
        "keywordMatchTypeRecommendation": {
          "description": "Output only. The keyword match type recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_KeywordMatchTypeRecommendation"
        },
        "shoppingAddMoreIdentifiersRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ShoppingOfferAttributeRecommendation",
          "description": "Output only. The shopping add more identifiers recommendation."
        },
        "sitelinkAssetRecommendation": {
          "description": "Output only. The sitelink asset recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_SitelinkAssetRecommendation"
        },
        "searchPartnersOptInRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_SearchPartnersOptInRecommendation",
          "description": "Output only. The Search Partners Opt-In recommendation."
        },
        "upgradeLocalCampaignToPerformanceMaxRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_UpgradeLocalCampaignToPerformanceMaxRecommendation",
          "description": "Output only. The upgrade a Local campaign to a Performance Max campaign recommendation."
        },
        "setTargetRoasRecommendation": {
          "description": "Output only. The set target ROAS recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ForecastingSetTargetRoasRecommendation"
        },
        "improveGoogleTagCoverageRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ImproveGoogleTagCoverageRecommendation",
          "description": "Output only. Recommendation to deploy Google Tag on more pages."
        },
        "shoppingAddColorRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ShoppingOfferAttributeRecommendation",
          "description": "Output only. The shopping add color recommendation."
        },
        "shoppingFixDisapprovedProductsRecommendation": {
          "description": "Output only. The shopping fix disapproved products recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ShoppingFixDisapprovedProductsRecommendation"
        },
        "adGroup": {
          "type": "string",
          "description": "Output only. The ad group targeted by this recommendation. This will be set only when the recommendation affects a single ad group. This field will be set for the following recommendation types: KEYWORD, OPTIMIZE_AD_ROTATION, RESPONSIVE_SEARCH_AD, RESPONSIVE_SEARCH_AD_ASSET, TEXT_AD"
        },
        "shoppingAddGtinRecommendation": {
          "description": "Output only. The shopping add GTIN recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ShoppingOfferAttributeRecommendation"
        },
        "type": {
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "CAMPAIGN_BUDGET",
            "KEYWORD",
            "TEXT_AD",
            "TARGET_CPA_OPT_IN",
            "MAXIMIZE_CONVERSIONS_OPT_IN",
            "ENHANCED_CPC_OPT_IN",
            "SEARCH_PARTNERS_OPT_IN",
            "MAXIMIZE_CLICKS_OPT_IN",
            "OPTIMIZE_AD_ROTATION",
            "KEYWORD_MATCH_TYPE",
            "MOVE_UNUSED_BUDGET",
            "FORECASTING_CAMPAIGN_BUDGET",
            "TARGET_ROAS_OPT_IN",
            "RESPONSIVE_SEARCH_AD",
            "MARGINAL_ROI_CAMPAIGN_BUDGET",
            "USE_BROAD_MATCH_KEYWORD",
            "RESPONSIVE_SEARCH_AD_ASSET",
            "UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX",
            "RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH",
            "DISPLAY_EXPANSION_OPT_IN",
            "UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX",
            "RAISE_TARGET_CPA_BID_TOO_LOW",
            "FORECASTING_SET_TARGET_ROAS",
            "CALLOUT_ASSET",
            "SITELINK_ASSET",
            "CALL_ASSET",
            "SHOPPING_ADD_AGE_GROUP",
            "SHOPPING_ADD_COLOR",
            "SHOPPING_ADD_GENDER",
            "SHOPPING_ADD_GTIN",
            "SHOPPING_ADD_MORE_IDENTIFIERS",
            "SHOPPING_ADD_SIZE",
            "SHOPPING_ADD_PRODUCTS_TO_CAMPAIGN",
            "SHOPPING_FIX_DISAPPROVED_PRODUCTS",
            "SHOPPING_TARGET_ALL_OFFERS",
            "SHOPPING_FIX_SUSPENDED_MERCHANT_CENTER_ACCOUNT",
            "SHOPPING_FIX_MERCHANT_CENTER_ACCOUNT_SUSPENSION_WARNING",
            "SHOPPING_MIGRATE_REGULAR_SHOPPING_CAMPAIGN_OFFERS_TO_PERFORMANCE_MAX",
            "DYNAMIC_IMAGE_EXTENSION_OPT_IN",
            "RAISE_TARGET_CPA",
            "LOWER_TARGET_ROAS",
            "PERFORMANCE_MAX_OPT_IN",
            "IMPROVE_PERFORMANCE_MAX_AD_STRENGTH",
            "MIGRATE_DYNAMIC_SEARCH_ADS_CAMPAIGN_TO_PERFORMANCE_MAX",
            "FORECASTING_SET_TARGET_CPA",
            "SET_TARGET_CPA",
            "SET_TARGET_ROAS",
            "MAXIMIZE_CONVERSION_VALUE_OPT_IN",
            "IMPROVE_GOOGLE_TAG_COVERAGE",
            "PERFORMANCE_MAX_FINAL_URL_OPT_IN",
            "REFRESH_CUSTOMER_MATCH_LIST",
            "CUSTOM_AUDIENCE_OPT_IN",
            "LEAD_FORM_ASSET",
            "IMPROVE_DEMAND_GEN_AD_STRENGTH"
          ],
          "description": "Output only. The type of recommendation.",
          "type": "string",
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version.",
            "Provides optimized budget recommendations for campaigns.",
            "Keyword recommendation.",
            "Recommendation to add a new text ad.",
            "Recommendation to update a campaign to use a Target CPA bidding strategy.",
            "Recommendation to update a campaign to use the Maximize Conversions bidding strategy.",
            "Recommendation to enable Enhanced Cost Per Click for a campaign.",
            "Recommendation to start showing your campaign's ads on Google Search Partners Websites.",
            "Recommendation to update a campaign to use a Maximize Clicks bidding strategy.",
            "Recommendation to start using the \"Optimize\" ad rotation setting for the given ad group.",
            "Recommendation to change an existing keyword from one match type to a broader match type.",
            "Recommendation to move unused budget from one budget to a constrained budget.",
            "Budget recommendation for campaigns that are expected to become budget-constrained in the future (as opposed to the CAMPAIGN_BUDGET recommendation, which applies to campaigns that are currently budget-constrained).",
            "Recommendation to update a campaign to use a Target ROAS bidding strategy.",
            "Recommendation to add a new responsive search ad.",
            "Budget recommendation for campaigns whose ROI is predicted to increase with a budget adjustment.",
            "Recommendation to add broad match versions of keywords for fully automated conversion-based bidding campaigns.",
            "Recommendation to add new responsive search ad assets.",
            "Recommendation to upgrade a Smart Shopping campaign to a Performance Max campaign.",
            "Recommendation to improve strength of responsive search ad.",
            "Recommendation to update a campaign to use Display Expansion.",
            "Recommendation to upgrade a Local campaign to a Performance Max campaign.",
            "Recommendation to raise target CPA when it is too low and there are very few or no conversions. It is applied asynchronously and can take minutes depending on the number of ad groups there are in the related campaign.",
            "Recommendation to raise the budget in advance of a seasonal event that is forecasted to increase traffic, and change bidding strategy from maximize conversion value to target ROAS.",
            "Recommendation to add callout assets to campaign or customer level.",
            "Recommendation to add sitelink assets to campaign or customer level.",
            "Recommendation to add call assets to campaign or customer level.",
            "Recommendation to add the age group attribute to offers that are demoted because of a missing age group.",
            "Recommendation to add a color to offers that are demoted because of a missing color.",
            "Recommendation to add a gender to offers that are demoted because of a missing gender.",
            "Recommendation to add a GTIN (Global Trade Item Number) to offers that are demoted because of a missing GTIN.",
            "Recommendation to add more identifiers to offers that are demoted because of missing identifiers.",
            "Recommendation to add the size to offers that are demoted because of a missing size.",
            "Recommendation informing a customer about a campaign that cannot serve because no products are being targeted.",
            "The shopping recommendation informing a customer about campaign with a high percentage of disapproved products.",
            "Recommendation to create a catch-all campaign that targets all offers.",
            "Recommendation to fix Merchant Center account suspension issues.",
            "Recommendation to fix Merchant Center account suspension warning issues.",
            "Recommendation to migrate offers targeted by Regular Shopping Campaigns to existing Performance Max campaigns.",
            "Recommendation to enable dynamic image extensions on the account, allowing Google to find the best images from ad landing pages and complement text ads.",
            "Recommendation to raise Target CPA based on Google predictions modeled from past conversions. It is applied asynchronously and can take minutes depending on the number of ad groups there are in the related campaign.",
            "Recommendation to lower Target ROAS.",
            "Recommendation to opt into Performance Max campaigns.",
            "Recommendation to improve the asset group strength of a Performance Max campaign to an \"Excellent\" rating.",
            "Recommendation to migrate Dynamic Search Ads to Performance Max campaigns.",
            "Recommendation to set a target CPA for campaigns that do not have one specified, in advance of a seasonal event that is forecasted to increase traffic.",
            "Recommendation to set a target CPA for campaigns that do not have one specified.",
            "Recommendation to set a target ROAS for campaigns that do not have one specified.",
            "Recommendation to update a campaign to use the Maximize Conversion Value bidding strategy.",
            "Recommendation to deploy Google Tag on more pages.",
            "Recommendation to turn on Final URL expansion for your Performance Max campaigns.",
            "Recommendation to update a customer list that hasn't been updated in the last 90 days.",
            "Recommendation to create a custom audience.",
            "Recommendation to add lead form assets to campaign or customer level.",
            "Recommendation to improve the strength of ads in Demand Gen campaigns."
          ]
        },
        "marginalRoiCampaignBudgetRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_CampaignBudgetRecommendation",
          "description": "Output only. The marginal ROI campaign budget recommendation."
        },
        "shoppingAddGenderRecommendation": {
          "description": "Output only. The shopping add gender recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ShoppingOfferAttributeRecommendation"
        },
        "moveUnusedBudgetRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_MoveUnusedBudgetRecommendation",
          "description": "Output only. The move unused budget recommendation."
        },
        "forecastingCampaignBudgetRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_CampaignBudgetRecommendation",
          "description": "Output only. The forecasting campaign budget recommendation."
        },
        "performanceMaxFinalUrlOptInRecommendation": {
          "description": "Output only. Recommendation to turn on Final URL expansion for your Performance Max campaigns.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_PerformanceMaxFinalUrlOptInRecommendation"
        },
        "maximizeClicksOptInRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_MaximizeClicksOptInRecommendation",
          "description": "Output only. The MaximizeClicks Opt-In recommendation."
        },
        "improvePerformanceMaxAdStrengthRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ImprovePerformanceMaxAdStrengthRecommendation",
          "description": "Output only. The improve Performance Max ad strength recommendation."
        },
        "raiseTargetCpaRecommendation": {
          "description": "Output only. Recommendation to raise Target CPA.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_RaiseTargetCpaRecommendation"
        },
        "raiseTargetCpaBidTooLowRecommendation": {
          "description": "Output only. The raise target CPA bid too low recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_RaiseTargetCpaBidTooLowRecommendation"
        },
        "dismissed": {
          "description": "Output only. Whether the recommendation is dismissed or not.",
          "type": "boolean"
        },
        "campaignBudgetRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_CampaignBudgetRecommendation",
          "description": "Output only. The campaign budget recommendation."
        },
        "forecastingSetTargetCpaRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ForecastingSetTargetCpaRecommendation",
          "description": "Output only. The forecasting set target CPA recommendation."
        },
        "maximizeConversionValueOptInRecommendation": {
          "description": "Output only. The Maximize Conversion Value opt-in recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_MaximizeConversionValueOptInRecommendation"
        },
        "enhancedCpcOptInRecommendation": {
          "description": "Output only. The Enhanced Cost-Per-Click Opt-In recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_EnhancedCpcOptInRecommendation"
        },
        "migrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation": {
          "description": "Output only. The Dynamic Search Ads to Performance Max migration recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_MigrateDynamicSearchAdsCampaignToPerformanceMaxRecommendation"
        },
        "callAssetRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_CallAssetRecommendation",
          "description": "Output only. The call asset recommendation."
        },
        "targetRoasOptInRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_TargetRoasOptInRecommendation",
          "description": "Output only. The Target ROAS opt-in recommendation."
        },
        "resourceName": {
          "type": "string",
          "description": "Immutable. The resource name of the recommendation. `customers/{customer_id}/recommendations/{recommendation_id}`"
        },
        "shoppingAddProductsToCampaignRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ShoppingAddProductsToCampaignRecommendation",
          "description": "Output only. The shopping add products to campaign recommendation."
        },
        "useBroadMatchKeywordRecommendation": {
          "description": "Output only. The use broad match keyword recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_UseBroadMatchKeywordRecommendation"
        },
        "setTargetCpaRecommendation": {
          "description": "Output only. The set target CPA recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ForecastingSetTargetCpaRecommendation"
        },
        "campaign": {
          "type": "string",
          "description": "Output only. The campaign targeted by this recommendation. This field will be set for the following recommendation types: CALL_EXTENSION, CALLOUT_EXTENSION, ENHANCED_CPC_OPT_IN, USE_BROAD_MATCH_KEYWORD, KEYWORD, KEYWORD_MATCH_TYPE, UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX, MAXIMIZE_CLICKS_OPT_IN, MAXIMIZE_CONVERSIONS_OPT_IN, OPTIMIZE_AD_ROTATION, RESPONSIVE_SEARCH_AD, RESPONSIVE_SEARCH_AD_ASSET, SEARCH_PARTNERS_OPT_IN, DISPLAY_EXPANSION_OPT_IN, SITELINK_EXTENSION, TARGET_CPA_OPT_IN, TARGET_ROAS_OPT_IN, TEXT_AD, UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX, RAISE_TARGET_CPA_BID_TOO_LOW, FORECASTING_SET_TARGET_ROAS, SHOPPING_ADD_AGE_GROUP, SHOPPING_ADD_COLOR, SHOPPING_ADD_GENDER, SHOPPING_ADD_SIZE, SHOPPING_ADD_GTIN, SHOPPING_ADD_MORE_IDENTIFIERS, SHOPPING_ADD_PRODUCTS_TO_CAMPAIGN, SHOPPING_FIX_DISAPPROVED_PRODUCTS, SHOPPING_MIGRATE_REGULAR_SHOPPING_CAMPAIGN_OFFERS_TO_PERFORMANCE_MAX, DYNAMIC_IMAGE_EXTENSION_OPT_IN, RAISE_TARGET_CPA, LOWER_TARGET_ROAS, FORECASTING_SET_TARGET_CPA, SET_TARGET_CPA, SET_TARGET_ROAS, MAXIMIZE_CONVERSION_VALUE_OPT_IN, IMPROVE_GOOGLE_TAG_COVERAGE, PERFORMANCE_MAX_FINAL_URL_OPT_IN"
        },
        "targetCpaOptInRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_TargetCpaOptInRecommendation",
          "description": "Output only. The TargetCPA opt-in recommendation."
        },
        "forecastingSetTargetRoasRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ForecastingSetTargetRoasRecommendation",
          "description": "Output only. The forecasting set target ROAS recommendation."
        },
        "shoppingAddAgeGroupRecommendation": {
          "description": "Output only. The shopping add age group recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ShoppingOfferAttributeRecommendation"
        },
        "displayExpansionOptInRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_DisplayExpansionOptInRecommendation",
          "description": "Output only. The Display Expansion opt-in recommendation."
        },
        "improveDemandGenAdStrengthRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ImproveDemandGenAdStrengthRecommendation",
          "description": "Output only. The improve Demand Gen ad strength recommendation."
        },
        "campaignBudget": {
          "description": "Output only. The budget targeted by this recommendation. This will be set only when the recommendation affects a single campaign budget. This field will be set for the following recommendation types: CAMPAIGN_BUDGET, FORECASTING_CAMPAIGN_BUDGET, MARGINAL_ROI_CAMPAIGN_BUDGET, MOVE_UNUSED_BUDGET",
          "type": "string"
        },
        "responsiveSearchAdRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ResponsiveSearchAdRecommendation",
          "description": "Output only. The add responsive search ad recommendation."
        },
        "responsiveSearchAdAssetRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ResponsiveSearchAdAssetRecommendation",
          "description": "Output only. The responsive search ad asset recommendation."
        },
        "keywordRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_KeywordRecommendation",
          "description": "Output only. The keyword recommendation."
        },
        "refreshCustomerMatchListRecommendation": {
          "description": "Output only. The refresh customer list recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_RefreshCustomerMatchListRecommendation"
        },
        "responsiveSearchAdImproveAdStrengthRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ResponsiveSearchAdImproveAdStrengthRecommendation",
          "description": "Output only. The responsive search ad improve ad strength recommendation."
        },
        "dynamicImageExtensionOptInRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_DynamicImageExtensionOptInRecommendation",
          "description": "Output only. Recommendation to enable dynamic image extensions on the account, allowing Google to find the best images from ad landing pages and complement text ads."
        },
        "lowerTargetRoasRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_LowerTargetRoasRecommendation",
          "description": "Output only. Recommendation to lower Target ROAS."
        },
        "impact": {
          "description": "Output only. The impact on account performance as a result of applying the recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_RecommendationImpact"
        },
        "maximizeConversionsOptInRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_MaximizeConversionsOptInRecommendation",
          "description": "Output only. The MaximizeConversions Opt-In recommendation."
        },
        "shoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation": {
          "description": "Output only. The shopping migrate Regular Shopping Campaign offers to Performance Max recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ShoppingMigrateRegularShoppingCampaignOffersToPerformanceMaxRecommendation"
        },
        "upgradeSmartShoppingCampaignToPerformanceMaxRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_UpgradeSmartShoppingCampaignToPerformanceMaxRecommendation",
          "description": "Output only. The upgrade a Smart Shopping campaign to a Performance Max campaign recommendation."
        },
        "performanceMaxOptInRecommendation": {
          "description": "Output only. The Performance Max Opt In recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_PerformanceMaxOptInRecommendation"
        },
        "campaigns": {
          "type": "array",
          "description": "Output only. The campaigns targeted by this recommendation. This field will be set for the following recommendation types: CAMPAIGN_BUDGET, FORECASTING_CAMPAIGN_BUDGET, MARGINAL_ROI_CAMPAIGN_BUDGET and MOVE_UNUSED_BUDGET",
          "items": {
            "type": "string"
          }
        },
        "calloutAssetRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_CalloutAssetRecommendation",
          "description": "Output only. The callout asset recommendation."
        },
        "shoppingAddSizeRecommendation": {
          "description": "Output only. The shopping add size recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_ShoppingOfferAttributeRecommendation"
        },
        "customAudienceOptInRecommendation": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_CustomAudienceOptInRecommendation",
          "description": "Output only. The custom audience opt in recommendation."
        },
        "textAdRecommendation": {
          "description": "Output only. Add expanded text ad recommendation.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Resources_Recommendation_TextAdRecommendation"
        }
      }
    }
  }
}