MERCHANTAPI

merchantapi.accounts.autofeedSettings.getAutofeedSettings

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

merchantapi.accounts.autofeedSettings.updateAutofeedSettings

valid {
    input.Body.enableProducts == BOOLEAN
    input.Body.name == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.businessIdentity.getBusinessIdentity

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

merchantapi.accounts.businessIdentity.updateBusinessIdentity

enum_BusinessIdentityPromotionsConsent := [ "PROMOTIONS_CONSENT_UNSPECIFIED", "PROMOTIONS_CONSENT_GIVEN", "PROMOTIONS_CONSENT_DENIED" ]
enum_IdentityAttributeIdentityDeclaration := [ "IDENTITY_DECLARATION_UNSPECIFIED", "SELF_IDENTIFIES_AS", "DOES_NOT_SELF_IDENTIFY_AS" ]

valid {
    input.Body.blackOwned.identityDeclaration == enum_IdentityAttributeIdentityDeclaration[_]
    input.Body.latinoOwned.identityDeclaration == enum_IdentityAttributeIdentityDeclaration[_]
    input.Body.name == STRING
    input.Body.promotionsConsent == enum_BusinessIdentityPromotionsConsent[_]
    input.Body.smallBusiness.identityDeclaration == enum_IdentityAttributeIdentityDeclaration[_]
    input.Body.veteranOwned.identityDeclaration == enum_IdentityAttributeIdentityDeclaration[_]
    input.Body.womenOwned.identityDeclaration == enum_IdentityAttributeIdentityDeclaration[_]
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.businessInfo.getBusinessInfo

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

merchantapi.accounts.businessInfo.updateBusinessInfo

valid {
    input.Body.address.addressLines[_] == STRING
    input.Body.address.administrativeArea == STRING
    input.Body.address.languageCode == STRING
    input.Body.address.locality == STRING
    input.Body.address.organization == STRING
    input.Body.address.postalCode == STRING
    input.Body.address.recipients[_] == STRING
    input.Body.address.regionCode == STRING
    input.Body.address.revision == INTEGER
    input.Body.address.sortingCode == STRING
    input.Body.address.sublocality == STRING
    input.Body.customerService.email == STRING
    input.Body.customerService.phone.e164Number == STRING
    input.Body.customerService.phone.extension == STRING
    input.Body.customerService.phone.shortCode.number == STRING
    input.Body.customerService.phone.shortCode.regionCode == STRING
    input.Body.customerService.uri == STRING
    input.Body.koreanBusinessRegistrationNumber == STRING
    input.Body.name == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.conversionSources.create

enum_AttributionSettingsAttributionModel := [ "ATTRIBUTION_MODEL_UNSPECIFIED", "CROSS_CHANNEL_LAST_CLICK", "ADS_PREFERRED_LAST_CLICK", "CROSS_CHANNEL_DATA_DRIVEN", "CROSS_CHANNEL_FIRST_CLICK", "CROSS_CHANNEL_LINEAR", "CROSS_CHANNEL_POSITION_BASED", "CROSS_CHANNEL_TIME_DECAY" ]

valid {
    input.Body.googleAnalyticsLink.propertyId == STRING
    input.Body.merchantCenterDestination.attributionSettings.attributionLookbackWindowDays == INTEGER
    input.Body.merchantCenterDestination.attributionSettings.attributionModel == enum_AttributionSettingsAttributionModel[_]
    input.Body.merchantCenterDestination.attributionSettings.conversionType[_] == {}
    input.Body.merchantCenterDestination.currencyCode == STRING
    input.Body.merchantCenterDestination.displayName == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.conversionSources.delete

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

merchantapi.accounts.conversionSources.get

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

merchantapi.accounts.conversionSources.list

valid {
    input.ReqMap.parent == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.showDeleted == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.conversionSources.patch

enum_AttributionSettingsAttributionModel := [ "ATTRIBUTION_MODEL_UNSPECIFIED", "CROSS_CHANNEL_LAST_CLICK", "ADS_PREFERRED_LAST_CLICK", "CROSS_CHANNEL_DATA_DRIVEN", "CROSS_CHANNEL_FIRST_CLICK", "CROSS_CHANNEL_LINEAR", "CROSS_CHANNEL_POSITION_BASED", "CROSS_CHANNEL_TIME_DECAY" ]

valid {
    input.Body.googleAnalyticsLink.propertyId == STRING
    input.Body.merchantCenterDestination.attributionSettings.attributionLookbackWindowDays == INTEGER
    input.Body.merchantCenterDestination.attributionSettings.attributionModel == enum_AttributionSettingsAttributionModel[_]
    input.Body.merchantCenterDestination.attributionSettings.conversionType[_] == {}
    input.Body.merchantCenterDestination.currencyCode == STRING
    input.Body.merchantCenterDestination.displayName == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.conversionSources.undelete

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

merchantapi.accounts.createAndConfigure

enum_UserAccessRights := [ "ACCESS_RIGHT_UNSPECIFIED", "STANDARD", "ADMIN", "PERFORMANCE_REPORTING" ]

valid {
    input.Body.account.accountName == STRING
    input.Body.account.adultContent == BOOLEAN
    input.Body.account.languageCode == STRING
    input.Body.account.name == STRING
    input.Body.account.timeZone.id == STRING
    input.Body.account.timeZone.version == STRING
    input.Body.service[_].accountAggregation.STRING == STRING
    input.Body.service[_].provider == STRING
    input.Body.users[_].parent == STRING
    input.Body.users[_].user.accessRights[_] == enum_UserAccessRights[_]
    input.Body.users[_].user.name == STRING
    input.Body.users[_].userId == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.dataSources.create

enum_FetchSettingsDayOfWeek := [ "DAY_OF_WEEK_UNSPECIFIED", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ]
enum_FetchSettingsFrequency := [ "FREQUENCY_UNSPECIFIED", "FREQUENCY_DAILY", "FREQUENCY_WEEKLY", "FREQUENCY_MONTHLY" ]
enum_PrimaryProductDataSourceChannel := [ "CHANNEL_UNSPECIFIED", "ONLINE_PRODUCTS", "LOCAL_PRODUCTS", "PRODUCTS" ]

valid {
    input.Body.displayName == STRING
    input.Body.fileInput.fetchSettings.dayOfMonth == INTEGER
    input.Body.fileInput.fetchSettings.dayOfWeek == enum_FetchSettingsDayOfWeek[_]
    input.Body.fileInput.fetchSettings.enabled == BOOLEAN
    input.Body.fileInput.fetchSettings.fetchUri == STRING
    input.Body.fileInput.fetchSettings.frequency == enum_FetchSettingsFrequency[_]
    input.Body.fileInput.fetchSettings.password == STRING
    input.Body.fileInput.fetchSettings.timeOfDay.hours == INTEGER
    input.Body.fileInput.fetchSettings.timeOfDay.minutes == INTEGER
    input.Body.fileInput.fetchSettings.timeOfDay.nanos == INTEGER
    input.Body.fileInput.fetchSettings.timeOfDay.seconds == INTEGER
    input.Body.fileInput.fetchSettings.timeZone == STRING
    input.Body.fileInput.fetchSettings.username == STRING
    input.Body.fileInput.fileName == STRING
    input.Body.localInventoryDataSource.contentLanguage == STRING
    input.Body.localInventoryDataSource.feedLabel == STRING
    input.Body.merchantReviewDataSource.STRING == STRING
    input.Body.name == STRING
    input.Body.primaryProductDataSource.channel == enum_PrimaryProductDataSourceChannel[_]
    input.Body.primaryProductDataSource.contentLanguage == STRING
    input.Body.primaryProductDataSource.countries[_] == STRING
    input.Body.primaryProductDataSource.defaultRule.takeFromDataSources[_].primaryDataSourceName == STRING
    input.Body.primaryProductDataSource.defaultRule.takeFromDataSources[_].self == BOOLEAN
    input.Body.primaryProductDataSource.defaultRule.takeFromDataSources[_].supplementalDataSourceName == STRING
    input.Body.primaryProductDataSource.feedLabel == STRING
    input.Body.productReviewDataSource.STRING == STRING
    input.Body.promotionDataSource.contentLanguage == STRING
    input.Body.promotionDataSource.targetCountry == STRING
    input.Body.regionalInventoryDataSource.contentLanguage == STRING
    input.Body.regionalInventoryDataSource.feedLabel == STRING
    input.Body.supplementalProductDataSource.contentLanguage == STRING
    input.Body.supplementalProductDataSource.feedLabel == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.dataSources.delete

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

merchantapi.accounts.dataSources.fetch

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

merchantapi.accounts.dataSources.fileUploads.get

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

merchantapi.accounts.dataSources.get

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

merchantapi.accounts.dataSources.list

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

merchantapi.accounts.dataSources.patch

enum_FetchSettingsDayOfWeek := [ "DAY_OF_WEEK_UNSPECIFIED", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ]
enum_FetchSettingsFrequency := [ "FREQUENCY_UNSPECIFIED", "FREQUENCY_DAILY", "FREQUENCY_WEEKLY", "FREQUENCY_MONTHLY" ]
enum_PrimaryProductDataSourceChannel := [ "CHANNEL_UNSPECIFIED", "ONLINE_PRODUCTS", "LOCAL_PRODUCTS", "PRODUCTS" ]

valid {
    input.Body.displayName == STRING
    input.Body.fileInput.fetchSettings.dayOfMonth == INTEGER
    input.Body.fileInput.fetchSettings.dayOfWeek == enum_FetchSettingsDayOfWeek[_]
    input.Body.fileInput.fetchSettings.enabled == BOOLEAN
    input.Body.fileInput.fetchSettings.fetchUri == STRING
    input.Body.fileInput.fetchSettings.frequency == enum_FetchSettingsFrequency[_]
    input.Body.fileInput.fetchSettings.password == STRING
    input.Body.fileInput.fetchSettings.timeOfDay.hours == INTEGER
    input.Body.fileInput.fetchSettings.timeOfDay.minutes == INTEGER
    input.Body.fileInput.fetchSettings.timeOfDay.nanos == INTEGER
    input.Body.fileInput.fetchSettings.timeOfDay.seconds == INTEGER
    input.Body.fileInput.fetchSettings.timeZone == STRING
    input.Body.fileInput.fetchSettings.username == STRING
    input.Body.fileInput.fileName == STRING
    input.Body.localInventoryDataSource.contentLanguage == STRING
    input.Body.localInventoryDataSource.feedLabel == STRING
    input.Body.merchantReviewDataSource.STRING == STRING
    input.Body.name == STRING
    input.Body.primaryProductDataSource.channel == enum_PrimaryProductDataSourceChannel[_]
    input.Body.primaryProductDataSource.contentLanguage == STRING
    input.Body.primaryProductDataSource.countries[_] == STRING
    input.Body.primaryProductDataSource.defaultRule.takeFromDataSources[_].primaryDataSourceName == STRING
    input.Body.primaryProductDataSource.defaultRule.takeFromDataSources[_].self == BOOLEAN
    input.Body.primaryProductDataSource.defaultRule.takeFromDataSources[_].supplementalDataSourceName == STRING
    input.Body.primaryProductDataSource.feedLabel == STRING
    input.Body.productReviewDataSource.STRING == STRING
    input.Body.promotionDataSource.contentLanguage == STRING
    input.Body.promotionDataSource.targetCountry == STRING
    input.Body.regionalInventoryDataSource.contentLanguage == STRING
    input.Body.regionalInventoryDataSource.feedLabel == STRING
    input.Body.supplementalProductDataSource.contentLanguage == STRING
    input.Body.supplementalProductDataSource.feedLabel == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.delete

valid {
    input.ReqMap.name == STRING
    input.Qs.force == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.emailPreferences.getEmailPreferences

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

merchantapi.accounts.emailPreferences.updateEmailPreferences

enum_EmailPreferencesNewsAndTips := [ "OPT_IN_STATE_UNSPECIFIED", "OPTED_OUT", "OPTED_IN", "UNCONFIRMED" ]

valid {
    input.Body.name == STRING
    input.Body.newsAndTips == enum_EmailPreferencesNewsAndTips[_]
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.get

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

merchantapi.accounts.homepage.claim

valid {
    input.Body.overwrite == BOOLEAN
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.homepage.getHomepage

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

merchantapi.accounts.homepage.unclaim

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

merchantapi.accounts.homepage.updateHomepage

valid {
    input.Body.name == STRING
    input.Body.uri == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.issues.list

valid {
    input.ReqMap.parent == STRING
    input.Qs.languageCode == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.timeZone == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.lfpInventories.insert

valid {
    input.Body.availability == STRING
    input.Body.collectionTime == STRING
    input.Body.contentLanguage == STRING
    input.Body.feedLabel == STRING
    input.Body.gtin == STRING
    input.Body.offerId == STRING
    input.Body.pickupMethod == STRING
    input.Body.pickupSla == STRING
    input.Body.price.amountMicros == STRING
    input.Body.price.currencyCode == STRING
    input.Body.quantity == STRING
    input.Body.regionCode == STRING
    input.Body.storeCode == STRING
    input.Body.targetAccount == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.lfpSales.insert

valid {
    input.Body.contentLanguage == STRING
    input.Body.feedLabel == STRING
    input.Body.gtin == STRING
    input.Body.offerId == STRING
    input.Body.price.amountMicros == STRING
    input.Body.price.currencyCode == STRING
    input.Body.quantity == STRING
    input.Body.regionCode == STRING
    input.Body.saleTime == STRING
    input.Body.storeCode == STRING
    input.Body.targetAccount == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.lfpStores.delete

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

merchantapi.accounts.lfpStores.get

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

merchantapi.accounts.lfpStores.insert

valid {
    input.Body.gcidCategory[_] == STRING
    input.Body.phoneNumber == STRING
    input.Body.placeId == STRING
    input.Body.storeAddress == STRING
    input.Body.storeCode == STRING
    input.Body.storeName == STRING
    input.Body.targetAccount == STRING
    input.Body.websiteUri == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.lfpStores.list

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

merchantapi.accounts.list

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

merchantapi.accounts.listSubaccounts

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

merchantapi.accounts.merchantReviews.delete

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

merchantapi.accounts.merchantReviews.get

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

merchantapi.accounts.merchantReviews.insert

enum_MerchantReviewAttributesCollectionMethod := [ "COLLECTION_METHOD_UNSPECIFIED", "MERCHANT_UNSOLICITED", "POINT_OF_SALE", "AFTER_FULFILLMENT" ]

valid {
    input.Body.attributes.collectionMethod == enum_MerchantReviewAttributesCollectionMethod[_]
    input.Body.attributes.content == STRING
    input.Body.attributes.isAnonymous == BOOLEAN
    input.Body.attributes.maxRating == STRING
    input.Body.attributes.merchantDisplayName == STRING
    input.Body.attributes.merchantId == STRING
    input.Body.attributes.merchantLink == STRING
    input.Body.attributes.merchantRatingLink == STRING
    input.Body.attributes.minRating == STRING
    input.Body.attributes.rating == NUMBER
    input.Body.attributes.reviewCountry == STRING
    input.Body.attributes.reviewLanguage == STRING
    input.Body.attributes.reviewTime == STRING
    input.Body.attributes.reviewerId == STRING
    input.Body.attributes.reviewerUsername == STRING
    input.Body.attributes.title == STRING
    input.Body.customAttributes[_].groupValues[_] == NESTED
    input.Body.customAttributes[_].name == STRING
    input.Body.customAttributes[_].value == STRING
    input.Body.merchantReviewId == STRING
    input.Body.name == STRING
    input.ReqMap.parent == STRING
    input.Qs.dataSource == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.merchantReviews.list

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

merchantapi.accounts.notificationsubscriptions.create

enum_NotificationSubscriptionRegisteredEvent := [ "NOTIFICATION_EVENT_TYPE_UNSPECIFIED", "PRODUCT_STATUS_CHANGE" ]

valid {
    input.Body.allManagedAccounts == BOOLEAN
    input.Body.callBackUri == STRING
    input.Body.registeredEvent == enum_NotificationSubscriptionRegisteredEvent[_]
    input.Body.targetAccount == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.notificationsubscriptions.delete

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

merchantapi.accounts.notificationsubscriptions.get

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

merchantapi.accounts.notificationsubscriptions.list

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

merchantapi.accounts.notificationsubscriptions.patch

enum_NotificationSubscriptionRegisteredEvent := [ "NOTIFICATION_EVENT_TYPE_UNSPECIFIED", "PRODUCT_STATUS_CHANGE" ]

valid {
    input.Body.allManagedAccounts == BOOLEAN
    input.Body.callBackUri == STRING
    input.Body.registeredEvent == enum_NotificationSubscriptionRegisteredEvent[_]
    input.Body.targetAccount == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.onlineReturnPolicies.get

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

merchantapi.accounts.onlineReturnPolicies.list

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

merchantapi.accounts.patch

valid {
    input.Body.accountName == STRING
    input.Body.adultContent == BOOLEAN
    input.Body.languageCode == STRING
    input.Body.name == STRING
    input.Body.timeZone.id == STRING
    input.Body.timeZone.version == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.productInputs.delete

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

merchantapi.accounts.productInputs.insert

enum_ProductInputChannel := [ "CHANNEL_ENUM_UNSPECIFIED", "ONLINE", "LOCAL" ]
enum_SubscriptionCostPeriod := [ "SUBSCRIPTION_PERIOD_UNSPECIFIED", "MONTH", "YEAR" ]

valid {
    input.Body.attributes.additionalImageLinks[_] == STRING
    input.Body.attributes.adsGrouping == STRING
    input.Body.attributes.adsLabels[_] == STRING
    input.Body.attributes.adsRedirect == STRING
    input.Body.attributes.adult == BOOLEAN
    input.Body.attributes.ageGroup == STRING
    input.Body.attributes.autoPricingMinPrice.amountMicros == STRING
    input.Body.attributes.autoPricingMinPrice.currencyCode == STRING
    input.Body.attributes.availability == STRING
    input.Body.attributes.availabilityDate == STRING
    input.Body.attributes.brand == STRING
    input.Body.attributes.canonicalLink == STRING
    input.Body.attributes.certifications[_].certificationAuthority == STRING
    input.Body.attributes.certifications[_].certificationCode == STRING
    input.Body.attributes.certifications[_].certificationName == STRING
    input.Body.attributes.certifications[_].certificationValue == STRING
    input.Body.attributes.cloudExportAdditionalProperties[_].boolValue == BOOLEAN
    input.Body.attributes.cloudExportAdditionalProperties[_].floatValue[_] == NUMBER
    input.Body.attributes.cloudExportAdditionalProperties[_].intValue[_] == STRING
    input.Body.attributes.cloudExportAdditionalProperties[_].maxValue == NUMBER
    input.Body.attributes.cloudExportAdditionalProperties[_].minValue == NUMBER
    input.Body.attributes.cloudExportAdditionalProperties[_].propertyName == STRING
    input.Body.attributes.cloudExportAdditionalProperties[_].textValue[_] == STRING
    input.Body.attributes.cloudExportAdditionalProperties[_].unitCode == STRING
    input.Body.attributes.color == STRING
    input.Body.attributes.condition == STRING
    input.Body.attributes.costOfGoodsSold.amountMicros == STRING
    input.Body.attributes.costOfGoodsSold.currencyCode == STRING
    input.Body.attributes.customLabel0 == STRING
    input.Body.attributes.customLabel1 == STRING
    input.Body.attributes.customLabel2 == STRING
    input.Body.attributes.customLabel3 == STRING
    input.Body.attributes.customLabel4 == STRING
    input.Body.attributes.description == STRING
    input.Body.attributes.disclosureDate == STRING
    input.Body.attributes.displayAdsId == STRING
    input.Body.attributes.displayAdsLink == STRING
    input.Body.attributes.displayAdsSimilarIds[_] == STRING
    input.Body.attributes.displayAdsTitle == STRING
    input.Body.attributes.displayAdsValue == NUMBER
    input.Body.attributes.energyEfficiencyClass == STRING
    input.Body.attributes.excludedDestinations[_] == STRING
    input.Body.attributes.expirationDate == STRING
    input.Body.attributes.externalSellerId == STRING
    input.Body.attributes.freeShippingThreshold[_].country == STRING
    input.Body.attributes.freeShippingThreshold[_].priceThreshold.amountMicros == STRING
    input.Body.attributes.freeShippingThreshold[_].priceThreshold.currencyCode == STRING
    input.Body.attributes.gender == STRING
    input.Body.attributes.googleProductCategory == STRING
    input.Body.attributes.gtin[_] == STRING
    input.Body.attributes.identifierExists == BOOLEAN
    input.Body.attributes.imageLink == STRING
    input.Body.attributes.includedDestinations[_] == STRING
    input.Body.attributes.installment.amount.amountMicros == STRING
    input.Body.attributes.installment.amount.currencyCode == STRING
    input.Body.attributes.installment.creditType == STRING
    input.Body.attributes.installment.downpayment.amountMicros == STRING
    input.Body.attributes.installment.downpayment.currencyCode == STRING
    input.Body.attributes.installment.months == STRING
    input.Body.attributes.isBundle == BOOLEAN
    input.Body.attributes.itemGroupId == STRING
    input.Body.attributes.lifestyleImageLinks[_] == STRING
    input.Body.attributes.link == STRING
    input.Body.attributes.linkTemplate == STRING
    input.Body.attributes.loyaltyPoints.name == STRING
    input.Body.attributes.loyaltyPoints.pointsValue == STRING
    input.Body.attributes.loyaltyPoints.ratio == NUMBER
    input.Body.attributes.loyaltyPrograms[_].cashbackForFutureUse.amountMicros == STRING
    input.Body.attributes.loyaltyPrograms[_].cashbackForFutureUse.currencyCode == STRING
    input.Body.attributes.loyaltyPrograms[_].loyaltyPoints == STRING
    input.Body.attributes.loyaltyPrograms[_].memberPriceEffectiveDate.endTime == STRING
    input.Body.attributes.loyaltyPrograms[_].memberPriceEffectiveDate.startTime == STRING
    input.Body.attributes.loyaltyPrograms[_].price.amountMicros == STRING
    input.Body.attributes.loyaltyPrograms[_].price.currencyCode == STRING
    input.Body.attributes.loyaltyPrograms[_].programLabel == STRING
    input.Body.attributes.loyaltyPrograms[_].shippingLabel == STRING
    input.Body.attributes.loyaltyPrograms[_].tierLabel == STRING
    input.Body.attributes.material == STRING
    input.Body.attributes.maxEnergyEfficiencyClass == STRING
    input.Body.attributes.maxHandlingTime == STRING
    input.Body.attributes.minEnergyEfficiencyClass == STRING
    input.Body.attributes.minHandlingTime == STRING
    input.Body.attributes.mobileLink == STRING
    input.Body.attributes.mobileLinkTemplate == STRING
    input.Body.attributes.mpn == STRING
    input.Body.attributes.multipack == STRING
    input.Body.attributes.pattern == STRING
    input.Body.attributes.pause == STRING
    input.Body.attributes.pickupMethod == STRING
    input.Body.attributes.pickupSla == STRING
    input.Body.attributes.price.amountMicros == STRING
    input.Body.attributes.price.currencyCode == STRING
    input.Body.attributes.productDetails[_].attributeName == STRING
    input.Body.attributes.productDetails[_].attributeValue == STRING
    input.Body.attributes.productDetails[_].sectionName == STRING
    input.Body.attributes.productHeight.unit == STRING
    input.Body.attributes.productHeight.value == NUMBER
    input.Body.attributes.productHighlights[_] == STRING
    input.Body.attributes.productLength.unit == STRING
    input.Body.attributes.productLength.value == NUMBER
    input.Body.attributes.productTypes[_] == STRING
    input.Body.attributes.productWeight.unit == STRING
    input.Body.attributes.productWeight.value == NUMBER
    input.Body.attributes.productWidth.unit == STRING
    input.Body.attributes.productWidth.value == NUMBER
    input.Body.attributes.promotionIds[_] == STRING
    input.Body.attributes.salePrice.amountMicros == STRING
    input.Body.attributes.salePrice.currencyCode == STRING
    input.Body.attributes.salePriceEffectiveDate.endTime == STRING
    input.Body.attributes.salePriceEffectiveDate.startTime == STRING
    input.Body.attributes.sellOnGoogleQuantity == STRING
    input.Body.attributes.shipping[_].country == STRING
    input.Body.attributes.shipping[_].locationGroupName == STRING
    input.Body.attributes.shipping[_].locationId == STRING
    input.Body.attributes.shipping[_].maxHandlingTime == STRING
    input.Body.attributes.shipping[_].maxTransitTime == STRING
    input.Body.attributes.shipping[_].minHandlingTime == STRING
    input.Body.attributes.shipping[_].minTransitTime == STRING
    input.Body.attributes.shipping[_].postalCode == STRING
    input.Body.attributes.shipping[_].price.amountMicros == STRING
    input.Body.attributes.shipping[_].price.currencyCode == STRING
    input.Body.attributes.shipping[_].region == STRING
    input.Body.attributes.shipping[_].service == STRING
    input.Body.attributes.shippingHeight.unit == STRING
    input.Body.attributes.shippingHeight.value == NUMBER
    input.Body.attributes.shippingLabel == STRING
    input.Body.attributes.shippingLength.unit == STRING
    input.Body.attributes.shippingLength.value == NUMBER
    input.Body.attributes.shippingWeight.unit == STRING
    input.Body.attributes.shippingWeight.value == NUMBER
    input.Body.attributes.shippingWidth.unit == STRING
    input.Body.attributes.shippingWidth.value == NUMBER
    input.Body.attributes.shoppingAdsExcludedCountries[_] == STRING
    input.Body.attributes.size == STRING
    input.Body.attributes.sizeSystem == STRING
    input.Body.attributes.sizeTypes[_] == STRING
    input.Body.attributes.structuredDescription.content == STRING
    input.Body.attributes.structuredDescription.digitalSourceType == STRING
    input.Body.attributes.structuredTitle.content == STRING
    input.Body.attributes.structuredTitle.digitalSourceType == STRING
    input.Body.attributes.subscriptionCost.amount.amountMicros == STRING
    input.Body.attributes.subscriptionCost.amount.currencyCode == STRING
    input.Body.attributes.subscriptionCost.period == enum_SubscriptionCostPeriod[_]
    input.Body.attributes.subscriptionCost.periodLength == STRING
    input.Body.attributes.taxCategory == STRING
    input.Body.attributes.taxes[_].country == STRING
    input.Body.attributes.taxes[_].locationId == STRING
    input.Body.attributes.taxes[_].postalCode == STRING
    input.Body.attributes.taxes[_].rate == NUMBER
    input.Body.attributes.taxes[_].region == STRING
    input.Body.attributes.taxes[_].taxShip == BOOLEAN
    input.Body.attributes.title == STRING
    input.Body.attributes.transitTimeLabel == STRING
    input.Body.attributes.unitPricingBaseMeasure.unit == STRING
    input.Body.attributes.unitPricingBaseMeasure.value == STRING
    input.Body.attributes.unitPricingMeasure.unit == STRING
    input.Body.attributes.unitPricingMeasure.value == NUMBER
    input.Body.attributes.virtualModelLink == STRING
    input.Body.channel == enum_ProductInputChannel[_]
    input.Body.contentLanguage == STRING
    input.Body.customAttributes[_].groupValues[_] == NESTED
    input.Body.customAttributes[_].name == STRING
    input.Body.customAttributes[_].value == STRING
    input.Body.feedLabel == STRING
    input.Body.name == STRING
    input.Body.offerId == STRING
    input.Body.versionNumber == STRING
    input.ReqMap.parent == STRING
    input.Qs.dataSource == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.productReviews.delete

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

merchantapi.accounts.productReviews.get

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

merchantapi.accounts.productReviews.insert

enum_ProductReviewAttributesCollectionMethod := [ "COLLECTION_METHOD_UNSPECIFIED", "UNSOLICITED", "POST_FULFILLMENT" ]
enum_ReviewLinkType := [ "TYPE_UNSPECIFIED", "SINGLETON", "GROUP" ]

valid {
    input.Body.attributes.aggregatorName == STRING
    input.Body.attributes.asins[_] == STRING
    input.Body.attributes.brands[_] == STRING
    input.Body.attributes.collectionMethod == enum_ProductReviewAttributesCollectionMethod[_]
    input.Body.attributes.cons[_] == STRING
    input.Body.attributes.content == STRING
    input.Body.attributes.gtins[_] == STRING
    input.Body.attributes.isSpam == BOOLEAN
    input.Body.attributes.maxRating == STRING
    input.Body.attributes.minRating == STRING
    input.Body.attributes.mpns[_] == STRING
    input.Body.attributes.productLinks[_] == STRING
    input.Body.attributes.productNames[_] == STRING
    input.Body.attributes.pros[_] == STRING
    input.Body.attributes.publisherFavicon == STRING
    input.Body.attributes.publisherName == STRING
    input.Body.attributes.rating == NUMBER
    input.Body.attributes.reviewCountry == STRING
    input.Body.attributes.reviewLanguage == STRING
    input.Body.attributes.reviewLink.link == STRING
    input.Body.attributes.reviewLink.type == enum_ReviewLinkType[_]
    input.Body.attributes.reviewTime == STRING
    input.Body.attributes.reviewerId == STRING
    input.Body.attributes.reviewerImageLinks[_] == STRING
    input.Body.attributes.reviewerIsAnonymous == BOOLEAN
    input.Body.attributes.reviewerUsername == STRING
    input.Body.attributes.skus[_] == STRING
    input.Body.attributes.subclientName == STRING
    input.Body.attributes.title == STRING
    input.Body.attributes.transactionId == STRING
    input.Body.customAttributes[_].groupValues[_] == NESTED
    input.Body.customAttributes[_].name == STRING
    input.Body.customAttributes[_].value == STRING
    input.Body.name == STRING
    input.Body.productReviewId == STRING
    input.ReqMap.parent == STRING
    input.Qs.dataSource == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.productReviews.list

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

merchantapi.accounts.products.get

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

merchantapi.accounts.products.list

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

merchantapi.accounts.products.localInventories.delete

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

merchantapi.accounts.products.localInventories.insert

valid {
    input.Body.availability == STRING
    input.Body.customAttributes[_].groupValues[_] == NESTED
    input.Body.customAttributes[_].name == STRING
    input.Body.customAttributes[_].value == STRING
    input.Body.instoreProductLocation == STRING
    input.Body.pickupMethod == STRING
    input.Body.pickupSla == STRING
    input.Body.price.amountMicros == STRING
    input.Body.price.currencyCode == STRING
    input.Body.quantity == STRING
    input.Body.salePrice.amountMicros == STRING
    input.Body.salePrice.currencyCode == STRING
    input.Body.salePriceEffectiveDate.endTime == STRING
    input.Body.salePriceEffectiveDate.startTime == STRING
    input.Body.storeCode == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.products.localInventories.list

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

merchantapi.accounts.products.regionalInventories.delete

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

merchantapi.accounts.products.regionalInventories.insert

valid {
    input.Body.availability == STRING
    input.Body.customAttributes[_].groupValues[_] == NESTED
    input.Body.customAttributes[_].name == STRING
    input.Body.customAttributes[_].value == STRING
    input.Body.price.amountMicros == STRING
    input.Body.price.currencyCode == STRING
    input.Body.region == STRING
    input.Body.salePrice.amountMicros == STRING
    input.Body.salePrice.currencyCode == STRING
    input.Body.salePriceEffectiveDate.endTime == STRING
    input.Body.salePriceEffectiveDate.startTime == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.products.regionalInventories.list

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

merchantapi.accounts.programs.disable

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

merchantapi.accounts.programs.enable

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

merchantapi.accounts.programs.get

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

merchantapi.accounts.programs.list

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

merchantapi.accounts.promotions.get

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

merchantapi.accounts.promotions.insert

enum_AttributesCouponValueType := [ "COUPON_VALUE_TYPE_UNSPECIFIED", "MONEY_OFF", "PERCENT_OFF", "BUY_M_GET_N_MONEY_OFF", "BUY_M_GET_N_PERCENT_OFF", "BUY_M_GET_MONEY_OFF", "BUY_M_GET_PERCENT_OFF", "FREE_GIFT", "FREE_GIFT_WITH_VALUE", "FREE_GIFT_WITH_ITEM_ID", "FREE_SHIPPING_STANDARD", "FREE_SHIPPING_OVERNIGHT", "FREE_SHIPPING_TWO_DAY" ]
enum_AttributesOfferType := [ "OFFER_TYPE_UNSPECIFIED", "NO_CODE", "GENERIC_CODE" ]
enum_AttributesProductApplicability := [ "PRODUCT_APPLICABILITY_UNSPECIFIED", "ALL_PRODUCTS", "SPECIFIC_PRODUCTS" ]
enum_AttributesPromotionDestinations := [ "DESTINATION_ENUM_UNSPECIFIED", "SHOPPING_ADS", "DISPLAY_ADS", "LOCAL_INVENTORY_ADS", "FREE_LISTINGS", "FREE_LOCAL_LISTINGS", "YOUTUBE_SHOPPING", "YOUTUBE_SHOPPING_CHECKOUT", "YOUTUBE_AFFILIATE", "FREE_VEHICLE_LISTINGS", "VEHICLE_ADS", "CLOUD_RETAIL", "LOCAL_CLOUD_RETAIL" ]
enum_AttributesStoreApplicability := [ "STORE_APPLICABILITY_UNSPECIFIED", "ALL_STORES", "SPECIFIC_STORES" ]
enum_PromotionRedemptionChannel := [ "REDEMPTION_CHANNEL_UNSPECIFIED", "IN_STORE", "ONLINE" ]

valid {
    input.Body.dataSource == STRING
    input.Body.promotion.attributes.brandExclusion[_] == STRING
    input.Body.promotion.attributes.brandInclusion[_] == STRING
    input.Body.promotion.attributes.couponValueType == enum_AttributesCouponValueType[_]
    input.Body.promotion.attributes.freeGiftDescription == STRING
    input.Body.promotion.attributes.freeGiftItemId == STRING
    input.Body.promotion.attributes.freeGiftValue.amountMicros == STRING
    input.Body.promotion.attributes.freeGiftValue.currencyCode == STRING
    input.Body.promotion.attributes.genericRedemptionCode == STRING
    input.Body.promotion.attributes.getThisQuantityDiscounted == STRING
    input.Body.promotion.attributes.itemGroupIdExclusion[_] == STRING
    input.Body.promotion.attributes.itemGroupIdInclusion[_] == STRING
    input.Body.promotion.attributes.itemIdExclusion[_] == STRING
    input.Body.promotion.attributes.itemIdInclusion[_] == STRING
    input.Body.promotion.attributes.limitQuantity == STRING
    input.Body.promotion.attributes.limitValue.amountMicros == STRING
    input.Body.promotion.attributes.limitValue.currencyCode == STRING
    input.Body.promotion.attributes.longTitle == STRING
    input.Body.promotion.attributes.minimumPurchaseAmount.amountMicros == STRING
    input.Body.promotion.attributes.minimumPurchaseAmount.currencyCode == STRING
    input.Body.promotion.attributes.minimumPurchaseQuantity == STRING
    input.Body.promotion.attributes.moneyOffAmount.amountMicros == STRING
    input.Body.promotion.attributes.moneyOffAmount.currencyCode == STRING
    input.Body.promotion.attributes.offerType == enum_AttributesOfferType[_]
    input.Body.promotion.attributes.percentOff == STRING
    input.Body.promotion.attributes.productApplicability == enum_AttributesProductApplicability[_]
    input.Body.promotion.attributes.productTypeExclusion[_] == STRING
    input.Body.promotion.attributes.productTypeInclusion[_] == STRING
    input.Body.promotion.attributes.promotionDestinations[_] == enum_AttributesPromotionDestinations[_]
    input.Body.promotion.attributes.promotionDisplayTimePeriod.endTime == STRING
    input.Body.promotion.attributes.promotionDisplayTimePeriod.startTime == STRING
    input.Body.promotion.attributes.promotionEffectiveTimePeriod.endTime == STRING
    input.Body.promotion.attributes.promotionEffectiveTimePeriod.startTime == STRING
    input.Body.promotion.attributes.promotionUrl == STRING
    input.Body.promotion.attributes.storeApplicability == enum_AttributesStoreApplicability[_]
    input.Body.promotion.attributes.storeCodesExclusion[_] == STRING
    input.Body.promotion.attributes.storeCodesInclusion[_] == STRING
    input.Body.promotion.contentLanguage == STRING
    input.Body.promotion.customAttributes[_].groupValues[_] == NESTED
    input.Body.promotion.customAttributes[_].name == STRING
    input.Body.promotion.customAttributes[_].value == STRING
    input.Body.promotion.name == STRING
    input.Body.promotion.promotionId == STRING
    input.Body.promotion.redemptionChannel[_] == enum_PromotionRedemptionChannel[_]
    input.Body.promotion.targetCountry == STRING
    input.Body.promotion.versionNumber == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.promotions.list

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

merchantapi.accounts.quotas.list

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

merchantapi.accounts.regions.create

valid {
    input.Body.displayName == STRING
    input.Body.geotargetArea.geotargetCriteriaIds[_] == STRING
    input.Body.name == STRING
    input.Body.postalCodeArea.postalCodes[_].begin == STRING
    input.Body.postalCodeArea.postalCodes[_].end == STRING
    input.Body.postalCodeArea.regionCode == STRING
    input.ReqMap.parent == STRING
    input.Qs.regionId == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.regions.delete

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

merchantapi.accounts.regions.get

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

merchantapi.accounts.regions.list

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

merchantapi.accounts.regions.patch

valid {
    input.Body.displayName == STRING
    input.Body.geotargetArea.geotargetCriteriaIds[_] == STRING
    input.Body.name == STRING
    input.Body.postalCodeArea.postalCodes[_].begin == STRING
    input.Body.postalCodeArea.postalCodes[_].end == STRING
    input.Body.postalCodeArea.regionCode == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.reports.search

valid {
    input.Body.pageSize == INTEGER
    input.Body.pageToken == STRING
    input.Body.query == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.shippingSettings.getShippingSettings

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

merchantapi.accounts.shippingSettings.insert

enum_BusinessDayConfigBusinessDays := [ "WEEKDAY_UNSPECIFIED", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ]
enum_DistanceUnit := [ "UNIT_UNSPECIFIED", "MILES", "KILOMETERS" ]
enum_ServiceShipmentType := [ "SHIPMENT_TYPE_UNSPECIFIED", "DELIVERY", "LOCAL_DELIVERY", "COLLECTION_POINT" ]
enum_StoreConfigStoreServiceType := [ "STORE_SERVICE_TYPE_UNSPECIFIED", "ALL_STORES", "SELECTED_STORES" ]
enum_WeightUnit := [ "WEIGHT_UNIT_UNSPECIFIED", "POUND", "KILOGRAM" ]

valid {
    input.Body.etag == STRING
    input.Body.name == STRING
    input.Body.services[_].active == BOOLEAN
    input.Body.services[_].currencyCode == STRING
    input.Body.services[_].deliveryCountries[_] == STRING
    input.Body.services[_].deliveryTime.cutoffTime.hour == INTEGER
    input.Body.services[_].deliveryTime.cutoffTime.minute == INTEGER
    input.Body.services[_].deliveryTime.cutoffTime.timeZone == STRING
    input.Body.services[_].deliveryTime.handlingBusinessDayConfig.businessDays[_] == enum_BusinessDayConfigBusinessDays[_]
    input.Body.services[_].deliveryTime.maxHandlingDays == INTEGER
    input.Body.services[_].deliveryTime.maxTransitDays == INTEGER
    input.Body.services[_].deliveryTime.minHandlingDays == INTEGER
    input.Body.services[_].deliveryTime.minTransitDays == INTEGER
    input.Body.services[_].deliveryTime.transitBusinessDayConfig.businessDays[_] == enum_BusinessDayConfigBusinessDays[_]
    input.Body.services[_].deliveryTime.transitTimeTable.postalCodeGroupNames[_] == STRING
    input.Body.services[_].deliveryTime.transitTimeTable.rows[_].values[_].maxTransitDays == INTEGER
    input.Body.services[_].deliveryTime.transitTimeTable.rows[_].values[_].minTransitDays == INTEGER
    input.Body.services[_].deliveryTime.transitTimeTable.transitTimeLabels[_] == STRING
    input.Body.services[_].deliveryTime.warehouseBasedDeliveryTimes[_].carrier == STRING
    input.Body.services[_].deliveryTime.warehouseBasedDeliveryTimes[_].carrierService == STRING
    input.Body.services[_].deliveryTime.warehouseBasedDeliveryTimes[_].warehouse == STRING
    input.Body.services[_].loyaltyPrograms[_].loyaltyProgramTiers[_].tierLabel == STRING
    input.Body.services[_].loyaltyPrograms[_].programLabel == STRING
    input.Body.services[_].minimumOrderValue.amountMicros == STRING
    input.Body.services[_].minimumOrderValue.currencyCode == STRING
    input.Body.services[_].minimumOrderValueTable.storeCodeSetWithMovs[_].storeCodes[_] == STRING
    input.Body.services[_].minimumOrderValueTable.storeCodeSetWithMovs[_].value.amountMicros == STRING
    input.Body.services[_].minimumOrderValueTable.storeCodeSetWithMovs[_].value.currencyCode == STRING
    input.Body.services[_].rateGroups[_].applicableShippingLabels[_] == STRING
    input.Body.services[_].rateGroups[_].carrierRates[_].carrier == STRING
    input.Body.services[_].rateGroups[_].carrierRates[_].carrierService == STRING
    input.Body.services[_].rateGroups[_].carrierRates[_].flatAdjustment.amountMicros == STRING
    input.Body.services[_].rateGroups[_].carrierRates[_].flatAdjustment.currencyCode == STRING
    input.Body.services[_].rateGroups[_].carrierRates[_].name == STRING
    input.Body.services[_].rateGroups[_].carrierRates[_].originPostalCode == STRING
    input.Body.services[_].rateGroups[_].carrierRates[_].percentageAdjustment == STRING
    input.Body.services[_].rateGroups[_].mainTable.columnHeaders.locations[_].locationIds[_] == STRING
    input.Body.services[_].rateGroups[_].mainTable.columnHeaders.numberOfItems[_] == STRING
    input.Body.services[_].rateGroups[_].mainTable.columnHeaders.postalCodeGroupNames[_] == STRING
    input.Body.services[_].rateGroups[_].mainTable.columnHeaders.prices[_].amountMicros == STRING
    input.Body.services[_].rateGroups[_].mainTable.columnHeaders.prices[_].currencyCode == STRING
    input.Body.services[_].rateGroups[_].mainTable.columnHeaders.weights[_].amountMicros == STRING
    input.Body.services[_].rateGroups[_].mainTable.columnHeaders.weights[_].unit == enum_WeightUnit[_]
    input.Body.services[_].rateGroups[_].mainTable.name == STRING
    input.Body.services[_].rateGroups[_].mainTable.rowHeaders.locations[_].locationIds[_] == STRING
    input.Body.services[_].rateGroups[_].mainTable.rowHeaders.numberOfItems[_] == STRING
    input.Body.services[_].rateGroups[_].mainTable.rowHeaders.postalCodeGroupNames[_] == STRING
    input.Body.services[_].rateGroups[_].mainTable.rowHeaders.prices[_].amountMicros == STRING
    input.Body.services[_].rateGroups[_].mainTable.rowHeaders.prices[_].currencyCode == STRING
    input.Body.services[_].rateGroups[_].mainTable.rowHeaders.weights[_].amountMicros == STRING
    input.Body.services[_].rateGroups[_].mainTable.rowHeaders.weights[_].unit == enum_WeightUnit[_]
    input.Body.services[_].rateGroups[_].mainTable.rows[_].cells[_].carrierRate == STRING
    input.Body.services[_].rateGroups[_].mainTable.rows[_].cells[_].flatRate.amountMicros == STRING
    input.Body.services[_].rateGroups[_].mainTable.rows[_].cells[_].flatRate.currencyCode == STRING
    input.Body.services[_].rateGroups[_].mainTable.rows[_].cells[_].noShipping == BOOLEAN
    input.Body.services[_].rateGroups[_].mainTable.rows[_].cells[_].pricePercentage == STRING
    input.Body.services[_].rateGroups[_].mainTable.rows[_].cells[_].subtable == STRING
    input.Body.services[_].rateGroups[_].name == STRING
    input.Body.services[_].rateGroups[_].singleValue.carrierRate == STRING
    input.Body.services[_].rateGroups[_].singleValue.flatRate.amountMicros == STRING
    input.Body.services[_].rateGroups[_].singleValue.flatRate.currencyCode == STRING
    input.Body.services[_].rateGroups[_].singleValue.noShipping == BOOLEAN
    input.Body.services[_].rateGroups[_].singleValue.pricePercentage == STRING
    input.Body.services[_].rateGroups[_].singleValue.subtable == STRING
    input.Body.services[_].rateGroups[_].subtables[_].columnHeaders.locations[_].locationIds[_] == STRING
    input.Body.services[_].rateGroups[_].subtables[_].columnHeaders.numberOfItems[_] == STRING
    input.Body.services[_].rateGroups[_].subtables[_].columnHeaders.postalCodeGroupNames[_] == STRING
    input.Body.services[_].rateGroups[_].subtables[_].columnHeaders.prices[_].amountMicros == STRING
    input.Body.services[_].rateGroups[_].subtables[_].columnHeaders.prices[_].currencyCode == STRING
    input.Body.services[_].rateGroups[_].subtables[_].columnHeaders.weights[_].amountMicros == STRING
    input.Body.services[_].rateGroups[_].subtables[_].columnHeaders.weights[_].unit == enum_WeightUnit[_]
    input.Body.services[_].rateGroups[_].subtables[_].name == STRING
    input.Body.services[_].rateGroups[_].subtables[_].rowHeaders.locations[_].locationIds[_] == STRING
    input.Body.services[_].rateGroups[_].subtables[_].rowHeaders.numberOfItems[_] == STRING
    input.Body.services[_].rateGroups[_].subtables[_].rowHeaders.postalCodeGroupNames[_] == STRING
    input.Body.services[_].rateGroups[_].subtables[_].rowHeaders.prices[_].amountMicros == STRING
    input.Body.services[_].rateGroups[_].subtables[_].rowHeaders.prices[_].currencyCode == STRING
    input.Body.services[_].rateGroups[_].subtables[_].rowHeaders.weights[_].amountMicros == STRING
    input.Body.services[_].rateGroups[_].subtables[_].rowHeaders.weights[_].unit == enum_WeightUnit[_]
    input.Body.services[_].rateGroups[_].subtables[_].rows[_].cells[_].carrierRate == STRING
    input.Body.services[_].rateGroups[_].subtables[_].rows[_].cells[_].flatRate.amountMicros == STRING
    input.Body.services[_].rateGroups[_].subtables[_].rows[_].cells[_].flatRate.currencyCode == STRING
    input.Body.services[_].rateGroups[_].subtables[_].rows[_].cells[_].noShipping == BOOLEAN
    input.Body.services[_].rateGroups[_].subtables[_].rows[_].cells[_].pricePercentage == STRING
    input.Body.services[_].rateGroups[_].subtables[_].rows[_].cells[_].subtable == STRING
    input.Body.services[_].serviceName == STRING
    input.Body.services[_].shipmentType == enum_ServiceShipmentType[_]
    input.Body.services[_].storeConfig.cutoffConfig.localCutoffTime.hour == STRING
    input.Body.services[_].storeConfig.cutoffConfig.localCutoffTime.minute == STRING
    input.Body.services[_].storeConfig.cutoffConfig.noDeliveryPostCutoff == BOOLEAN
    input.Body.services[_].storeConfig.cutoffConfig.storeCloseOffsetHours == STRING
    input.Body.services[_].storeConfig.serviceRadius.unit == enum_DistanceUnit[_]
    input.Body.services[_].storeConfig.serviceRadius.value == STRING
    input.Body.services[_].storeConfig.storeCodes[_] == STRING
    input.Body.services[_].storeConfig.storeServiceType == enum_StoreConfigStoreServiceType[_]
    input.Body.warehouses[_].businessDayConfig.businessDays[_] == enum_BusinessDayConfigBusinessDays[_]
    input.Body.warehouses[_].cutoffTime.hour == INTEGER
    input.Body.warehouses[_].cutoffTime.minute == INTEGER
    input.Body.warehouses[_].handlingDays == STRING
    input.Body.warehouses[_].name == STRING
    input.Body.warehouses[_].shippingAddress.administrativeArea == STRING
    input.Body.warehouses[_].shippingAddress.city == STRING
    input.Body.warehouses[_].shippingAddress.postalCode == STRING
    input.Body.warehouses[_].shippingAddress.regionCode == STRING
    input.Body.warehouses[_].shippingAddress.streetAddress == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.termsOfServiceAgreementStates.get

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

merchantapi.accounts.termsOfServiceAgreementStates.retrieveForApplication

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

merchantapi.accounts.users.create

enum_UserAccessRights := [ "ACCESS_RIGHT_UNSPECIFIED", "STANDARD", "ADMIN", "PERFORMANCE_REPORTING" ]

valid {
    input.Body.accessRights[_] == enum_UserAccessRights[_]
    input.Body.name == STRING
    input.ReqMap.parent == STRING
    input.Qs.userId == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.users.delete

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

merchantapi.accounts.users.get

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

merchantapi.accounts.users.list

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

merchantapi.accounts.users.patch

enum_UserAccessRights := [ "ACCESS_RIGHT_UNSPECIFIED", "STANDARD", "ADMIN", "PERFORMANCE_REPORTING" ]

valid {
    input.Body.accessRights[_] == enum_UserAccessRights[_]
    input.Body.name == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.termsOfService.accept

valid {
    input.ReqMap.name == STRING
    input.Qs.account == STRING
    input.Qs.regionCode == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.termsOfService.get

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

merchantapi.termsOfService.retrieveLatest

enum_KindParameter := [ "TERMS_OF_SERVICE_KIND_UNSPECIFIED", "MERCHANT_CENTER" ]

valid {
    input.Qs.kind == enum_KindParameter[_]
    input.Qs.regionCode == STRING
    input.ProviderMetadata.Region == STRING
}