ADEXCHANGEBUYER

adexchangebuyer.accounts.get

valid {
    input.ReqMap.id == INTEGER
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.accounts.list

valid {
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.accounts.patch

valid {
    input.Body.applyPretargetingToNonGuaranteedDeals == BOOLEAN
    input.Body.bidderLocation[_].bidProtocol == STRING
    input.Body.bidderLocation[_].maximumQps == INTEGER
    input.Body.bidderLocation[_].region == STRING
    input.Body.bidderLocation[_].url == STRING
    input.Body.cookieMatchingNid == STRING
    input.Body.cookieMatchingUrl == STRING
    input.Body.id == INTEGER
    input.Body.kind == STRING
    input.Body.maximumActiveCreatives == INTEGER
    input.Body.maximumTotalQps == INTEGER
    input.Body.numberActiveCreatives == INTEGER
    input.ReqMap.id == INTEGER
    input.Qs.confirmUnsafeAccountChange == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.accounts.update

valid {
    input.Body.applyPretargetingToNonGuaranteedDeals == BOOLEAN
    input.Body.bidderLocation[_].bidProtocol == STRING
    input.Body.bidderLocation[_].maximumQps == INTEGER
    input.Body.bidderLocation[_].region == STRING
    input.Body.bidderLocation[_].url == STRING
    input.Body.cookieMatchingNid == STRING
    input.Body.cookieMatchingUrl == STRING
    input.Body.id == INTEGER
    input.Body.kind == STRING
    input.Body.maximumActiveCreatives == INTEGER
    input.Body.maximumTotalQps == INTEGER
    input.Body.numberActiveCreatives == INTEGER
    input.ReqMap.id == INTEGER
    input.Qs.confirmUnsafeAccountChange == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.billingInfo.get

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

adexchangebuyer.billingInfo.list

valid {
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.budget.get

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

adexchangebuyer.budget.patch

valid {
    input.Body.accountId == STRING
    input.Body.billingId == STRING
    input.Body.budgetAmount == STRING
    input.Body.currencyCode == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.billingId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.budget.update

valid {
    input.Body.accountId == STRING
    input.Body.billingId == STRING
    input.Body.budgetAmount == STRING
    input.Body.currencyCode == STRING
    input.Body.id == STRING
    input.Body.kind == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.billingId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.creatives.addDeal

valid {
    input.ReqMap.accountId == INTEGER
    input.ReqMap.buyerCreativeId == STRING
    input.ReqMap.dealId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.creatives.get

valid {
    input.ReqMap.accountId == INTEGER
    input.ReqMap.buyerCreativeId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.creatives.insert

valid {
    input.Body.HTMLSnippet == STRING
    input.Body.accountId == INTEGER
    input.Body.adChoicesDestinationUrl == STRING
    input.Body.adTechnologyProviders.detectedProviderIds[_] == STRING
    input.Body.adTechnologyProviders.hasUnidentifiedProvider == BOOLEAN
    input.Body.advertiserId[_] == STRING
    input.Body.advertiserName == STRING
    input.Body.agencyId == STRING
    input.Body.apiUploadTimestamp == STRING
    input.Body.attribute[_] == INTEGER
    input.Body.buyerCreativeId == STRING
    input.Body.clickThroughUrl[_] == STRING
    input.Body.corrections[_].contexts[_].auctionType[_] == STRING
    input.Body.corrections[_].contexts[_].contextType == STRING
    input.Body.corrections[_].contexts[_].geoCriteriaId[_] == INTEGER
    input.Body.corrections[_].contexts[_].platform[_] == STRING
    input.Body.corrections[_].details[_] == STRING
    input.Body.corrections[_].reason == STRING
    input.Body.creativeStatusIdentityType == STRING
    input.Body.dealsStatus == STRING
    input.Body.detectedDomains[_] == STRING
    input.Body.filteringReasons.date == STRING
    input.Body.filteringReasons.reasons[_].filteringCount == STRING
    input.Body.filteringReasons.reasons[_].filteringStatus == INTEGER
    input.Body.height == INTEGER
    input.Body.impressionTrackingUrl[_] == STRING
    input.Body.kind == STRING
    input.Body.languages[_] == STRING
    input.Body.nativeAd.advertiser == STRING
    input.Body.nativeAd.appIcon.height == INTEGER
    input.Body.nativeAd.appIcon.url == STRING
    input.Body.nativeAd.appIcon.width == INTEGER
    input.Body.nativeAd.body == STRING
    input.Body.nativeAd.callToAction == STRING
    input.Body.nativeAd.clickLinkUrl == STRING
    input.Body.nativeAd.clickTrackingUrl == STRING
    input.Body.nativeAd.headline == STRING
    input.Body.nativeAd.image.height == INTEGER
    input.Body.nativeAd.image.url == STRING
    input.Body.nativeAd.image.width == INTEGER
    input.Body.nativeAd.impressionTrackingUrl[_] == STRING
    input.Body.nativeAd.logo.height == INTEGER
    input.Body.nativeAd.logo.url == STRING
    input.Body.nativeAd.logo.width == INTEGER
    input.Body.nativeAd.price == STRING
    input.Body.nativeAd.starRating == NUMBER
    input.Body.nativeAd.videoURL == STRING
    input.Body.openAuctionStatus == STRING
    input.Body.productCategories[_] == INTEGER
    input.Body.restrictedCategories[_] == INTEGER
    input.Body.sensitiveCategories[_] == INTEGER
    input.Body.servingRestrictions[_].contexts[_].auctionType[_] == STRING
    input.Body.servingRestrictions[_].contexts[_].contextType == STRING
    input.Body.servingRestrictions[_].contexts[_].geoCriteriaId[_] == INTEGER
    input.Body.servingRestrictions[_].contexts[_].platform[_] == STRING
    input.Body.servingRestrictions[_].disapprovalReasons[_].details[_] == STRING
    input.Body.servingRestrictions[_].disapprovalReasons[_].reason == STRING
    input.Body.servingRestrictions[_].reason == STRING
    input.Body.vendorType[_] == INTEGER
    input.Body.version == INTEGER
    input.Body.videoURL == STRING
    input.Body.videoVastXML == STRING
    input.Body.width == INTEGER
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.creatives.list

enum_DealsStatusFilterParameter := [ "approved", "conditionally_approved", "disapproved", "not_checked" ]
enum_OpenAuctionStatusFilterParameter := [ "approved", "conditionally_approved", "disapproved", "not_checked" ]

valid {
    input.Qs.accountId == INTEGER
    input.Qs.buyerCreativeId == STRING
    input.Qs.dealsStatusFilter == enum_DealsStatusFilterParameter[_]
    input.Qs.maxResults == INTEGER
    input.Qs.openAuctionStatusFilter == enum_OpenAuctionStatusFilterParameter[_]
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.creatives.listDeals

valid {
    input.ReqMap.accountId == INTEGER
    input.ReqMap.buyerCreativeId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.creatives.removeDeal

valid {
    input.ReqMap.accountId == INTEGER
    input.ReqMap.buyerCreativeId == STRING
    input.ReqMap.dealId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.directDeals.get

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

adexchangebuyer.directDeals.list

valid {
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.marketplacedeals.delete

valid {
    input.Body.dealIds[_] == STRING
    input.Body.proposalRevisionNumber == STRING
    input.Body.updateAction == STRING
    input.ReqMap.proposalId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.marketplacedeals.insert

valid {
    input.Body.deals[_].buyerPrivateData.referenceId == STRING
    input.Body.deals[_].buyerPrivateData.referencePayload == STRING
    input.Body.deals[_].creationTimeMs == STRING
    input.Body.deals[_].creativePreApprovalPolicy == STRING
    input.Body.deals[_].creativeSafeFrameCompatibility == STRING
    input.Body.deals[_].dealId == STRING
    input.Body.deals[_].dealServingMetadata.alcoholAdsAllowed == BOOLEAN
    input.Body.deals[_].dealServingMetadata.dealPauseStatus.buyerPauseReason == STRING
    input.Body.deals[_].dealServingMetadata.dealPauseStatus.firstPausedBy == STRING
    input.Body.deals[_].dealServingMetadata.dealPauseStatus.hasBuyerPaused == BOOLEAN
    input.Body.deals[_].dealServingMetadata.dealPauseStatus.hasSellerPaused == BOOLEAN
    input.Body.deals[_].dealServingMetadata.dealPauseStatus.sellerPauseReason == STRING
    input.Body.deals[_].deliveryControl.creativeBlockingLevel == STRING
    input.Body.deals[_].deliveryControl.deliveryRateType == STRING
    input.Body.deals[_].deliveryControl.frequencyCaps[_].maxImpressions == INTEGER
    input.Body.deals[_].deliveryControl.frequencyCaps[_].numTimeUnits == INTEGER
    input.Body.deals[_].deliveryControl.frequencyCaps[_].timeUnitType == STRING
    input.Body.deals[_].externalDealId == STRING
    input.Body.deals[_].flightEndTimeMs == STRING
    input.Body.deals[_].flightStartTimeMs == STRING
    input.Body.deals[_].inventoryDescription == STRING
    input.Body.deals[_].isRfpTemplate == BOOLEAN
    input.Body.deals[_].isSetupComplete == BOOLEAN
    input.Body.deals[_].kind == STRING
    input.Body.deals[_].lastUpdateTimeMs == STRING
    input.Body.deals[_].makegoodRequestedReason == STRING
    input.Body.deals[_].name == STRING
    input.Body.deals[_].productId == STRING
    input.Body.deals[_].productRevisionNumber == STRING
    input.Body.deals[_].programmaticCreativeSource == STRING
    input.Body.deals[_].proposalId == STRING
    input.Body.deals[_].sellerContacts[_].email == STRING
    input.Body.deals[_].sellerContacts[_].name == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].creativeSizeValue.allowedFormats[_] == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].creativeSizeValue.companionSizes[_].height == INTEGER
    input.Body.deals[_].sharedTargetings[_].exclusions[_].creativeSizeValue.companionSizes[_].width == INTEGER
    input.Body.deals[_].sharedTargetings[_].exclusions[_].creativeSizeValue.creativeSizeType == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].creativeSizeValue.nativeTemplate == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].creativeSizeValue.size.height == INTEGER
    input.Body.deals[_].sharedTargetings[_].exclusions[_].creativeSizeValue.size.width == INTEGER
    input.Body.deals[_].sharedTargetings[_].exclusions[_].creativeSizeValue.skippableAdType == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].dayPartTargetingValue.dayParts[_].dayOfWeek == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].dayPartTargetingValue.dayParts[_].endHour == INTEGER
    input.Body.deals[_].sharedTargetings[_].exclusions[_].dayPartTargetingValue.dayParts[_].endMinute == INTEGER
    input.Body.deals[_].sharedTargetings[_].exclusions[_].dayPartTargetingValue.dayParts[_].startHour == INTEGER
    input.Body.deals[_].sharedTargetings[_].exclusions[_].dayPartTargetingValue.dayParts[_].startMinute == INTEGER
    input.Body.deals[_].sharedTargetings[_].exclusions[_].dayPartTargetingValue.timeZoneType == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].demogAgeCriteriaValue.demogAgeCriteriaIds[_] == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].demogGenderCriteriaValue.demogGenderCriteriaIds[_] == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].longValue == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].requestPlatformTargetingValue.requestPlatforms[_] == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].stringValue == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].creativeSizeValue.allowedFormats[_] == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].creativeSizeValue.companionSizes[_].height == INTEGER
    input.Body.deals[_].sharedTargetings[_].inclusions[_].creativeSizeValue.companionSizes[_].width == INTEGER
    input.Body.deals[_].sharedTargetings[_].inclusions[_].creativeSizeValue.creativeSizeType == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].creativeSizeValue.nativeTemplate == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].creativeSizeValue.size.height == INTEGER
    input.Body.deals[_].sharedTargetings[_].inclusions[_].creativeSizeValue.size.width == INTEGER
    input.Body.deals[_].sharedTargetings[_].inclusions[_].creativeSizeValue.skippableAdType == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].dayPartTargetingValue.dayParts[_].dayOfWeek == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].dayPartTargetingValue.dayParts[_].endHour == INTEGER
    input.Body.deals[_].sharedTargetings[_].inclusions[_].dayPartTargetingValue.dayParts[_].endMinute == INTEGER
    input.Body.deals[_].sharedTargetings[_].inclusions[_].dayPartTargetingValue.dayParts[_].startHour == INTEGER
    input.Body.deals[_].sharedTargetings[_].inclusions[_].dayPartTargetingValue.dayParts[_].startMinute == INTEGER
    input.Body.deals[_].sharedTargetings[_].inclusions[_].dayPartTargetingValue.timeZoneType == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].demogAgeCriteriaValue.demogAgeCriteriaIds[_] == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].demogGenderCriteriaValue.demogGenderCriteriaIds[_] == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].longValue == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].requestPlatformTargetingValue.requestPlatforms[_] == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].stringValue == STRING
    input.Body.deals[_].sharedTargetings[_].key == STRING
    input.Body.deals[_].syndicationProduct == STRING
    input.Body.deals[_].terms.brandingType == STRING
    input.Body.deals[_].terms.crossListedExternalDealIdType == STRING
    input.Body.deals[_].terms.description == STRING
    input.Body.deals[_].terms.estimatedGrossSpend.amountMicros == NUMBER
    input.Body.deals[_].terms.estimatedGrossSpend.currencyCode == STRING
    input.Body.deals[_].terms.estimatedGrossSpend.expectedCpmMicros == NUMBER
    input.Body.deals[_].terms.estimatedGrossSpend.pricingType == STRING
    input.Body.deals[_].terms.estimatedImpressionsPerDay == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.billingInfo.currencyConversionTimeMs == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.billingInfo.dfpLineItemId == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.billingInfo.originalContractedQuantity == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.billingInfo.price.amountMicros == NUMBER
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.billingInfo.price.currencyCode == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.billingInfo.price.expectedCpmMicros == NUMBER
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.billingInfo.price.pricingType == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.fixedPrices[_].auctionTier == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.fixedPrices[_].billedBuyer.accountId == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.fixedPrices[_].buyer.accountId == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.fixedPrices[_].price.amountMicros == NUMBER
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.fixedPrices[_].price.currencyCode == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.fixedPrices[_].price.expectedCpmMicros == NUMBER
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.fixedPrices[_].price.pricingType == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.guaranteedImpressions == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.guaranteedLooks == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.minimumDailyLooks == STRING
    input.Body.deals[_].terms.nonGuaranteedAuctionTerms.autoOptimizePrivateAuction == BOOLEAN
    input.Body.deals[_].terms.nonGuaranteedAuctionTerms.reservePricePerBuyers[_].auctionTier == STRING
    input.Body.deals[_].terms.nonGuaranteedAuctionTerms.reservePricePerBuyers[_].billedBuyer.accountId == STRING
    input.Body.deals[_].terms.nonGuaranteedAuctionTerms.reservePricePerBuyers[_].buyer.accountId == STRING
    input.Body.deals[_].terms.nonGuaranteedAuctionTerms.reservePricePerBuyers[_].price.amountMicros == NUMBER
    input.Body.deals[_].terms.nonGuaranteedAuctionTerms.reservePricePerBuyers[_].price.currencyCode == STRING
    input.Body.deals[_].terms.nonGuaranteedAuctionTerms.reservePricePerBuyers[_].price.expectedCpmMicros == NUMBER
    input.Body.deals[_].terms.nonGuaranteedAuctionTerms.reservePricePerBuyers[_].price.pricingType == STRING
    input.Body.deals[_].terms.nonGuaranteedFixedPriceTerms.fixedPrices[_].auctionTier == STRING
    input.Body.deals[_].terms.nonGuaranteedFixedPriceTerms.fixedPrices[_].billedBuyer.accountId == STRING
    input.Body.deals[_].terms.nonGuaranteedFixedPriceTerms.fixedPrices[_].buyer.accountId == STRING
    input.Body.deals[_].terms.nonGuaranteedFixedPriceTerms.fixedPrices[_].price.amountMicros == NUMBER
    input.Body.deals[_].terms.nonGuaranteedFixedPriceTerms.fixedPrices[_].price.currencyCode == STRING
    input.Body.deals[_].terms.nonGuaranteedFixedPriceTerms.fixedPrices[_].price.expectedCpmMicros == NUMBER
    input.Body.deals[_].terms.nonGuaranteedFixedPriceTerms.fixedPrices[_].price.pricingType == STRING
    input.Body.deals[_].terms.rubiconNonGuaranteedTerms.priorityPrice.amountMicros == NUMBER
    input.Body.deals[_].terms.rubiconNonGuaranteedTerms.priorityPrice.currencyCode == STRING
    input.Body.deals[_].terms.rubiconNonGuaranteedTerms.priorityPrice.expectedCpmMicros == NUMBER
    input.Body.deals[_].terms.rubiconNonGuaranteedTerms.priorityPrice.pricingType == STRING
    input.Body.deals[_].terms.rubiconNonGuaranteedTerms.standardPrice.amountMicros == NUMBER
    input.Body.deals[_].terms.rubiconNonGuaranteedTerms.standardPrice.currencyCode == STRING
    input.Body.deals[_].terms.rubiconNonGuaranteedTerms.standardPrice.expectedCpmMicros == NUMBER
    input.Body.deals[_].terms.rubiconNonGuaranteedTerms.standardPrice.pricingType == STRING
    input.Body.deals[_].terms.sellerTimeZone == STRING
    input.Body.deals[_].webPropertyCode == STRING
    input.Body.proposalRevisionNumber == STRING
    input.Body.updateAction == STRING
    input.ReqMap.proposalId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.marketplacedeals.list

valid {
    input.ReqMap.proposalId == STRING
    input.Qs.pqlQuery == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.marketplacedeals.update

valid {
    input.Body.deals[_].buyerPrivateData.referenceId == STRING
    input.Body.deals[_].buyerPrivateData.referencePayload == STRING
    input.Body.deals[_].creationTimeMs == STRING
    input.Body.deals[_].creativePreApprovalPolicy == STRING
    input.Body.deals[_].creativeSafeFrameCompatibility == STRING
    input.Body.deals[_].dealId == STRING
    input.Body.deals[_].dealServingMetadata.alcoholAdsAllowed == BOOLEAN
    input.Body.deals[_].dealServingMetadata.dealPauseStatus.buyerPauseReason == STRING
    input.Body.deals[_].dealServingMetadata.dealPauseStatus.firstPausedBy == STRING
    input.Body.deals[_].dealServingMetadata.dealPauseStatus.hasBuyerPaused == BOOLEAN
    input.Body.deals[_].dealServingMetadata.dealPauseStatus.hasSellerPaused == BOOLEAN
    input.Body.deals[_].dealServingMetadata.dealPauseStatus.sellerPauseReason == STRING
    input.Body.deals[_].deliveryControl.creativeBlockingLevel == STRING
    input.Body.deals[_].deliveryControl.deliveryRateType == STRING
    input.Body.deals[_].deliveryControl.frequencyCaps[_].maxImpressions == INTEGER
    input.Body.deals[_].deliveryControl.frequencyCaps[_].numTimeUnits == INTEGER
    input.Body.deals[_].deliveryControl.frequencyCaps[_].timeUnitType == STRING
    input.Body.deals[_].externalDealId == STRING
    input.Body.deals[_].flightEndTimeMs == STRING
    input.Body.deals[_].flightStartTimeMs == STRING
    input.Body.deals[_].inventoryDescription == STRING
    input.Body.deals[_].isRfpTemplate == BOOLEAN
    input.Body.deals[_].isSetupComplete == BOOLEAN
    input.Body.deals[_].kind == STRING
    input.Body.deals[_].lastUpdateTimeMs == STRING
    input.Body.deals[_].makegoodRequestedReason == STRING
    input.Body.deals[_].name == STRING
    input.Body.deals[_].productId == STRING
    input.Body.deals[_].productRevisionNumber == STRING
    input.Body.deals[_].programmaticCreativeSource == STRING
    input.Body.deals[_].proposalId == STRING
    input.Body.deals[_].sellerContacts[_].email == STRING
    input.Body.deals[_].sellerContacts[_].name == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].creativeSizeValue.allowedFormats[_] == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].creativeSizeValue.companionSizes[_].height == INTEGER
    input.Body.deals[_].sharedTargetings[_].exclusions[_].creativeSizeValue.companionSizes[_].width == INTEGER
    input.Body.deals[_].sharedTargetings[_].exclusions[_].creativeSizeValue.creativeSizeType == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].creativeSizeValue.nativeTemplate == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].creativeSizeValue.size.height == INTEGER
    input.Body.deals[_].sharedTargetings[_].exclusions[_].creativeSizeValue.size.width == INTEGER
    input.Body.deals[_].sharedTargetings[_].exclusions[_].creativeSizeValue.skippableAdType == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].dayPartTargetingValue.dayParts[_].dayOfWeek == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].dayPartTargetingValue.dayParts[_].endHour == INTEGER
    input.Body.deals[_].sharedTargetings[_].exclusions[_].dayPartTargetingValue.dayParts[_].endMinute == INTEGER
    input.Body.deals[_].sharedTargetings[_].exclusions[_].dayPartTargetingValue.dayParts[_].startHour == INTEGER
    input.Body.deals[_].sharedTargetings[_].exclusions[_].dayPartTargetingValue.dayParts[_].startMinute == INTEGER
    input.Body.deals[_].sharedTargetings[_].exclusions[_].dayPartTargetingValue.timeZoneType == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].demogAgeCriteriaValue.demogAgeCriteriaIds[_] == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].demogGenderCriteriaValue.demogGenderCriteriaIds[_] == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].longValue == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].requestPlatformTargetingValue.requestPlatforms[_] == STRING
    input.Body.deals[_].sharedTargetings[_].exclusions[_].stringValue == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].creativeSizeValue.allowedFormats[_] == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].creativeSizeValue.companionSizes[_].height == INTEGER
    input.Body.deals[_].sharedTargetings[_].inclusions[_].creativeSizeValue.companionSizes[_].width == INTEGER
    input.Body.deals[_].sharedTargetings[_].inclusions[_].creativeSizeValue.creativeSizeType == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].creativeSizeValue.nativeTemplate == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].creativeSizeValue.size.height == INTEGER
    input.Body.deals[_].sharedTargetings[_].inclusions[_].creativeSizeValue.size.width == INTEGER
    input.Body.deals[_].sharedTargetings[_].inclusions[_].creativeSizeValue.skippableAdType == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].dayPartTargetingValue.dayParts[_].dayOfWeek == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].dayPartTargetingValue.dayParts[_].endHour == INTEGER
    input.Body.deals[_].sharedTargetings[_].inclusions[_].dayPartTargetingValue.dayParts[_].endMinute == INTEGER
    input.Body.deals[_].sharedTargetings[_].inclusions[_].dayPartTargetingValue.dayParts[_].startHour == INTEGER
    input.Body.deals[_].sharedTargetings[_].inclusions[_].dayPartTargetingValue.dayParts[_].startMinute == INTEGER
    input.Body.deals[_].sharedTargetings[_].inclusions[_].dayPartTargetingValue.timeZoneType == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].demogAgeCriteriaValue.demogAgeCriteriaIds[_] == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].demogGenderCriteriaValue.demogGenderCriteriaIds[_] == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].longValue == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].requestPlatformTargetingValue.requestPlatforms[_] == STRING
    input.Body.deals[_].sharedTargetings[_].inclusions[_].stringValue == STRING
    input.Body.deals[_].sharedTargetings[_].key == STRING
    input.Body.deals[_].syndicationProduct == STRING
    input.Body.deals[_].terms.brandingType == STRING
    input.Body.deals[_].terms.crossListedExternalDealIdType == STRING
    input.Body.deals[_].terms.description == STRING
    input.Body.deals[_].terms.estimatedGrossSpend.amountMicros == NUMBER
    input.Body.deals[_].terms.estimatedGrossSpend.currencyCode == STRING
    input.Body.deals[_].terms.estimatedGrossSpend.expectedCpmMicros == NUMBER
    input.Body.deals[_].terms.estimatedGrossSpend.pricingType == STRING
    input.Body.deals[_].terms.estimatedImpressionsPerDay == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.billingInfo.currencyConversionTimeMs == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.billingInfo.dfpLineItemId == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.billingInfo.originalContractedQuantity == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.billingInfo.price.amountMicros == NUMBER
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.billingInfo.price.currencyCode == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.billingInfo.price.expectedCpmMicros == NUMBER
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.billingInfo.price.pricingType == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.fixedPrices[_].auctionTier == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.fixedPrices[_].billedBuyer.accountId == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.fixedPrices[_].buyer.accountId == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.fixedPrices[_].price.amountMicros == NUMBER
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.fixedPrices[_].price.currencyCode == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.fixedPrices[_].price.expectedCpmMicros == NUMBER
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.fixedPrices[_].price.pricingType == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.guaranteedImpressions == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.guaranteedLooks == STRING
    input.Body.deals[_].terms.guaranteedFixedPriceTerms.minimumDailyLooks == STRING
    input.Body.deals[_].terms.nonGuaranteedAuctionTerms.autoOptimizePrivateAuction == BOOLEAN
    input.Body.deals[_].terms.nonGuaranteedAuctionTerms.reservePricePerBuyers[_].auctionTier == STRING
    input.Body.deals[_].terms.nonGuaranteedAuctionTerms.reservePricePerBuyers[_].billedBuyer.accountId == STRING
    input.Body.deals[_].terms.nonGuaranteedAuctionTerms.reservePricePerBuyers[_].buyer.accountId == STRING
    input.Body.deals[_].terms.nonGuaranteedAuctionTerms.reservePricePerBuyers[_].price.amountMicros == NUMBER
    input.Body.deals[_].terms.nonGuaranteedAuctionTerms.reservePricePerBuyers[_].price.currencyCode == STRING
    input.Body.deals[_].terms.nonGuaranteedAuctionTerms.reservePricePerBuyers[_].price.expectedCpmMicros == NUMBER
    input.Body.deals[_].terms.nonGuaranteedAuctionTerms.reservePricePerBuyers[_].price.pricingType == STRING
    input.Body.deals[_].terms.nonGuaranteedFixedPriceTerms.fixedPrices[_].auctionTier == STRING
    input.Body.deals[_].terms.nonGuaranteedFixedPriceTerms.fixedPrices[_].billedBuyer.accountId == STRING
    input.Body.deals[_].terms.nonGuaranteedFixedPriceTerms.fixedPrices[_].buyer.accountId == STRING
    input.Body.deals[_].terms.nonGuaranteedFixedPriceTerms.fixedPrices[_].price.amountMicros == NUMBER
    input.Body.deals[_].terms.nonGuaranteedFixedPriceTerms.fixedPrices[_].price.currencyCode == STRING
    input.Body.deals[_].terms.nonGuaranteedFixedPriceTerms.fixedPrices[_].price.expectedCpmMicros == NUMBER
    input.Body.deals[_].terms.nonGuaranteedFixedPriceTerms.fixedPrices[_].price.pricingType == STRING
    input.Body.deals[_].terms.rubiconNonGuaranteedTerms.priorityPrice.amountMicros == NUMBER
    input.Body.deals[_].terms.rubiconNonGuaranteedTerms.priorityPrice.currencyCode == STRING
    input.Body.deals[_].terms.rubiconNonGuaranteedTerms.priorityPrice.expectedCpmMicros == NUMBER
    input.Body.deals[_].terms.rubiconNonGuaranteedTerms.priorityPrice.pricingType == STRING
    input.Body.deals[_].terms.rubiconNonGuaranteedTerms.standardPrice.amountMicros == NUMBER
    input.Body.deals[_].terms.rubiconNonGuaranteedTerms.standardPrice.currencyCode == STRING
    input.Body.deals[_].terms.rubiconNonGuaranteedTerms.standardPrice.expectedCpmMicros == NUMBER
    input.Body.deals[_].terms.rubiconNonGuaranteedTerms.standardPrice.pricingType == STRING
    input.Body.deals[_].terms.sellerTimeZone == STRING
    input.Body.deals[_].webPropertyCode == STRING
    input.Body.proposal.billedBuyer.accountId == STRING
    input.Body.proposal.buyer.accountId == STRING
    input.Body.proposal.buyerContacts[_].email == STRING
    input.Body.proposal.buyerContacts[_].name == STRING
    input.Body.proposal.buyerPrivateData.referenceId == STRING
    input.Body.proposal.buyerPrivateData.referencePayload == STRING
    input.Body.proposal.dbmAdvertiserIds[_] == STRING
    input.Body.proposal.hasBuyerSignedOff == BOOLEAN
    input.Body.proposal.hasSellerSignedOff == BOOLEAN
    input.Body.proposal.inventorySource == STRING
    input.Body.proposal.isRenegotiating == BOOLEAN
    input.Body.proposal.isSetupComplete == BOOLEAN
    input.Body.proposal.kind == STRING
    input.Body.proposal.labels[_].accountId == STRING
    input.Body.proposal.labels[_].createTimeMs == STRING
    input.Body.proposal.labels[_].deprecatedMarketplaceDealParty.buyer.accountId == STRING
    input.Body.proposal.labels[_].deprecatedMarketplaceDealParty.seller.accountId == STRING
    input.Body.proposal.labels[_].deprecatedMarketplaceDealParty.seller.subAccountId == STRING
    input.Body.proposal.labels[_].label == STRING
    input.Body.proposal.lastUpdaterOrCommentorRole == STRING
    input.Body.proposal.name == STRING
    input.Body.proposal.negotiationId == STRING
    input.Body.proposal.originatorRole == STRING
    input.Body.proposal.privateAuctionId == STRING
    input.Body.proposal.proposalId == STRING
    input.Body.proposal.proposalState == STRING
    input.Body.proposal.revisionNumber == STRING
    input.Body.proposal.revisionTimeMs == STRING
    input.Body.proposal.seller.accountId == STRING
    input.Body.proposal.seller.subAccountId == STRING
    input.Body.proposal.sellerContacts[_].email == STRING
    input.Body.proposal.sellerContacts[_].name == STRING
    input.Body.proposalRevisionNumber == STRING
    input.Body.updateAction == STRING
    input.ReqMap.proposalId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.marketplacenotes.insert

valid {
    input.Body.notes[_].creatorRole == STRING
    input.Body.notes[_].dealId == STRING
    input.Body.notes[_].kind == STRING
    input.Body.notes[_].note == STRING
    input.Body.notes[_].noteId == STRING
    input.Body.notes[_].proposalId == STRING
    input.Body.notes[_].proposalRevisionNumber == STRING
    input.Body.notes[_].timestampMs == STRING
    input.ReqMap.proposalId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.marketplacenotes.list

valid {
    input.ReqMap.proposalId == STRING
    input.Qs.pqlQuery == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.marketplaceprivateauction.updateproposal

valid {
    input.Body.externalDealId == STRING
    input.Body.note.creatorRole == STRING
    input.Body.note.dealId == STRING
    input.Body.note.kind == STRING
    input.Body.note.note == STRING
    input.Body.note.noteId == STRING
    input.Body.note.proposalId == STRING
    input.Body.note.proposalRevisionNumber == STRING
    input.Body.note.timestampMs == STRING
    input.Body.proposalRevisionNumber == STRING
    input.Body.updateAction == STRING
    input.ReqMap.privateAuctionId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.performanceReport.list

valid {
    input.Qs.accountId == STRING
    input.Qs.endDateTime == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.startDateTime == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.pretargetingConfig.delete

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

adexchangebuyer.pretargetingConfig.get

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

adexchangebuyer.pretargetingConfig.insert

valid {
    input.Body.billingId == STRING
    input.Body.configId == STRING
    input.Body.configName == STRING
    input.Body.creativeType[_] == STRING
    input.Body.dimensions[_].height == STRING
    input.Body.dimensions[_].width == STRING
    input.Body.excludedContentLabels[_] == STRING
    input.Body.excludedGeoCriteriaIds[_] == STRING
    input.Body.excludedPlacements[_].token == STRING
    input.Body.excludedPlacements[_].type == STRING
    input.Body.excludedUserLists[_] == STRING
    input.Body.excludedVerticals[_] == STRING
    input.Body.geoCriteriaIds[_] == STRING
    input.Body.isActive == BOOLEAN
    input.Body.kind == STRING
    input.Body.languages[_] == STRING
    input.Body.maximumQps == STRING
    input.Body.minimumViewabilityDecile == INTEGER
    input.Body.mobileCarriers[_] == STRING
    input.Body.mobileDevices[_] == STRING
    input.Body.mobileOperatingSystemVersions[_] == STRING
    input.Body.placements[_].token == STRING
    input.Body.placements[_].type == STRING
    input.Body.platforms[_] == STRING
    input.Body.supportedCreativeAttributes[_] == STRING
    input.Body.userIdentifierDataRequired[_] == STRING
    input.Body.userLists[_] == STRING
    input.Body.vendorTypes[_] == STRING
    input.Body.verticals[_] == STRING
    input.Body.videoPlayerSizes[_].aspectRatio == STRING
    input.Body.videoPlayerSizes[_].minHeight == STRING
    input.Body.videoPlayerSizes[_].minWidth == STRING
    input.ReqMap.accountId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.pretargetingConfig.list

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

adexchangebuyer.pretargetingConfig.patch

valid {
    input.Body.billingId == STRING
    input.Body.configId == STRING
    input.Body.configName == STRING
    input.Body.creativeType[_] == STRING
    input.Body.dimensions[_].height == STRING
    input.Body.dimensions[_].width == STRING
    input.Body.excludedContentLabels[_] == STRING
    input.Body.excludedGeoCriteriaIds[_] == STRING
    input.Body.excludedPlacements[_].token == STRING
    input.Body.excludedPlacements[_].type == STRING
    input.Body.excludedUserLists[_] == STRING
    input.Body.excludedVerticals[_] == STRING
    input.Body.geoCriteriaIds[_] == STRING
    input.Body.isActive == BOOLEAN
    input.Body.kind == STRING
    input.Body.languages[_] == STRING
    input.Body.maximumQps == STRING
    input.Body.minimumViewabilityDecile == INTEGER
    input.Body.mobileCarriers[_] == STRING
    input.Body.mobileDevices[_] == STRING
    input.Body.mobileOperatingSystemVersions[_] == STRING
    input.Body.placements[_].token == STRING
    input.Body.placements[_].type == STRING
    input.Body.platforms[_] == STRING
    input.Body.supportedCreativeAttributes[_] == STRING
    input.Body.userIdentifierDataRequired[_] == STRING
    input.Body.userLists[_] == STRING
    input.Body.vendorTypes[_] == STRING
    input.Body.verticals[_] == STRING
    input.Body.videoPlayerSizes[_].aspectRatio == STRING
    input.Body.videoPlayerSizes[_].minHeight == STRING
    input.Body.videoPlayerSizes[_].minWidth == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.configId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.pretargetingConfig.update

valid {
    input.Body.billingId == STRING
    input.Body.configId == STRING
    input.Body.configName == STRING
    input.Body.creativeType[_] == STRING
    input.Body.dimensions[_].height == STRING
    input.Body.dimensions[_].width == STRING
    input.Body.excludedContentLabels[_] == STRING
    input.Body.excludedGeoCriteriaIds[_] == STRING
    input.Body.excludedPlacements[_].token == STRING
    input.Body.excludedPlacements[_].type == STRING
    input.Body.excludedUserLists[_] == STRING
    input.Body.excludedVerticals[_] == STRING
    input.Body.geoCriteriaIds[_] == STRING
    input.Body.isActive == BOOLEAN
    input.Body.kind == STRING
    input.Body.languages[_] == STRING
    input.Body.maximumQps == STRING
    input.Body.minimumViewabilityDecile == INTEGER
    input.Body.mobileCarriers[_] == STRING
    input.Body.mobileDevices[_] == STRING
    input.Body.mobileOperatingSystemVersions[_] == STRING
    input.Body.placements[_].token == STRING
    input.Body.placements[_].type == STRING
    input.Body.platforms[_] == STRING
    input.Body.supportedCreativeAttributes[_] == STRING
    input.Body.userIdentifierDataRequired[_] == STRING
    input.Body.userLists[_] == STRING
    input.Body.vendorTypes[_] == STRING
    input.Body.verticals[_] == STRING
    input.Body.videoPlayerSizes[_].aspectRatio == STRING
    input.Body.videoPlayerSizes[_].minHeight == STRING
    input.Body.videoPlayerSizes[_].minWidth == STRING
    input.ReqMap.accountId == STRING
    input.ReqMap.configId == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.products.get

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

adexchangebuyer.products.search

valid {
    input.Qs.pqlQuery == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.proposals.get

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

adexchangebuyer.proposals.insert

valid {
    input.Body.proposals[_].billedBuyer.accountId == STRING
    input.Body.proposals[_].buyer.accountId == STRING
    input.Body.proposals[_].buyerContacts[_].email == STRING
    input.Body.proposals[_].buyerContacts[_].name == STRING
    input.Body.proposals[_].buyerPrivateData.referenceId == STRING
    input.Body.proposals[_].buyerPrivateData.referencePayload == STRING
    input.Body.proposals[_].dbmAdvertiserIds[_] == STRING
    input.Body.proposals[_].hasBuyerSignedOff == BOOLEAN
    input.Body.proposals[_].hasSellerSignedOff == BOOLEAN
    input.Body.proposals[_].inventorySource == STRING
    input.Body.proposals[_].isRenegotiating == BOOLEAN
    input.Body.proposals[_].isSetupComplete == BOOLEAN
    input.Body.proposals[_].kind == STRING
    input.Body.proposals[_].labels[_].accountId == STRING
    input.Body.proposals[_].labels[_].createTimeMs == STRING
    input.Body.proposals[_].labels[_].deprecatedMarketplaceDealParty.buyer.accountId == STRING
    input.Body.proposals[_].labels[_].deprecatedMarketplaceDealParty.seller.accountId == STRING
    input.Body.proposals[_].labels[_].deprecatedMarketplaceDealParty.seller.subAccountId == STRING
    input.Body.proposals[_].labels[_].label == STRING
    input.Body.proposals[_].lastUpdaterOrCommentorRole == STRING
    input.Body.proposals[_].name == STRING
    input.Body.proposals[_].negotiationId == STRING
    input.Body.proposals[_].originatorRole == STRING
    input.Body.proposals[_].privateAuctionId == STRING
    input.Body.proposals[_].proposalId == STRING
    input.Body.proposals[_].proposalState == STRING
    input.Body.proposals[_].revisionNumber == STRING
    input.Body.proposals[_].revisionTimeMs == STRING
    input.Body.proposals[_].seller.accountId == STRING
    input.Body.proposals[_].seller.subAccountId == STRING
    input.Body.proposals[_].sellerContacts[_].email == STRING
    input.Body.proposals[_].sellerContacts[_].name == STRING
    input.Body.webPropertyCode == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.proposals.patch

enum_UpdateActionParameter := [ "accept", "cancel", "propose", "proposeAndAccept", "unknownAction", "updateNonTerms" ]

valid {
    input.Body.billedBuyer.accountId == STRING
    input.Body.buyer.accountId == STRING
    input.Body.buyerContacts[_].email == STRING
    input.Body.buyerContacts[_].name == STRING
    input.Body.buyerPrivateData.referenceId == STRING
    input.Body.buyerPrivateData.referencePayload == STRING
    input.Body.dbmAdvertiserIds[_] == STRING
    input.Body.hasBuyerSignedOff == BOOLEAN
    input.Body.hasSellerSignedOff == BOOLEAN
    input.Body.inventorySource == STRING
    input.Body.isRenegotiating == BOOLEAN
    input.Body.isSetupComplete == BOOLEAN
    input.Body.kind == STRING
    input.Body.labels[_].accountId == STRING
    input.Body.labels[_].createTimeMs == STRING
    input.Body.labels[_].deprecatedMarketplaceDealParty.buyer.accountId == STRING
    input.Body.labels[_].deprecatedMarketplaceDealParty.seller.accountId == STRING
    input.Body.labels[_].deprecatedMarketplaceDealParty.seller.subAccountId == STRING
    input.Body.labels[_].label == STRING
    input.Body.lastUpdaterOrCommentorRole == STRING
    input.Body.name == STRING
    input.Body.negotiationId == STRING
    input.Body.originatorRole == STRING
    input.Body.privateAuctionId == STRING
    input.Body.proposalId == STRING
    input.Body.proposalState == STRING
    input.Body.revisionNumber == STRING
    input.Body.revisionTimeMs == STRING
    input.Body.seller.accountId == STRING
    input.Body.seller.subAccountId == STRING
    input.Body.sellerContacts[_].email == STRING
    input.Body.sellerContacts[_].name == STRING
    input.ReqMap.proposalId == STRING
    input.ReqMap.revisionNumber == STRING
    input.ReqMap.updateAction == enum_UpdateActionParameter[_]
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.proposals.search

valid {
    input.Qs.pqlQuery == STRING
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.proposals.setupcomplete

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

adexchangebuyer.proposals.update

enum_UpdateActionParameter := [ "accept", "cancel", "propose", "proposeAndAccept", "unknownAction", "updateNonTerms" ]

valid {
    input.Body.billedBuyer.accountId == STRING
    input.Body.buyer.accountId == STRING
    input.Body.buyerContacts[_].email == STRING
    input.Body.buyerContacts[_].name == STRING
    input.Body.buyerPrivateData.referenceId == STRING
    input.Body.buyerPrivateData.referencePayload == STRING
    input.Body.dbmAdvertiserIds[_] == STRING
    input.Body.hasBuyerSignedOff == BOOLEAN
    input.Body.hasSellerSignedOff == BOOLEAN
    input.Body.inventorySource == STRING
    input.Body.isRenegotiating == BOOLEAN
    input.Body.isSetupComplete == BOOLEAN
    input.Body.kind == STRING
    input.Body.labels[_].accountId == STRING
    input.Body.labels[_].createTimeMs == STRING
    input.Body.labels[_].deprecatedMarketplaceDealParty.buyer.accountId == STRING
    input.Body.labels[_].deprecatedMarketplaceDealParty.seller.accountId == STRING
    input.Body.labels[_].deprecatedMarketplaceDealParty.seller.subAccountId == STRING
    input.Body.labels[_].label == STRING
    input.Body.lastUpdaterOrCommentorRole == STRING
    input.Body.name == STRING
    input.Body.negotiationId == STRING
    input.Body.originatorRole == STRING
    input.Body.privateAuctionId == STRING
    input.Body.proposalId == STRING
    input.Body.proposalState == STRING
    input.Body.revisionNumber == STRING
    input.Body.revisionTimeMs == STRING
    input.Body.seller.accountId == STRING
    input.Body.seller.subAccountId == STRING
    input.Body.sellerContacts[_].email == STRING
    input.Body.sellerContacts[_].name == STRING
    input.ReqMap.proposalId == STRING
    input.ReqMap.revisionNumber == STRING
    input.ReqMap.updateAction == enum_UpdateActionParameter[_]
    input.ProviderMetadata.Region == STRING
}

adexchangebuyer.pubprofiles.list

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