View raw content Back to Reference page
// Protocol version: v.34 // Copyright 2022 Google Inc. All Rights Reserved. message SnippetStatusItem { // The account_id of the snippet. optional int64 account_id = 19; // Possible approval statuses. enum Status { UNKNOWN = 0; NOT_CHECKED = 1; APPROVED = 2; DISAPPROVED = 3; CONDITIONALLY_APPROVED = 4; } enum DisapprovalReason { // The length of the image animation is longer than allowed. LENGTH_OF_IMAGE_ANIMATION = 0; // The click through url doesn't work properly. BROKEN_URL = 1; // Something is wrong with the creative itself. MEDIA_NOT_FUNCTIONAL = 2; // The ad makes a fourth party call to an unapproved vendor. INVALID_FOURTH_PARTY_CALL = 3; // The ad targets consumers using remarketing lists and/or collects // data for subsequent use in retargeting, but does not correctly declare // that use. INCORRECT_REMARKETING_DECLARATION = 4; // Clicking on the ad leads to an error page. LANDING_PAGE_ERROR = 5; // The ad size when rendered does not match the declaration. AD_SIZE_DOES_NOT_MATCH_AD_SLOT = 6; // Ads with a white background require a border, which was missing. NO_BORDER = 7; // The creative attempts to set cookies from a fourth party that is not // certified. FOURTH_PARTY_BROWSER_COOKIES = 8; // The creative sets an LSO object. LSO_OBJECTS = 9; // The ad serves a blank. BLANK_CREATIVE = 10; // The ad uses rotation, but not all destination urls were declared. DESTINATION_URLS_UNDECLARED = 11; // There is a problem with the way the click macro is used. PROBLEM_WITH_CLICK_MACRO = 12; // The ad technology declaration is not accurate. INCORRECT_AD_TECHNOLOGY_DECLARATION = 13; // The actual destination url does not match the declared destination url. INCORRECT_DESTINATION_URL_DECLARATION = 14; // The declared expanding direction does not match the actual direction. EXPANDABLE_INCORRECT_DIRECTION = 15; // The ad does not expand in a supported direction. EXPANDABLE_DIRECTION_NOT_SUPPORTED = 16; // The ad uses an expandable vendor that is not supported. EXPANDABLE_INVALID_VENDOR = 17; // There was an issue with the expandable ad. EXPANDABLE_FUNCTIONALITY = 18; // The ad uses a video vendor that is not supported. VIDEO_INVALID_VENDOR = 19; // The length of the video ad is not supported. VIDEO_UNSUPPORTED_LENGTH = 20; // The format of the video ad is not supported. VIDEO_UNSUPPORTED_FORMAT = 21; // There was an issue with the video ad. VIDEO_FUNCTIONALITY = 22; // The landing page does not conform to Ad Exchange policy. LANDING_PAGE_DISABLED = 23; // The ad or the landing page may contain malware. MALWARE_SUSPECTED = 24; // The ad contains adult images or video content. ADULT_IMAGE_OR_VIDEO = 25; // The ad contains text that is unclear or inaccurate. INACCURATE_AD_TEXT = 26; // The ad promotes counterfeit designer goods. COUNTERFEIT_DESIGNER_GOODS = 27; // The ad causes a popup window to appear. POP_UP = 28; // The creative does not follow policies set for the RTB protocol. INVALID_RTB_PROTOCOL_USAGE = 29; // The ad contains a URL that uses a numeric IP address for the domain. RAW_IP_ADDRESS_IN_SNIPPET = 30; // The ad or landing page contains unacceptable content because it initiated // a software or executable download. UNACCEPTABLE_CONTENT_SOFTWARE = 31; // The ad set an unauthorized cookie on a Google domain. UNAUTHORIZED_COOKIE_ON_GOOGLE_DOMAIN = 32; // Flash content found when no flash was declared. UNDECLARED_FLASH_OBJECTS = 33; // SSL support declared but not working correctly. INVALID_SSL_DECLARATION = 34; // Rich Media - Direct Download in Ad (ex. PDF download). DIRECT_DOWNLOAD_IN_AD = 35; // Maximum download size exceeded. MAXIMUM_DOWNLOAD_SIZE_EXCEEDED = 36; // Bad Destination Url: Site Not Crawlable. DESTINATION_URL_SITE_NOT_CRAWLABLE = 37; // Bad Url: Legal disapproval. BAD_URL_LEGAL_DISAPPROVAL = 38; // Pharmaceuticals, Gambling, Alcohol not allowed and at least one was // detected. PHARMA_GAMBLING_ALCOHOL_NOT_ALLOWED = 39; // Dynamic DNS at Destination url. DYNAMIC_DNS_AT_DESTINATION_URL = 40; // Poor Image / Video Quality. POOR_IMAGE_OR_VIDEO_QUALITY = 41; // E.g. Image Trick to Click. UNACCEPTABLE_IMAGE_CONTENT = 42; // Incorrect Image Layout. INCORRECT_IMAGE_LAYOUT = 43; // Irrelevant Image / Video. IRRELEVANT_IMAGE_OR_VIDEO = 44; // Broken back button. DESTINATION_SITE_DOES_NOT_ALLOW_GOING_BACK = 45; // Misleading/Inaccurate claims in ads. MISLEADING_CLAIMS_IN_AD = 46; // Restricted Products. RESTRICTED_PRODUCTS = 47; // Unacceptable content, e.g. malware. UNACCEPTABLE_CONTENT = 48; // The ad automatically redirects to the destination site without a click, // or reports a click when none were made. AUTOMATED_AD_CLICKING = 49; // The ad uses url protocols that do not exist or are not allowed on AdX. INVALID_URL_PROTOCOL = 50; // Restricted content (e.g. alcohol) was found in the ad but not declared. UNDECLARED_RESTRICTED_CONTENT = 51; // Violation of the remarketing list policy. INVALID_REMARKETING_LIST_USAGE = 52; // The destination site's robot.txt file prevents it from being crawled. DESTINATION_SITE_NOT_CRAWLABLE_ROBOTS_TXT = 53; // Click to download must link to an app. CLICK_TO_DOWNLOAD_NOT_AN_APP = 54; // A review extension must be an accurate review. INACCURATE_REVIEW_EXTENSION = 55; // Sexually explicit content. SEXUALLY_EXPLICIT_CONTENT = 56; // The ad tries to gain an unfair traffic advantage. GAINING_AN_UNFAIR_ADVANTAGE = 57; // The ad tries to circumvent Google's advertising systems. GAMING_THE_GOOGLE_NETWORK = 58; // The ad promotes dangerous knives. DANGEROUS_PRODUCTS_KNIVES = 59; // The ad promotes explosives. DANGEROUS_PRODUCTS_EXPLOSIVES = 60; // The ad promotes guns & parts. DANGEROUS_PRODUCTS_GUNS = 61; // The ad promotes recreational drugs/services & related equipment. DANGEROUS_PRODUCTS_DRUGS = 62; // The ad promotes tobacco products/services & related equipment. DANGEROUS_PRODUCTS_TOBACCO = 63; // The ad promotes weapons. DANGEROUS_PRODUCTS_WEAPONS = 64; // The ad is unclear or irrelevant to the destination site. UNCLEAR_OR_IRRELEVANT_AD = 65; // The ad does not meet professional standards. PROFESSIONAL_STANDARDS = 66; // The promotion is unnecessarily difficult to navigate. DYSFUNCTIONAL_PROMOTION = 67; // Violation of Google's policy for interest-based ads. INVALID_INTEREST_BASED_AD = 68; // Misuse of personal information. MISUSE_OF_PERSONAL_INFORMATION = 69; // Omission of relevant information. OMISSION_OF_RELEVANT_INFORMATION = 70; // Unavailable promotions. UNAVAILABLE_PROMOTIONS = 71; // Misleading or unrealistic promotions. MISLEADING_PROMOTIONS = 72; // Offensive or inappropriate content. INAPPROPRIATE_CONTENT = 73; // Capitalizing on sensitive events. SENSITIVE_EVENTS = 74; // Shocking content. SHOCKING_CONTENT = 75; // Products & Services that enable dishonest behavior. ENABLING_DISHONEST_BEHAVIOR = 76; // The ad does not meet technical requirements. TECHNICAL_REQUIREMENTS = 77; // Restricted political content. RESTRICTED_POLITICAL_CONTENT = 78; // Unsupported content. UNSUPPORTED_CONTENT = 79; // Invalid bidding method. INVALID_BIDDING_METHOD = 80; // Video exceeds length limit. VIDEO_TOO_LONG = 81; // Creative violates Japanese pharmacy law. VIOLATES_JAPANESE_PHARMACY_LAW = 82; // Unaccredited pet pharmacy. UNACCREDITED_PET_PHARMACY = 83; // Unacceptable content: Abortion. ABORTION = 84; // Unacceptable content: Birth control. CONTRACEPTIVES = 85; // This creative violates Chinese serving requirements. NEED_CERTIFICATES_TO_ADVERTISE_IN_CHINA = 86; // Creative promotes a Korean pharmacy without proper certification. KCDSP_REGISTRATION = 87; // Creative contains non-family safe or adult content. NOT_FAMILY_SAFE = 88; // Unacceptable content: Clinical trial recruitment. CLINICAL_TRIAL_RECRUITMENT = 89; // Maximum number of HTTP calls exceeded. MAXIMUM_NUMBER_OF_HTTP_CALLS_EXCEEDED = 90; // Maximum number of cookies exceeded. MAXIMUM_NUMBER_OF_COOKIES_EXCEEDED = 91; // Financial service ad does not adhere to specifications. PERSONAL_LOANS = 92; // Flash content was found in an unsupported context. UNSUPPORTED_FLASH_CONTENT = 93; // Misuse by an Open Measurement SDK script. MISUSE_BY_OMID_SCRIPT = 94; // Use of an Open Measurement SDK vendor not on approved vendor list. NON_WHITELISTED_OMID_VENDOR = 95; // Unacceptable landing page. DESTINATION_EXPERIENCE = 96; // Unsupported language. UNSUPPORTED_LANGUAGE = 97; // Non-SSL compliant. NON_SSL_COMPLIANT = 98; // Temporary pausing of creative. TEMPORARY_PAUSE = 99; // Promotes services related to bail bonds. BAIL_BONDS = 100; // Promotes speculative and/or experimental medical treatments. EXPERIMENTAL_MEDICAL_TREATMENT = 101; } // The type of correction applied to the ad. This is determined by scanning // the creative and detecting its serving capabilities. enum CorrectionType { // The ad's declared vendors did not match the vendors that were detected. VENDOR_IDS = 1; // The ad had the SSL attribute declared but was not SSL-compliant. SSL_ATTRIBUTE = 2; // The ad was declared as Flash-free but contained Flash, so the Flash-free // attribute was removed. FLASH_ATTRIBUTE = 3; // The ad was not declared as Flash-free but it did not reference any flash // content, so the Flash-free attribute was added. FLASHLESS_ATTRIBUTE = 4; // The ad did not declare a required creative attribute. REQUIRED_ATTRIBUTE = 5; // The ad did not declare a required technology vendor. REQUIRED_VENDOR = 6; // The ad did not declare the SSL attribute but was SSL-compliant, so the // SSL attribute was added. SSL_ATTRIBUTE_ADDED = 7; // Properties consistent with In-banner video were found, so an // In-Banner Video attribute was added. IN_BANNER_VIDEO_ATTRIBUTE_ADDED = 8; // The ad makes calls to the MRAID API so the MRAID attribute was added. MRAID_ATTRIBUTE_ADDED = 9; // The ad unecessarily declared the Flash attribute, so the Flash attribute // was removed. FLASH_ATTRIBUTE_REMOVED = 10; // The ad contains video content. VIDEO_IN_SNIPPET_ATTRIBUTE_ADDED = 11; } // This field is deprecated. If you do not care about the nuances of // contextual restrictions, the direct replacement is the open_auction_status. // In the binary version of the SSR, this field will continue to be populated // until the end of Q3 2016. optional Status DEPRECATED_status = 1 [default = NOT_CHECKED, deprecated = true]; // The current open auction status. Note that if disapproved, an entry for // auction_type=OPEN_AUCTION (or ALL) in serving_restriction will also exist. // Note that this may be nuanced with other contextual restrictions, in which // case it may be preferable to read from serving_restriction directly. optional Status open_auction_status = 16; // The current deals status. Note that if disapproved, an entry for // auction_type=DIRECT_DEALS (or ALL) in serving_restriction will also exist. // Note that this may be nuanced with other contextual restrictions, in which // case it may be preferable to read from serving_restriction directly. optional Status deals_status = 17; // Whether the ad comes from the Adx UI or an RTB ad. enum Source { RTB = 0; UI = 1; } optional Source source = 8; // Creative ID assigned by customer. This field is set only for RTB ads. optional string buyer_creative_id = 2; // Creative status identity type that a snippet status report item applies to. // // Ad Exchange real-time bidding is migrating to the sizeless creative // verification. Originally, Ad Exchange assigned creative verification status // to a unique combination of a buyer creative ID and creative dimensions. // Post-migration, a single verification status will be assigned at the buyer // creative ID level. // // This enum value allows to distinguish whether a given creative status // applies to a unique combination of a buyer creative ID and dimensions, or // to a buyer creative ID as a whole. enum CreativeStatusIdentityType { // Default value that should not be used. Default value should be // interpreted as equivalent to CREATIVE_ID_AND_SIZE. CREATIVE_IDENTITY_TYPE_UNSPECIFIED = 0; // Sizeful verification status of the creative that applies to a specific // combination of a buyer creative ID and dimensions. Dimensions are // represented by width and height fields of the SnippetStatusItem message. CREATIVE_ID_AND_SIZE = 1; // Sizeless verification status of a creative identified solely by its buyer // creative ID. Snippet status report item applies to the given buyer // creative ID as a whole, regardless of dimensions. CREATIVE_ID_ONLY = 2; } // Creative status identity type that the snippet status report item applies // to. optional CreativeStatusIdentityType creative_status_identity_type = 22; // Creative ID assigned by Google. This field is set only for UI ads. optional string creative_id = 9; // The dimensions of the creative. optional int32 width = 3; optional int64 height = 4; // Advertisers we've classified for this creative. repeated int64 advertiser_id = 5; // The declared click through urls for this creative. repeated string click_through_url = 11; // The detected domains for this creative. repeated string detected_domain = 21; // The detected sensitive categories for this creative. See // ad-sensitive-categories.txt file in the technical documentation for a // list of ids. You should use these ids along with the // excluded_sensitive_category field in the bid request to filter your bids. repeated int32 detected_sensitive_category = 6; // The detected product categories for this creative. See // ad-product-categories.txt file in the technical documentation for a // list of ids. You should use these ids along with the // excluded_product_category field in the bid request to filter your bids. repeated int32 detected_product_category = 7; // The detected languages for this creative. The order is arbitrary. The codes // are 2 or 5 characters and are documented at // https://developers.google.com/adwords/api/docs/appendix/languagecodes. repeated string detected_language = 20; // Whether the snippet has declared attribute 47 // RichMediaCapabilityType: RichMediaCapabilitySSL. // This does not indicate SSL eligibility, just the buyer declaration. Serving // eligibility is determined based on scans of the creative. // See CorrectionType and the snippet_correction field for more. optional bool is_ssl_capable = 15; message Disapproval { // The categorized reason for disapproval. optional DisapprovalReason reason = 1; // Additional details about the reason for disapproval. repeated string detail = 2; } // This field is deprecated. Look in the serving_restrictions instead. // In the binary version of the SSR, this field will continue to be populated // until the end of Q3 2016. repeated Disapproval DEPRECATED_disapproval_reason2 = 12 [deprecated = true]; message Correction { // The type of correction that was applied to the snippet. optional CorrectionType type = 1; // Additional details about what was corrected. repeated string detail = 2; // The context for the correction. repeated ServingRestriction.ServingContext context = 3; } // The corrections that were applied to the snippet, if any. repeated Correction snippet_correction = 13; // Top filtering reasons for this snippet during a period of a single day // (from midnight to midnight Pacific). message SnippetFiltering { // The day during which the data was collected. Typically the date // representing 'yesterday'. The date is in the ISO 8601 format: // 'YYYY-MM-DD'. optional string date = 1; // A specific filtering reason. Please refer to "creative-status-codes.txt" // in the Downloads section for the status codes. The count is aggregated // across all publishers on the exchange. message FilteringItem { optional int32 filtering_status = 1; optional int64 filtering_count = 2; } repeated FilteringItem item = 2; } // Reasons for which the snippet was filtered before reaching the auction or // lost in the auction. optional SnippetFiltering snippet_filtering = 14; // A representation of the status of an ad in a specific context. A context // here relates to where something ultimately serves (for example, a user // or publisher geo, a platform, an HTTPS vs HTTP request, or // the type of auction). message ServingRestriction { enum ServingRestrictionReason { UNKNOWN_REASON = 0; // The ad was disapproved in this context. DISAPPROVAL = 1; // The ad is pending review in this context. PENDING_REVIEW = 2; } optional ServingRestrictionReason reason = 1; message ServingContext { enum ContextType { UNKNOWN_TYPE = 0; // Matches all contexts. ALL = 1; // Matches impressions coming from users *or* publishers in a specific // location. When set, geo_criteria_id will also be populated. LOCATION = 3; // Matches impressions coming from a particular platform. When set, // platform will also be populated. PLATFORM = 4; // Matches impressions for a particular auction type. When set, // auction_type will also be populated. AUCTION_TYPE = 5; } optional ContextType context_type = 1; // Only set when context_type=LOCATION. Represents the geo criterias this // restriction applies to. repeated int32 geo_criteria_id = 2; // Platforms eligible for contextual serving. enum Platform { // Mostly Desktop browsers, but also the default fallback for any // platform not explicitly listed below. DESKTOP = 0; // Mobile web browser on an Android device. ANDROID_WEB = 1; // Mobile web browser on an iOS device. IOS_WEB = 2; // In-App context on an Android device. ANDROID_IN_APP = 3; // In-App context on an iOS device. IOS_IN_APP = 4; } // Only set when context_type=PLATFORM. Represents the platforms this // restriction applies to. repeated Platform platform = 3; enum AuctionType { // OPEN_AUCTION includes everything not explicitly split via // DIRECT_DEALS. OPEN_AUCTION = 0; DIRECT_DEALS = 1; } // Only set when context_type=AUCTION_TYPE. Represents the auction types // this restriction applies to. repeated AuctionType auction_type = 4; } repeated ServingContext context = 2; // Any disapprovals bound to this restriction. Only present if // reason=DISAPPROVED. Note that not all disapproval reasons may be // categorized, so it is possible for the creative to have a status of // DISAPPROVED with an empty list of disapproval_reasons. In this case, // please reach out to your TAM to help debug the issue. repeated Disapproval disapproval_reason = 3; } repeated ServingRestriction serving_restriction = 18; } // The main report protocol for snippet status reports. The report body is a // serialized instance of this type. message SnippetStatusReport { // One message per snippet. The snippet depends on buyer_creative_id as well // as the creative dimensions. Each creative remains in the snippet status // report for 3 days after the customer stops sending it to Google. repeated SnippetStatusItem snippet_status = 1; }