ADEXCHANGEBUYER2

adexchangebuyer2.accounts.clients.create

enum_ClientEntityType := [ "ENTITY_TYPE_UNSPECIFIED", "ADVERTISER", "BRAND", "AGENCY", "ENTITY_TYPE_UNCLASSIFIED" ]
enum_ClientRole := [ "CLIENT_ROLE_UNSPECIFIED", "CLIENT_DEAL_VIEWER", "CLIENT_DEAL_NEGOTIATOR", "CLIENT_DEAL_APPROVER" ]
enum_ClientStatus := [ "CLIENT_STATUS_UNSPECIFIED", "DISABLED", "ACTIVE" ]

valid {
    input.Body.clientAccountId == STRING
    input.Body.clientName == STRING
    input.Body.entityId == STRING
    input.Body.entityName == STRING
    input.Body.entityType == enum_ClientEntityType[_]
    input.Body.partnerClientId == STRING
    input.Body.role == enum_ClientRole[_]
    input.Body.status == enum_ClientStatus[_]
    input.Body.visibleToSeller == BOOLEAN
    input.ReqMap.accountId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.clients.get

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.clientAccountId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.clients.invitations.create

valid {
    input.Body.clientAccountId == STRING
    input.Body.email == STRING
    input.Body.invitationId == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.clientAccountId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.clients.invitations.get

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.clientAccountId == STRING
    input.ReqMap.invitationId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.clients.invitations.list

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.clientAccountId == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.clients.list

valid {
    input.ReqMap.accountId == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.partnerClientId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.clients.update

enum_ClientEntityType := [ "ENTITY_TYPE_UNSPECIFIED", "ADVERTISER", "BRAND", "AGENCY", "ENTITY_TYPE_UNCLASSIFIED" ]
enum_ClientRole := [ "CLIENT_ROLE_UNSPECIFIED", "CLIENT_DEAL_VIEWER", "CLIENT_DEAL_NEGOTIATOR", "CLIENT_DEAL_APPROVER" ]
enum_ClientStatus := [ "CLIENT_STATUS_UNSPECIFIED", "DISABLED", "ACTIVE" ]

valid {
    input.Body.clientAccountId == STRING
    input.Body.clientName == STRING
    input.Body.entityId == STRING
    input.Body.entityName == STRING
    input.Body.entityType == enum_ClientEntityType[_]
    input.Body.partnerClientId == STRING
    input.Body.role == enum_ClientRole[_]
    input.Body.status == enum_ClientStatus[_]
    input.Body.visibleToSeller == BOOLEAN
    input.ReqMap.accountId == STRING
    input.ReqMap.clientAccountId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.clients.users.get

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.clientAccountId == STRING
    input.ReqMap.userId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.clients.users.list

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.clientAccountId == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.clients.users.update

enum_ClientUserStatus := [ "USER_STATUS_UNSPECIFIED", "PENDING", "ACTIVE", "DISABLED" ]

valid {
    input.Body.clientAccountId == STRING
    input.Body.email == STRING
    input.Body.status == enum_ClientUserStatus[_]
    input.Body.userId == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.clientAccountId == STRING
    input.ReqMap.userId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.creatives.create

enum_AppContextAppTypes := [ "NATIVE", "WEB" ]
enum_AuctionContextAuctionTypes := [ "OPEN_AUCTION", "DIRECT_DEALS" ]
enum_CorrectionType := [ "CORRECTION_TYPE_UNSPECIFIED", "VENDOR_IDS_ADDED", "SSL_ATTRIBUTE_REMOVED", "FLASH_FREE_ATTRIBUTE_REMOVED", "FLASH_FREE_ATTRIBUTE_ADDED", "REQUIRED_ATTRIBUTE_ADDED", "REQUIRED_VENDOR_ADDED", "SSL_ATTRIBUTE_ADDED", "IN_BANNER_VIDEO_ATTRIBUTE_ADDED", "MRAID_ATTRIBUTE_ADDED", "FLASH_ATTRIBUTE_REMOVED", "VIDEO_IN_SNIPPET_ATTRIBUTE_ADDED" ]
enum_CreativeAttributes := [ "ATTRIBUTE_UNSPECIFIED", "IMAGE_RICH_MEDIA", "ADOBE_FLASH_FLV", "IS_TAGGED", "IS_COOKIE_TARGETED", "IS_USER_INTEREST_TARGETED", "EXPANDING_DIRECTION_NONE", "EXPANDING_DIRECTION_UP", "EXPANDING_DIRECTION_DOWN", "EXPANDING_DIRECTION_LEFT", "EXPANDING_DIRECTION_RIGHT", "EXPANDING_DIRECTION_UP_LEFT", "EXPANDING_DIRECTION_UP_RIGHT", "EXPANDING_DIRECTION_DOWN_LEFT", "EXPANDING_DIRECTION_DOWN_RIGHT", "CREATIVE_TYPE_HTML", "CREATIVE_TYPE_VAST_VIDEO", "EXPANDING_DIRECTION_UP_OR_DOWN", "EXPANDING_DIRECTION_LEFT_OR_RIGHT", "EXPANDING_DIRECTION_ANY_DIAGONAL", "EXPANDING_ACTION_ROLLOVER_TO_EXPAND", "INSTREAM_VAST_VIDEO_TYPE_VPAID_FLASH", "RICH_MEDIA_CAPABILITY_TYPE_MRAID", "RICH_MEDIA_CAPABILITY_TYPE_FLASH", "RICH_MEDIA_CAPABILITY_TYPE_HTML5", "SKIPPABLE_INSTREAM_VIDEO", "RICH_MEDIA_CAPABILITY_TYPE_SSL", "RICH_MEDIA_CAPABILITY_TYPE_NON_SSL", "RICH_MEDIA_CAPABILITY_TYPE_INTERSTITIAL", "NON_SKIPPABLE_INSTREAM_VIDEO", "NATIVE_ELIGIBILITY_ELIGIBLE", "NON_VPAID", "NATIVE_ELIGIBILITY_NOT_ELIGIBLE", "ANY_INTERSTITIAL", "NON_INTERSTITIAL", "IN_BANNER_VIDEO", "RENDERING_SIZELESS_ADX", "OMSDK_1_0", "RENDERING_PLAYABLE" ]
enum_CreativeDealsStatus := [ "STATUS_UNSPECIFIED", "NOT_CHECKED", "CONDITIONALLY_APPROVED", "APPROVED", "DISAPPROVED", "PENDING_REVIEW", "STATUS_TYPE_UNSPECIFIED" ]
enum_CreativeOpenAuctionStatus := [ "STATUS_UNSPECIFIED", "NOT_CHECKED", "CONDITIONALLY_APPROVED", "APPROVED", "DISAPPROVED", "PENDING_REVIEW", "STATUS_TYPE_UNSPECIFIED" ]
enum_CreativeRestrictedCategories := [ "NO_RESTRICTED_CATEGORIES", "ALCOHOL" ]
enum_DisapprovalReason := [ "LENGTH_OF_IMAGE_ANIMATION", "BROKEN_URL", "MEDIA_NOT_FUNCTIONAL", "INVALID_FOURTH_PARTY_CALL", "INCORRECT_REMARKETING_DECLARATION", "LANDING_PAGE_ERROR", "AD_SIZE_DOES_NOT_MATCH_AD_SLOT", "NO_BORDER", "FOURTH_PARTY_BROWSER_COOKIES", "LSO_OBJECTS", "BLANK_CREATIVE", "DESTINATION_URLS_UNDECLARED", "PROBLEM_WITH_CLICK_MACRO", "INCORRECT_AD_TECHNOLOGY_DECLARATION", "INCORRECT_DESTINATION_URL_DECLARATION", "EXPANDABLE_INCORRECT_DIRECTION", "EXPANDABLE_DIRECTION_NOT_SUPPORTED", "EXPANDABLE_INVALID_VENDOR", "EXPANDABLE_FUNCTIONALITY", "VIDEO_INVALID_VENDOR", "VIDEO_UNSUPPORTED_LENGTH", "VIDEO_UNSUPPORTED_FORMAT", "VIDEO_FUNCTIONALITY", "LANDING_PAGE_DISABLED", "MALWARE_SUSPECTED", "ADULT_IMAGE_OR_VIDEO", "INACCURATE_AD_TEXT", "COUNTERFEIT_DESIGNER_GOODS", "POP_UP", "INVALID_RTB_PROTOCOL_USAGE", "RAW_IP_ADDRESS_IN_SNIPPET", "UNACCEPTABLE_CONTENT_SOFTWARE", "UNAUTHORIZED_COOKIE_ON_GOOGLE_DOMAIN", "UNDECLARED_FLASH_OBJECTS", "INVALID_SSL_DECLARATION", "DIRECT_DOWNLOAD_IN_AD", "MAXIMUM_DOWNLOAD_SIZE_EXCEEDED", "DESTINATION_URL_SITE_NOT_CRAWLABLE", "BAD_URL_LEGAL_DISAPPROVAL", "PHARMA_GAMBLING_ALCOHOL_NOT_ALLOWED", "DYNAMIC_DNS_AT_DESTINATION_URL", "POOR_IMAGE_OR_VIDEO_QUALITY", "UNACCEPTABLE_IMAGE_CONTENT", "INCORRECT_IMAGE_LAYOUT", "IRRELEVANT_IMAGE_OR_VIDEO", "DESTINATION_SITE_DOES_NOT_ALLOW_GOING_BACK", "MISLEADING_CLAIMS_IN_AD", "RESTRICTED_PRODUCTS", "UNACCEPTABLE_CONTENT", "AUTOMATED_AD_CLICKING", "INVALID_URL_PROTOCOL", "UNDECLARED_RESTRICTED_CONTENT", "INVALID_REMARKETING_LIST_USAGE", "DESTINATION_SITE_NOT_CRAWLABLE_ROBOTS_TXT", "CLICK_TO_DOWNLOAD_NOT_AN_APP", "INACCURATE_REVIEW_EXTENSION", "SEXUALLY_EXPLICIT_CONTENT", "GAINING_AN_UNFAIR_ADVANTAGE", "GAMING_THE_GOOGLE_NETWORK", "DANGEROUS_PRODUCTS_KNIVES", "DANGEROUS_PRODUCTS_EXPLOSIVES", "DANGEROUS_PRODUCTS_GUNS", "DANGEROUS_PRODUCTS_DRUGS", "DANGEROUS_PRODUCTS_TOBACCO", "DANGEROUS_PRODUCTS_WEAPONS", "UNCLEAR_OR_IRRELEVANT_AD", "PROFESSIONAL_STANDARDS", "DYSFUNCTIONAL_PROMOTION", "INVALID_INTEREST_BASED_AD", "MISUSE_OF_PERSONAL_INFORMATION", "OMISSION_OF_RELEVANT_INFORMATION", "UNAVAILABLE_PROMOTIONS", "MISLEADING_PROMOTIONS", "INAPPROPRIATE_CONTENT", "SENSITIVE_EVENTS", "SHOCKING_CONTENT", "ENABLING_DISHONEST_BEHAVIOR", "TECHNICAL_REQUIREMENTS", "RESTRICTED_POLITICAL_CONTENT", "UNSUPPORTED_CONTENT", "INVALID_BIDDING_METHOD", "VIDEO_TOO_LONG", "VIOLATES_JAPANESE_PHARMACY_LAW", "UNACCREDITED_PET_PHARMACY", "ABORTION", "CONTRACEPTIVES", "NEED_CERTIFICATES_TO_ADVERTISE_IN_CHINA", "KCDSP_REGISTRATION", "NOT_FAMILY_SAFE", "CLINICAL_TRIAL_RECRUITMENT", "MAXIMUM_NUMBER_OF_HTTP_CALLS_EXCEEDED", "MAXIMUM_NUMBER_OF_COOKIES_EXCEEDED", "PERSONAL_LOANS", "UNSUPPORTED_FLASH_CONTENT", "MISUSE_BY_OMID_SCRIPT", "NON_WHITELISTED_OMID_VENDOR", "DESTINATION_EXPERIENCE", "UNSUPPORTED_LANGUAGE", "NON_SSL_COMPLIANT", "TEMPORARY_PAUSE", "BAIL_BONDS", "EXPERIMENTAL_MEDICAL_TREATMENT" ]
enum_DuplicateIdModeParameter := [ "NO_DUPLICATES", "FORCE_ENABLE_DUPLICATE_IDS" ]
enum_PlatformContextPlatforms := [ "DESKTOP", "ANDROID", "IOS" ]
enum_SecurityContextSecurities := [ "INSECURE", "SSL" ]
enum_ServingContextAll := [ "SIMPLE_CONTEXT" ]
enum_ServingRestrictionStatus := [ "STATUS_UNSPECIFIED", "DISAPPROVAL", "PENDING_REVIEW" ]

valid {
    input.Body.accountId == STRING
    input.Body.adChoicesDestinationUrl == STRING
    input.Body.adTechnologyProviders.detectedProviderIds[_] == STRING
    input.Body.adTechnologyProviders.hasUnidentifiedProvider == BOOLEAN
    input.Body.advertiserName == STRING
    input.Body.agencyId == STRING
    input.Body.apiUpdateTime == STRING
    input.Body.attributes[_] == enum_CreativeAttributes[_]
    input.Body.clickThroughUrls[_] == STRING
    input.Body.corrections[_].contexts[_].all == enum_ServingContextAll[_]
    input.Body.corrections[_].contexts[_].appType.appTypes[_] == enum_AppContextAppTypes[_]
    input.Body.corrections[_].contexts[_].auctionType.auctionTypes[_] == enum_AuctionContextAuctionTypes[_]
    input.Body.corrections[_].contexts[_].location.geoCriteriaIds[_] == INTEGER
    input.Body.corrections[_].contexts[_].platform.platforms[_] == enum_PlatformContextPlatforms[_]
    input.Body.corrections[_].contexts[_].securityType.securities[_] == enum_SecurityContextSecurities[_]
    input.Body.corrections[_].details[_] == STRING
    input.Body.corrections[_].type == enum_CorrectionType[_]
    input.Body.creativeId == STRING
    input.Body.dealsStatus == enum_CreativeDealsStatus[_]
    input.Body.declaredClickThroughUrls[_] == STRING
    input.Body.detectedAdvertiserIds[_] == STRING
    input.Body.detectedDomains[_] == STRING
    input.Body.detectedLanguages[_] == STRING
    input.Body.detectedProductCategories[_] == INTEGER
    input.Body.detectedSensitiveCategories[_] == INTEGER
    input.Body.html.height == INTEGER
    input.Body.html.snippet == STRING
    input.Body.html.width == INTEGER
    input.Body.impressionTrackingUrls[_] == STRING
    input.Body.native.advertiserName == STRING
    input.Body.native.appIcon.height == INTEGER
    input.Body.native.appIcon.url == STRING
    input.Body.native.appIcon.width == INTEGER
    input.Body.native.body == STRING
    input.Body.native.callToAction == STRING
    input.Body.native.clickLinkUrl == STRING
    input.Body.native.clickTrackingUrl == STRING
    input.Body.native.headline == STRING
    input.Body.native.image.height == INTEGER
    input.Body.native.image.url == STRING
    input.Body.native.image.width == INTEGER
    input.Body.native.logo.height == INTEGER
    input.Body.native.logo.url == STRING
    input.Body.native.logo.width == INTEGER
    input.Body.native.priceDisplayText == STRING
    input.Body.native.starRating == NUMBER
    input.Body.native.storeUrl == STRING
    input.Body.native.videoUrl == STRING
    input.Body.openAuctionStatus == enum_CreativeOpenAuctionStatus[_]
    input.Body.restrictedCategories[_] == enum_CreativeRestrictedCategories[_]
    input.Body.servingRestrictions[_].contexts[_].all == enum_ServingContextAll[_]
    input.Body.servingRestrictions[_].contexts[_].appType.appTypes[_] == enum_AppContextAppTypes[_]
    input.Body.servingRestrictions[_].contexts[_].auctionType.auctionTypes[_] == enum_AuctionContextAuctionTypes[_]
    input.Body.servingRestrictions[_].contexts[_].location.geoCriteriaIds[_] == INTEGER
    input.Body.servingRestrictions[_].contexts[_].platform.platforms[_] == enum_PlatformContextPlatforms[_]
    input.Body.servingRestrictions[_].contexts[_].securityType.securities[_] == enum_SecurityContextSecurities[_]
    input.Body.servingRestrictions[_].disapproval.details[_] == STRING
    input.Body.servingRestrictions[_].disapproval.reason == enum_DisapprovalReason[_]
    input.Body.servingRestrictions[_].disapprovalReasons[_].details[_] == STRING
    input.Body.servingRestrictions[_].disapprovalReasons[_].reason == enum_DisapprovalReason[_]
    input.Body.servingRestrictions[_].status == enum_ServingRestrictionStatus[_]
    input.Body.vendorIds[_] == INTEGER
    input.Body.version == INTEGER
    input.Body.video.videoUrl == STRING
    input.Body.video.videoVastXml == STRING
    input.ReqMap.accountId == STRING
    input.Qs.duplicateIdMode == enum_DuplicateIdModeParameter[_]
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.creatives.dealAssociations.add

valid {
    input.Body.association.accountId == STRING
    input.Body.association.creativeId == STRING
    input.Body.association.dealsId == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.creativeId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.creatives.dealAssociations.list

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.creativeId == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.query == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.creatives.dealAssociations.remove

valid {
    input.Body.association.accountId == STRING
    input.Body.association.creativeId == STRING
    input.Body.association.dealsId == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.creativeId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.creatives.get

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.creativeId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.creatives.list

valid {
    input.ReqMap.accountId == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.query == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.creatives.stopWatching

valid {
    input.Body.STRING == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.creativeId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.creatives.update

enum_AppContextAppTypes := [ "NATIVE", "WEB" ]
enum_AuctionContextAuctionTypes := [ "OPEN_AUCTION", "DIRECT_DEALS" ]
enum_CorrectionType := [ "CORRECTION_TYPE_UNSPECIFIED", "VENDOR_IDS_ADDED", "SSL_ATTRIBUTE_REMOVED", "FLASH_FREE_ATTRIBUTE_REMOVED", "FLASH_FREE_ATTRIBUTE_ADDED", "REQUIRED_ATTRIBUTE_ADDED", "REQUIRED_VENDOR_ADDED", "SSL_ATTRIBUTE_ADDED", "IN_BANNER_VIDEO_ATTRIBUTE_ADDED", "MRAID_ATTRIBUTE_ADDED", "FLASH_ATTRIBUTE_REMOVED", "VIDEO_IN_SNIPPET_ATTRIBUTE_ADDED" ]
enum_CreativeAttributes := [ "ATTRIBUTE_UNSPECIFIED", "IMAGE_RICH_MEDIA", "ADOBE_FLASH_FLV", "IS_TAGGED", "IS_COOKIE_TARGETED", "IS_USER_INTEREST_TARGETED", "EXPANDING_DIRECTION_NONE", "EXPANDING_DIRECTION_UP", "EXPANDING_DIRECTION_DOWN", "EXPANDING_DIRECTION_LEFT", "EXPANDING_DIRECTION_RIGHT", "EXPANDING_DIRECTION_UP_LEFT", "EXPANDING_DIRECTION_UP_RIGHT", "EXPANDING_DIRECTION_DOWN_LEFT", "EXPANDING_DIRECTION_DOWN_RIGHT", "CREATIVE_TYPE_HTML", "CREATIVE_TYPE_VAST_VIDEO", "EXPANDING_DIRECTION_UP_OR_DOWN", "EXPANDING_DIRECTION_LEFT_OR_RIGHT", "EXPANDING_DIRECTION_ANY_DIAGONAL", "EXPANDING_ACTION_ROLLOVER_TO_EXPAND", "INSTREAM_VAST_VIDEO_TYPE_VPAID_FLASH", "RICH_MEDIA_CAPABILITY_TYPE_MRAID", "RICH_MEDIA_CAPABILITY_TYPE_FLASH", "RICH_MEDIA_CAPABILITY_TYPE_HTML5", "SKIPPABLE_INSTREAM_VIDEO", "RICH_MEDIA_CAPABILITY_TYPE_SSL", "RICH_MEDIA_CAPABILITY_TYPE_NON_SSL", "RICH_MEDIA_CAPABILITY_TYPE_INTERSTITIAL", "NON_SKIPPABLE_INSTREAM_VIDEO", "NATIVE_ELIGIBILITY_ELIGIBLE", "NON_VPAID", "NATIVE_ELIGIBILITY_NOT_ELIGIBLE", "ANY_INTERSTITIAL", "NON_INTERSTITIAL", "IN_BANNER_VIDEO", "RENDERING_SIZELESS_ADX", "OMSDK_1_0", "RENDERING_PLAYABLE" ]
enum_CreativeDealsStatus := [ "STATUS_UNSPECIFIED", "NOT_CHECKED", "CONDITIONALLY_APPROVED", "APPROVED", "DISAPPROVED", "PENDING_REVIEW", "STATUS_TYPE_UNSPECIFIED" ]
enum_CreativeOpenAuctionStatus := [ "STATUS_UNSPECIFIED", "NOT_CHECKED", "CONDITIONALLY_APPROVED", "APPROVED", "DISAPPROVED", "PENDING_REVIEW", "STATUS_TYPE_UNSPECIFIED" ]
enum_CreativeRestrictedCategories := [ "NO_RESTRICTED_CATEGORIES", "ALCOHOL" ]
enum_DisapprovalReason := [ "LENGTH_OF_IMAGE_ANIMATION", "BROKEN_URL", "MEDIA_NOT_FUNCTIONAL", "INVALID_FOURTH_PARTY_CALL", "INCORRECT_REMARKETING_DECLARATION", "LANDING_PAGE_ERROR", "AD_SIZE_DOES_NOT_MATCH_AD_SLOT", "NO_BORDER", "FOURTH_PARTY_BROWSER_COOKIES", "LSO_OBJECTS", "BLANK_CREATIVE", "DESTINATION_URLS_UNDECLARED", "PROBLEM_WITH_CLICK_MACRO", "INCORRECT_AD_TECHNOLOGY_DECLARATION", "INCORRECT_DESTINATION_URL_DECLARATION", "EXPANDABLE_INCORRECT_DIRECTION", "EXPANDABLE_DIRECTION_NOT_SUPPORTED", "EXPANDABLE_INVALID_VENDOR", "EXPANDABLE_FUNCTIONALITY", "VIDEO_INVALID_VENDOR", "VIDEO_UNSUPPORTED_LENGTH", "VIDEO_UNSUPPORTED_FORMAT", "VIDEO_FUNCTIONALITY", "LANDING_PAGE_DISABLED", "MALWARE_SUSPECTED", "ADULT_IMAGE_OR_VIDEO", "INACCURATE_AD_TEXT", "COUNTERFEIT_DESIGNER_GOODS", "POP_UP", "INVALID_RTB_PROTOCOL_USAGE", "RAW_IP_ADDRESS_IN_SNIPPET", "UNACCEPTABLE_CONTENT_SOFTWARE", "UNAUTHORIZED_COOKIE_ON_GOOGLE_DOMAIN", "UNDECLARED_FLASH_OBJECTS", "INVALID_SSL_DECLARATION", "DIRECT_DOWNLOAD_IN_AD", "MAXIMUM_DOWNLOAD_SIZE_EXCEEDED", "DESTINATION_URL_SITE_NOT_CRAWLABLE", "BAD_URL_LEGAL_DISAPPROVAL", "PHARMA_GAMBLING_ALCOHOL_NOT_ALLOWED", "DYNAMIC_DNS_AT_DESTINATION_URL", "POOR_IMAGE_OR_VIDEO_QUALITY", "UNACCEPTABLE_IMAGE_CONTENT", "INCORRECT_IMAGE_LAYOUT", "IRRELEVANT_IMAGE_OR_VIDEO", "DESTINATION_SITE_DOES_NOT_ALLOW_GOING_BACK", "MISLEADING_CLAIMS_IN_AD", "RESTRICTED_PRODUCTS", "UNACCEPTABLE_CONTENT", "AUTOMATED_AD_CLICKING", "INVALID_URL_PROTOCOL", "UNDECLARED_RESTRICTED_CONTENT", "INVALID_REMARKETING_LIST_USAGE", "DESTINATION_SITE_NOT_CRAWLABLE_ROBOTS_TXT", "CLICK_TO_DOWNLOAD_NOT_AN_APP", "INACCURATE_REVIEW_EXTENSION", "SEXUALLY_EXPLICIT_CONTENT", "GAINING_AN_UNFAIR_ADVANTAGE", "GAMING_THE_GOOGLE_NETWORK", "DANGEROUS_PRODUCTS_KNIVES", "DANGEROUS_PRODUCTS_EXPLOSIVES", "DANGEROUS_PRODUCTS_GUNS", "DANGEROUS_PRODUCTS_DRUGS", "DANGEROUS_PRODUCTS_TOBACCO", "DANGEROUS_PRODUCTS_WEAPONS", "UNCLEAR_OR_IRRELEVANT_AD", "PROFESSIONAL_STANDARDS", "DYSFUNCTIONAL_PROMOTION", "INVALID_INTEREST_BASED_AD", "MISUSE_OF_PERSONAL_INFORMATION", "OMISSION_OF_RELEVANT_INFORMATION", "UNAVAILABLE_PROMOTIONS", "MISLEADING_PROMOTIONS", "INAPPROPRIATE_CONTENT", "SENSITIVE_EVENTS", "SHOCKING_CONTENT", "ENABLING_DISHONEST_BEHAVIOR", "TECHNICAL_REQUIREMENTS", "RESTRICTED_POLITICAL_CONTENT", "UNSUPPORTED_CONTENT", "INVALID_BIDDING_METHOD", "VIDEO_TOO_LONG", "VIOLATES_JAPANESE_PHARMACY_LAW", "UNACCREDITED_PET_PHARMACY", "ABORTION", "CONTRACEPTIVES", "NEED_CERTIFICATES_TO_ADVERTISE_IN_CHINA", "KCDSP_REGISTRATION", "NOT_FAMILY_SAFE", "CLINICAL_TRIAL_RECRUITMENT", "MAXIMUM_NUMBER_OF_HTTP_CALLS_EXCEEDED", "MAXIMUM_NUMBER_OF_COOKIES_EXCEEDED", "PERSONAL_LOANS", "UNSUPPORTED_FLASH_CONTENT", "MISUSE_BY_OMID_SCRIPT", "NON_WHITELISTED_OMID_VENDOR", "DESTINATION_EXPERIENCE", "UNSUPPORTED_LANGUAGE", "NON_SSL_COMPLIANT", "TEMPORARY_PAUSE", "BAIL_BONDS", "EXPERIMENTAL_MEDICAL_TREATMENT" ]
enum_PlatformContextPlatforms := [ "DESKTOP", "ANDROID", "IOS" ]
enum_SecurityContextSecurities := [ "INSECURE", "SSL" ]
enum_ServingContextAll := [ "SIMPLE_CONTEXT" ]
enum_ServingRestrictionStatus := [ "STATUS_UNSPECIFIED", "DISAPPROVAL", "PENDING_REVIEW" ]

valid {
    input.Body.accountId == STRING
    input.Body.adChoicesDestinationUrl == STRING
    input.Body.adTechnologyProviders.detectedProviderIds[_] == STRING
    input.Body.adTechnologyProviders.hasUnidentifiedProvider == BOOLEAN
    input.Body.advertiserName == STRING
    input.Body.agencyId == STRING
    input.Body.apiUpdateTime == STRING
    input.Body.attributes[_] == enum_CreativeAttributes[_]
    input.Body.clickThroughUrls[_] == STRING
    input.Body.corrections[_].contexts[_].all == enum_ServingContextAll[_]
    input.Body.corrections[_].contexts[_].appType.appTypes[_] == enum_AppContextAppTypes[_]
    input.Body.corrections[_].contexts[_].auctionType.auctionTypes[_] == enum_AuctionContextAuctionTypes[_]
    input.Body.corrections[_].contexts[_].location.geoCriteriaIds[_] == INTEGER
    input.Body.corrections[_].contexts[_].platform.platforms[_] == enum_PlatformContextPlatforms[_]
    input.Body.corrections[_].contexts[_].securityType.securities[_] == enum_SecurityContextSecurities[_]
    input.Body.corrections[_].details[_] == STRING
    input.Body.corrections[_].type == enum_CorrectionType[_]
    input.Body.creativeId == STRING
    input.Body.dealsStatus == enum_CreativeDealsStatus[_]
    input.Body.declaredClickThroughUrls[_] == STRING
    input.Body.detectedAdvertiserIds[_] == STRING
    input.Body.detectedDomains[_] == STRING
    input.Body.detectedLanguages[_] == STRING
    input.Body.detectedProductCategories[_] == INTEGER
    input.Body.detectedSensitiveCategories[_] == INTEGER
    input.Body.html.height == INTEGER
    input.Body.html.snippet == STRING
    input.Body.html.width == INTEGER
    input.Body.impressionTrackingUrls[_] == STRING
    input.Body.native.advertiserName == STRING
    input.Body.native.appIcon.height == INTEGER
    input.Body.native.appIcon.url == STRING
    input.Body.native.appIcon.width == INTEGER
    input.Body.native.body == STRING
    input.Body.native.callToAction == STRING
    input.Body.native.clickLinkUrl == STRING
    input.Body.native.clickTrackingUrl == STRING
    input.Body.native.headline == STRING
    input.Body.native.image.height == INTEGER
    input.Body.native.image.url == STRING
    input.Body.native.image.width == INTEGER
    input.Body.native.logo.height == INTEGER
    input.Body.native.logo.url == STRING
    input.Body.native.logo.width == INTEGER
    input.Body.native.priceDisplayText == STRING
    input.Body.native.starRating == NUMBER
    input.Body.native.storeUrl == STRING
    input.Body.native.videoUrl == STRING
    input.Body.openAuctionStatus == enum_CreativeOpenAuctionStatus[_]
    input.Body.restrictedCategories[_] == enum_CreativeRestrictedCategories[_]
    input.Body.servingRestrictions[_].contexts[_].all == enum_ServingContextAll[_]
    input.Body.servingRestrictions[_].contexts[_].appType.appTypes[_] == enum_AppContextAppTypes[_]
    input.Body.servingRestrictions[_].contexts[_].auctionType.auctionTypes[_] == enum_AuctionContextAuctionTypes[_]
    input.Body.servingRestrictions[_].contexts[_].location.geoCriteriaIds[_] == INTEGER
    input.Body.servingRestrictions[_].contexts[_].platform.platforms[_] == enum_PlatformContextPlatforms[_]
    input.Body.servingRestrictions[_].contexts[_].securityType.securities[_] == enum_SecurityContextSecurities[_]
    input.Body.servingRestrictions[_].disapproval.details[_] == STRING
    input.Body.servingRestrictions[_].disapproval.reason == enum_DisapprovalReason[_]
    input.Body.servingRestrictions[_].disapprovalReasons[_].details[_] == STRING
    input.Body.servingRestrictions[_].disapprovalReasons[_].reason == enum_DisapprovalReason[_]
    input.Body.servingRestrictions[_].status == enum_ServingRestrictionStatus[_]
    input.Body.vendorIds[_] == INTEGER
    input.Body.version == INTEGER
    input.Body.video.videoUrl == STRING
    input.Body.video.videoVastXml == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.creativeId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.creatives.watch

valid {
    input.Body.topic == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.creativeId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.finalizedProposals.list

enum_FilterSyntaxParameter := [ "FILTER_SYNTAX_UNSPECIFIED", "PQL", "LIST_FILTER" ]

valid {
    input.ReqMap.accountId == STRING
    input.Qs.filter == STRING
    input.Qs.filterSyntax == enum_FilterSyntaxParameter[_]
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.finalizedProposals.pause

valid {
    input.Body.externalDealIds[_] == STRING
    input.Body.reason == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.proposalId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.finalizedProposals.resume

valid {
    input.Body.externalDealIds[_] == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.proposalId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.products.get

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.productId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.products.list

valid {
    input.ReqMap.accountId == STRING
    input.Qs.filter == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.proposals.accept

valid {
    input.Body.proposalRevision == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.proposalId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.proposals.addNote

valid {
    input.Body.note.note == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.proposalId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.proposals.cancelNegotiation

valid {
    input.Body.STRING == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.proposalId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.proposals.completeSetup

valid {
    input.Body.STRING == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.proposalId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.proposals.create

enum_CreativeSizeAllowedFormats := [ "UNKNOWN", "AUDIO" ]
enum_CreativeSizeCreativeSizeType := [ "CREATIVE_SIZE_TYPE_UNSPECIFIED", "REGULAR", "INTERSTITIAL", "VIDEO", "NATIVE" ]
enum_CreativeSizeNativeTemplate := [ "UNKNOWN_NATIVE_TEMPLATE", "NATIVE_CONTENT_AD", "NATIVE_APP_INSTALL_AD", "NATIVE_VIDEO_CONTENT_AD", "NATIVE_VIDEO_APP_INSTALL_AD" ]
enum_CreativeSizeSkippableAdType := [ "SKIPPABLE_AD_TYPE_UNSPECIFIED", "GENERIC", "INSTREAM_SELECT", "NOT_SKIPPABLE" ]
enum_DayPartDayOfWeek := [ "DAY_OF_WEEK_UNSPECIFIED", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ]
enum_DayPartTargetingTimeZoneType := [ "TIME_ZONE_SOURCE_UNSPECIFIED", "PUBLISHER", "USER" ]
enum_DealSyndicationProduct := [ "SYNDICATION_PRODUCT_UNSPECIFIED", "CONTENT", "MOBILE", "VIDEO", "GAMES" ]
enum_DealTermsBrandingType := [ "BRANDING_TYPE_UNSPECIFIED", "BRANDED", "SEMI_TRANSPARENT" ]
enum_GuaranteedFixedPriceTermsReservationType := [ "RESERVATION_TYPE_UNSPECIFIED", "STANDARD", "SPONSORSHIP" ]
enum_PricePricingType := [ "PRICING_TYPE_UNSPECIFIED", "COST_PER_MILLE", "COST_PER_DAY" ]

valid {
    input.Body.buyer.accountId == STRING
    input.Body.buyerContacts[_].email == STRING
    input.Body.buyerContacts[_].name == STRING
    input.Body.buyerPrivateData.referenceId == STRING
    input.Body.deals[_].availableEndTime == STRING
    input.Body.deals[_].availableStartTime == STRING
    input.Body.deals[_].buyerPrivateData.referenceId == STRING
    input.Body.deals[_].createProductId == STRING
    input.Body.deals[_].createProductRevision == STRING
    input.Body.deals[_].dealTerms.brandingType == enum_DealTermsBrandingType[_]
    input.Body.deals[_].dealTerms.description == STRING
    input.Body.deals[_].dealTerms.estimatedGrossSpend.amount.currencyCode == STRING
    input.Body.deals[_].dealTerms.estimatedGrossSpend.amount.nanos == INTEGER
    input.Body.deals[_].dealTerms.estimatedGrossSpend.amount.units == STRING
    input.Body.deals[_].dealTerms.estimatedGrossSpend.pricingType == enum_PricePricingType[_]
    input.Body.deals[_].dealTerms.estimatedImpressionsPerDay == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.fixedPrices[_].advertiserIds[_] == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.fixedPrices[_].buyer.accountId == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.fixedPrices[_].price.amount.currencyCode == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.fixedPrices[_].price.amount.nanos == INTEGER
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.fixedPrices[_].price.amount.units == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.fixedPrices[_].price.pricingType == enum_PricePricingType[_]
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.guaranteedImpressions == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.guaranteedLooks == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.impressionCap == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.minimumDailyLooks == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.percentShareOfVoice == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.reservationType == enum_GuaranteedFixedPriceTermsReservationType[_]
    input.Body.deals[_].dealTerms.nonGuaranteedAuctionTerms.autoOptimizePrivateAuction == BOOLEAN
    input.Body.deals[_].dealTerms.nonGuaranteedAuctionTerms.reservePricesPerBuyer[_].advertiserIds[_] == STRING
    input.Body.deals[_].dealTerms.nonGuaranteedAuctionTerms.reservePricesPerBuyer[_].buyer.accountId == STRING
    input.Body.deals[_].dealTerms.nonGuaranteedAuctionTerms.reservePricesPerBuyer[_].price.amount.currencyCode == STRING
    input.Body.deals[_].dealTerms.nonGuaranteedAuctionTerms.reservePricesPerBuyer[_].price.amount.nanos == INTEGER
    input.Body.deals[_].dealTerms.nonGuaranteedAuctionTerms.reservePricesPerBuyer[_].price.amount.units == STRING
    input.Body.deals[_].dealTerms.nonGuaranteedAuctionTerms.reservePricesPerBuyer[_].price.pricingType == enum_PricePricingType[_]
    input.Body.deals[_].dealTerms.nonGuaranteedFixedPriceTerms.fixedPrices[_].advertiserIds[_] == STRING
    input.Body.deals[_].dealTerms.nonGuaranteedFixedPriceTerms.fixedPrices[_].buyer.accountId == STRING
    input.Body.deals[_].dealTerms.nonGuaranteedFixedPriceTerms.fixedPrices[_].price.amount.currencyCode == STRING
    input.Body.deals[_].dealTerms.nonGuaranteedFixedPriceTerms.fixedPrices[_].price.amount.nanos == INTEGER
    input.Body.deals[_].dealTerms.nonGuaranteedFixedPriceTerms.fixedPrices[_].price.amount.units == STRING
    input.Body.deals[_].dealTerms.nonGuaranteedFixedPriceTerms.fixedPrices[_].price.pricingType == enum_PricePricingType[_]
    input.Body.deals[_].dealTerms.sellerTimeZone == STRING
    input.Body.deals[_].deliveryControl == {}
    input.Body.deals[_].description == STRING
    input.Body.deals[_].displayName == STRING
    input.Body.deals[_].syndicationProduct == enum_DealSyndicationProduct[_]
    input.Body.deals[_].targetingCriterion[_].exclusions[_].creativeSizeValue.allowedFormats[_] == enum_CreativeSizeAllowedFormats[_]
    input.Body.deals[_].targetingCriterion[_].exclusions[_].creativeSizeValue.companionSizes[_].height == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].creativeSizeValue.companionSizes[_].width == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].creativeSizeValue.creativeSizeType == enum_CreativeSizeCreativeSizeType[_]
    input.Body.deals[_].targetingCriterion[_].exclusions[_].creativeSizeValue.nativeTemplate == enum_CreativeSizeNativeTemplate[_]
    input.Body.deals[_].targetingCriterion[_].exclusions[_].creativeSizeValue.size.height == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].creativeSizeValue.size.width == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].creativeSizeValue.skippableAdType == enum_CreativeSizeSkippableAdType[_]
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.dayParts[_].dayOfWeek == enum_DayPartDayOfWeek[_]
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.dayParts[_].endTime.hours == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.dayParts[_].endTime.minutes == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.dayParts[_].endTime.nanos == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.dayParts[_].endTime.seconds == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.dayParts[_].startTime.hours == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.dayParts[_].startTime.minutes == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.dayParts[_].startTime.nanos == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.dayParts[_].startTime.seconds == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.timeZoneType == enum_DayPartTargetingTimeZoneType[_]
    input.Body.deals[_].targetingCriterion[_].exclusions[_].longValue == STRING
    input.Body.deals[_].targetingCriterion[_].exclusions[_].stringValue == STRING
    input.Body.deals[_].targetingCriterion[_].inclusions[_].creativeSizeValue.allowedFormats[_] == enum_CreativeSizeAllowedFormats[_]
    input.Body.deals[_].targetingCriterion[_].inclusions[_].creativeSizeValue.companionSizes[_].height == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].creativeSizeValue.companionSizes[_].width == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].creativeSizeValue.creativeSizeType == enum_CreativeSizeCreativeSizeType[_]
    input.Body.deals[_].targetingCriterion[_].inclusions[_].creativeSizeValue.nativeTemplate == enum_CreativeSizeNativeTemplate[_]
    input.Body.deals[_].targetingCriterion[_].inclusions[_].creativeSizeValue.size.height == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].creativeSizeValue.size.width == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].creativeSizeValue.skippableAdType == enum_CreativeSizeSkippableAdType[_]
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.dayParts[_].dayOfWeek == enum_DayPartDayOfWeek[_]
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.dayParts[_].endTime.hours == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.dayParts[_].endTime.minutes == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.dayParts[_].endTime.nanos == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.dayParts[_].endTime.seconds == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.dayParts[_].startTime.hours == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.dayParts[_].startTime.minutes == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.dayParts[_].startTime.nanos == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.dayParts[_].startTime.seconds == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.timeZoneType == enum_DayPartTargetingTimeZoneType[_]
    input.Body.deals[_].targetingCriterion[_].inclusions[_].longValue == STRING
    input.Body.deals[_].targetingCriterion[_].inclusions[_].stringValue == STRING
    input.Body.deals[_].targetingCriterion[_].key == STRING
    input.Body.deals[_].webPropertyCode == STRING
    input.Body.displayName == STRING
    input.Body.seller.accountId == STRING
    input.ReqMap.accountId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.proposals.get

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.proposalId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.proposals.list

enum_FilterSyntaxParameter := [ "FILTER_SYNTAX_UNSPECIFIED", "PQL", "LIST_FILTER" ]

valid {
    input.ReqMap.accountId == STRING
    input.Qs.filter == STRING
    input.Qs.filterSyntax == enum_FilterSyntaxParameter[_]
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.proposals.pause

valid {
    input.Body.reason == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.proposalId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.proposals.resume

valid {
    input.Body.STRING == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.proposalId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.proposals.update

enum_CreativeSizeAllowedFormats := [ "UNKNOWN", "AUDIO" ]
enum_CreativeSizeCreativeSizeType := [ "CREATIVE_SIZE_TYPE_UNSPECIFIED", "REGULAR", "INTERSTITIAL", "VIDEO", "NATIVE" ]
enum_CreativeSizeNativeTemplate := [ "UNKNOWN_NATIVE_TEMPLATE", "NATIVE_CONTENT_AD", "NATIVE_APP_INSTALL_AD", "NATIVE_VIDEO_CONTENT_AD", "NATIVE_VIDEO_APP_INSTALL_AD" ]
enum_CreativeSizeSkippableAdType := [ "SKIPPABLE_AD_TYPE_UNSPECIFIED", "GENERIC", "INSTREAM_SELECT", "NOT_SKIPPABLE" ]
enum_DayPartDayOfWeek := [ "DAY_OF_WEEK_UNSPECIFIED", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ]
enum_DayPartTargetingTimeZoneType := [ "TIME_ZONE_SOURCE_UNSPECIFIED", "PUBLISHER", "USER" ]
enum_DealSyndicationProduct := [ "SYNDICATION_PRODUCT_UNSPECIFIED", "CONTENT", "MOBILE", "VIDEO", "GAMES" ]
enum_DealTermsBrandingType := [ "BRANDING_TYPE_UNSPECIFIED", "BRANDED", "SEMI_TRANSPARENT" ]
enum_GuaranteedFixedPriceTermsReservationType := [ "RESERVATION_TYPE_UNSPECIFIED", "STANDARD", "SPONSORSHIP" ]
enum_PricePricingType := [ "PRICING_TYPE_UNSPECIFIED", "COST_PER_MILLE", "COST_PER_DAY" ]

valid {
    input.Body.buyer.accountId == STRING
    input.Body.buyerContacts[_].email == STRING
    input.Body.buyerContacts[_].name == STRING
    input.Body.buyerPrivateData.referenceId == STRING
    input.Body.deals[_].availableEndTime == STRING
    input.Body.deals[_].availableStartTime == STRING
    input.Body.deals[_].buyerPrivateData.referenceId == STRING
    input.Body.deals[_].createProductId == STRING
    input.Body.deals[_].createProductRevision == STRING
    input.Body.deals[_].dealTerms.brandingType == enum_DealTermsBrandingType[_]
    input.Body.deals[_].dealTerms.description == STRING
    input.Body.deals[_].dealTerms.estimatedGrossSpend.amount.currencyCode == STRING
    input.Body.deals[_].dealTerms.estimatedGrossSpend.amount.nanos == INTEGER
    input.Body.deals[_].dealTerms.estimatedGrossSpend.amount.units == STRING
    input.Body.deals[_].dealTerms.estimatedGrossSpend.pricingType == enum_PricePricingType[_]
    input.Body.deals[_].dealTerms.estimatedImpressionsPerDay == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.fixedPrices[_].advertiserIds[_] == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.fixedPrices[_].buyer.accountId == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.fixedPrices[_].price.amount.currencyCode == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.fixedPrices[_].price.amount.nanos == INTEGER
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.fixedPrices[_].price.amount.units == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.fixedPrices[_].price.pricingType == enum_PricePricingType[_]
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.guaranteedImpressions == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.guaranteedLooks == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.impressionCap == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.minimumDailyLooks == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.percentShareOfVoice == STRING
    input.Body.deals[_].dealTerms.guaranteedFixedPriceTerms.reservationType == enum_GuaranteedFixedPriceTermsReservationType[_]
    input.Body.deals[_].dealTerms.nonGuaranteedAuctionTerms.autoOptimizePrivateAuction == BOOLEAN
    input.Body.deals[_].dealTerms.nonGuaranteedAuctionTerms.reservePricesPerBuyer[_].advertiserIds[_] == STRING
    input.Body.deals[_].dealTerms.nonGuaranteedAuctionTerms.reservePricesPerBuyer[_].buyer.accountId == STRING
    input.Body.deals[_].dealTerms.nonGuaranteedAuctionTerms.reservePricesPerBuyer[_].price.amount.currencyCode == STRING
    input.Body.deals[_].dealTerms.nonGuaranteedAuctionTerms.reservePricesPerBuyer[_].price.amount.nanos == INTEGER
    input.Body.deals[_].dealTerms.nonGuaranteedAuctionTerms.reservePricesPerBuyer[_].price.amount.units == STRING
    input.Body.deals[_].dealTerms.nonGuaranteedAuctionTerms.reservePricesPerBuyer[_].price.pricingType == enum_PricePricingType[_]
    input.Body.deals[_].dealTerms.nonGuaranteedFixedPriceTerms.fixedPrices[_].advertiserIds[_] == STRING
    input.Body.deals[_].dealTerms.nonGuaranteedFixedPriceTerms.fixedPrices[_].buyer.accountId == STRING
    input.Body.deals[_].dealTerms.nonGuaranteedFixedPriceTerms.fixedPrices[_].price.amount.currencyCode == STRING
    input.Body.deals[_].dealTerms.nonGuaranteedFixedPriceTerms.fixedPrices[_].price.amount.nanos == INTEGER
    input.Body.deals[_].dealTerms.nonGuaranteedFixedPriceTerms.fixedPrices[_].price.amount.units == STRING
    input.Body.deals[_].dealTerms.nonGuaranteedFixedPriceTerms.fixedPrices[_].price.pricingType == enum_PricePricingType[_]
    input.Body.deals[_].dealTerms.sellerTimeZone == STRING
    input.Body.deals[_].deliveryControl == {}
    input.Body.deals[_].description == STRING
    input.Body.deals[_].displayName == STRING
    input.Body.deals[_].syndicationProduct == enum_DealSyndicationProduct[_]
    input.Body.deals[_].targetingCriterion[_].exclusions[_].creativeSizeValue.allowedFormats[_] == enum_CreativeSizeAllowedFormats[_]
    input.Body.deals[_].targetingCriterion[_].exclusions[_].creativeSizeValue.companionSizes[_].height == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].creativeSizeValue.companionSizes[_].width == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].creativeSizeValue.creativeSizeType == enum_CreativeSizeCreativeSizeType[_]
    input.Body.deals[_].targetingCriterion[_].exclusions[_].creativeSizeValue.nativeTemplate == enum_CreativeSizeNativeTemplate[_]
    input.Body.deals[_].targetingCriterion[_].exclusions[_].creativeSizeValue.size.height == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].creativeSizeValue.size.width == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].creativeSizeValue.skippableAdType == enum_CreativeSizeSkippableAdType[_]
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.dayParts[_].dayOfWeek == enum_DayPartDayOfWeek[_]
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.dayParts[_].endTime.hours == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.dayParts[_].endTime.minutes == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.dayParts[_].endTime.nanos == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.dayParts[_].endTime.seconds == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.dayParts[_].startTime.hours == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.dayParts[_].startTime.minutes == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.dayParts[_].startTime.nanos == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.dayParts[_].startTime.seconds == INTEGER
    input.Body.deals[_].targetingCriterion[_].exclusions[_].dayPartTargetingValue.timeZoneType == enum_DayPartTargetingTimeZoneType[_]
    input.Body.deals[_].targetingCriterion[_].exclusions[_].longValue == STRING
    input.Body.deals[_].targetingCriterion[_].exclusions[_].stringValue == STRING
    input.Body.deals[_].targetingCriterion[_].inclusions[_].creativeSizeValue.allowedFormats[_] == enum_CreativeSizeAllowedFormats[_]
    input.Body.deals[_].targetingCriterion[_].inclusions[_].creativeSizeValue.companionSizes[_].height == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].creativeSizeValue.companionSizes[_].width == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].creativeSizeValue.creativeSizeType == enum_CreativeSizeCreativeSizeType[_]
    input.Body.deals[_].targetingCriterion[_].inclusions[_].creativeSizeValue.nativeTemplate == enum_CreativeSizeNativeTemplate[_]
    input.Body.deals[_].targetingCriterion[_].inclusions[_].creativeSizeValue.size.height == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].creativeSizeValue.size.width == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].creativeSizeValue.skippableAdType == enum_CreativeSizeSkippableAdType[_]
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.dayParts[_].dayOfWeek == enum_DayPartDayOfWeek[_]
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.dayParts[_].endTime.hours == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.dayParts[_].endTime.minutes == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.dayParts[_].endTime.nanos == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.dayParts[_].endTime.seconds == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.dayParts[_].startTime.hours == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.dayParts[_].startTime.minutes == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.dayParts[_].startTime.nanos == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.dayParts[_].startTime.seconds == INTEGER
    input.Body.deals[_].targetingCriterion[_].inclusions[_].dayPartTargetingValue.timeZoneType == enum_DayPartTargetingTimeZoneType[_]
    input.Body.deals[_].targetingCriterion[_].inclusions[_].longValue == STRING
    input.Body.deals[_].targetingCriterion[_].inclusions[_].stringValue == STRING
    input.Body.deals[_].targetingCriterion[_].key == STRING
    input.Body.deals[_].webPropertyCode == STRING
    input.Body.displayName == STRING
    input.Body.seller.accountId == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.proposalId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.publisherProfiles.get

valid {
    input.ReqMap.accountId == STRING
    input.ReqMap.publisherProfileId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.accounts.publisherProfiles.list

valid {
    input.ReqMap.accountId == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.accounts.filterSets.bidMetrics.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.accounts.filterSets.bidResponseErrors.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.accounts.filterSets.bidResponsesWithoutBids.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.accounts.filterSets.create

enum_FilterSetBreakdownDimensions := [ "BREAKDOWN_DIMENSION_UNSPECIFIED", "PUBLISHER_IDENTIFIER" ]
enum_FilterSetEnvironment := [ "ENVIRONMENT_UNSPECIFIED", "WEB", "APP" ]
enum_FilterSetFormat := [ "FORMAT_UNSPECIFIED", "NATIVE_DISPLAY", "NATIVE_VIDEO", "NON_NATIVE_DISPLAY", "NON_NATIVE_VIDEO" ]
enum_FilterSetFormats := [ "FORMAT_UNSPECIFIED", "NATIVE_DISPLAY", "NATIVE_VIDEO", "NON_NATIVE_DISPLAY", "NON_NATIVE_VIDEO" ]
enum_FilterSetPlatforms := [ "PLATFORM_UNSPECIFIED", "DESKTOP", "TABLET", "MOBILE" ]
enum_FilterSetTimeSeriesGranularity := [ "TIME_SERIES_GRANULARITY_UNSPECIFIED", "HOURLY", "DAILY" ]

valid {
    input.Body.absoluteDateRange.endDate.day == INTEGER
    input.Body.absoluteDateRange.endDate.month == INTEGER
    input.Body.absoluteDateRange.endDate.year == INTEGER
    input.Body.absoluteDateRange.startDate.day == INTEGER
    input.Body.absoluteDateRange.startDate.month == INTEGER
    input.Body.absoluteDateRange.startDate.year == INTEGER
    input.Body.breakdownDimensions[_] == enum_FilterSetBreakdownDimensions[_]
    input.Body.creativeId == STRING
    input.Body.dealId == STRING
    input.Body.environment == enum_FilterSetEnvironment[_]
    input.Body.format == enum_FilterSetFormat[_]
    input.Body.formats[_] == enum_FilterSetFormats[_]
    input.Body.name == STRING
    input.Body.platforms[_] == enum_FilterSetPlatforms[_]
    input.Body.publisherIdentifiers[_] == STRING
    input.Body.realtimeTimeRange.startTimestamp == STRING
    input.Body.relativeDateRange.durationDays == INTEGER
    input.Body.relativeDateRange.offsetDays == INTEGER
    input.Body.sellerNetworkIds[_] == INTEGER
    input.Body.timeSeriesGranularity == enum_FilterSetTimeSeriesGranularity[_]
    input.ReqMap.ownerName == STRING
    input.Qs.isTransient == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.accounts.filterSets.delete

valid {
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.accounts.filterSets.filteredBidRequests.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.accounts.filterSets.filteredBids.creatives.list

valid {
    input.ReqMap.creativeStatusId == INTEGER
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.accounts.filterSets.filteredBids.details.list

valid {
    input.ReqMap.creativeStatusId == INTEGER
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.accounts.filterSets.filteredBids.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.accounts.filterSets.get

valid {
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.accounts.filterSets.impressionMetrics.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.accounts.filterSets.list

valid {
    input.ReqMap.ownerName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.accounts.filterSets.losingBids.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.accounts.filterSets.nonBillableWinningBids.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.filterSets.bidMetrics.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.filterSets.bidResponseErrors.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.filterSets.bidResponsesWithoutBids.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.filterSets.create

enum_FilterSetBreakdownDimensions := [ "BREAKDOWN_DIMENSION_UNSPECIFIED", "PUBLISHER_IDENTIFIER" ]
enum_FilterSetEnvironment := [ "ENVIRONMENT_UNSPECIFIED", "WEB", "APP" ]
enum_FilterSetFormat := [ "FORMAT_UNSPECIFIED", "NATIVE_DISPLAY", "NATIVE_VIDEO", "NON_NATIVE_DISPLAY", "NON_NATIVE_VIDEO" ]
enum_FilterSetFormats := [ "FORMAT_UNSPECIFIED", "NATIVE_DISPLAY", "NATIVE_VIDEO", "NON_NATIVE_DISPLAY", "NON_NATIVE_VIDEO" ]
enum_FilterSetPlatforms := [ "PLATFORM_UNSPECIFIED", "DESKTOP", "TABLET", "MOBILE" ]
enum_FilterSetTimeSeriesGranularity := [ "TIME_SERIES_GRANULARITY_UNSPECIFIED", "HOURLY", "DAILY" ]

valid {
    input.Body.absoluteDateRange.endDate.day == INTEGER
    input.Body.absoluteDateRange.endDate.month == INTEGER
    input.Body.absoluteDateRange.endDate.year == INTEGER
    input.Body.absoluteDateRange.startDate.day == INTEGER
    input.Body.absoluteDateRange.startDate.month == INTEGER
    input.Body.absoluteDateRange.startDate.year == INTEGER
    input.Body.breakdownDimensions[_] == enum_FilterSetBreakdownDimensions[_]
    input.Body.creativeId == STRING
    input.Body.dealId == STRING
    input.Body.environment == enum_FilterSetEnvironment[_]
    input.Body.format == enum_FilterSetFormat[_]
    input.Body.formats[_] == enum_FilterSetFormats[_]
    input.Body.name == STRING
    input.Body.platforms[_] == enum_FilterSetPlatforms[_]
    input.Body.publisherIdentifiers[_] == STRING
    input.Body.realtimeTimeRange.startTimestamp == STRING
    input.Body.relativeDateRange.durationDays == INTEGER
    input.Body.relativeDateRange.offsetDays == INTEGER
    input.Body.sellerNetworkIds[_] == INTEGER
    input.Body.timeSeriesGranularity == enum_FilterSetTimeSeriesGranularity[_]
    input.ReqMap.ownerName == STRING
    input.Qs.isTransient == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.filterSets.delete

valid {
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.filterSets.filteredBidRequests.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.filterSets.filteredBids.creatives.list

valid {
    input.ReqMap.creativeStatusId == INTEGER
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.filterSets.filteredBids.details.list

valid {
    input.ReqMap.creativeStatusId == INTEGER
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.filterSets.filteredBids.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.filterSets.get

valid {
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.filterSets.impressionMetrics.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.filterSets.list

valid {
    input.ReqMap.ownerName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.filterSets.losingBids.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.bidders.filterSets.nonBillableWinningBids.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.buyers.filterSets.bidMetrics.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.buyers.filterSets.bidResponseErrors.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.buyers.filterSets.bidResponsesWithoutBids.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.buyers.filterSets.create

enum_FilterSetBreakdownDimensions := [ "BREAKDOWN_DIMENSION_UNSPECIFIED", "PUBLISHER_IDENTIFIER" ]
enum_FilterSetEnvironment := [ "ENVIRONMENT_UNSPECIFIED", "WEB", "APP" ]
enum_FilterSetFormat := [ "FORMAT_UNSPECIFIED", "NATIVE_DISPLAY", "NATIVE_VIDEO", "NON_NATIVE_DISPLAY", "NON_NATIVE_VIDEO" ]
enum_FilterSetFormats := [ "FORMAT_UNSPECIFIED", "NATIVE_DISPLAY", "NATIVE_VIDEO", "NON_NATIVE_DISPLAY", "NON_NATIVE_VIDEO" ]
enum_FilterSetPlatforms := [ "PLATFORM_UNSPECIFIED", "DESKTOP", "TABLET", "MOBILE" ]
enum_FilterSetTimeSeriesGranularity := [ "TIME_SERIES_GRANULARITY_UNSPECIFIED", "HOURLY", "DAILY" ]

valid {
    input.Body.absoluteDateRange.endDate.day == INTEGER
    input.Body.absoluteDateRange.endDate.month == INTEGER
    input.Body.absoluteDateRange.endDate.year == INTEGER
    input.Body.absoluteDateRange.startDate.day == INTEGER
    input.Body.absoluteDateRange.startDate.month == INTEGER
    input.Body.absoluteDateRange.startDate.year == INTEGER
    input.Body.breakdownDimensions[_] == enum_FilterSetBreakdownDimensions[_]
    input.Body.creativeId == STRING
    input.Body.dealId == STRING
    input.Body.environment == enum_FilterSetEnvironment[_]
    input.Body.format == enum_FilterSetFormat[_]
    input.Body.formats[_] == enum_FilterSetFormats[_]
    input.Body.name == STRING
    input.Body.platforms[_] == enum_FilterSetPlatforms[_]
    input.Body.publisherIdentifiers[_] == STRING
    input.Body.realtimeTimeRange.startTimestamp == STRING
    input.Body.relativeDateRange.durationDays == INTEGER
    input.Body.relativeDateRange.offsetDays == INTEGER
    input.Body.sellerNetworkIds[_] == INTEGER
    input.Body.timeSeriesGranularity == enum_FilterSetTimeSeriesGranularity[_]
    input.ReqMap.ownerName == STRING
    input.Qs.isTransient == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.buyers.filterSets.delete

valid {
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.buyers.filterSets.filteredBidRequests.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.buyers.filterSets.filteredBids.creatives.list

valid {
    input.ReqMap.creativeStatusId == INTEGER
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.buyers.filterSets.filteredBids.details.list

valid {
    input.ReqMap.creativeStatusId == INTEGER
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.buyers.filterSets.filteredBids.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.buyers.filterSets.get

valid {
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.buyers.filterSets.impressionMetrics.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.buyers.filterSets.list

valid {
    input.ReqMap.ownerName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.buyers.filterSets.losingBids.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer2.buyers.filterSets.nonBillableWinningBids.list

valid {
    input.ReqMap.filterSetName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}