MERCHANTAPI

merchantapi.accounts.aggregateProductStatuses.list

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

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.automaticImprovements.getAutomaticImprovements

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

merchantapi.accounts.automaticImprovements.updateAutomaticImprovements

valid {
    input.Body.imageImprovements.accountImageImprovementsSettings.allowAutomaticImageImprovements == BOOLEAN
    input.Body.itemUpdates.accountItemUpdatesSettings.allowAvailabilityUpdates == BOOLEAN
    input.Body.itemUpdates.accountItemUpdatesSettings.allowConditionUpdates == BOOLEAN
    input.Body.itemUpdates.accountItemUpdatesSettings.allowPriceUpdates == BOOLEAN
    input.Body.itemUpdates.accountItemUpdatesSettings.allowStrictAvailabilityUpdates == BOOLEAN
    input.Body.name == STRING
    input.Body.shippingImprovements.allowShippingImprovements == BOOLEAN
    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", "READ_ONLY", "ADMIN", "PERFORMANCE_REPORTING", "API_DEVELOPER" ]

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.user[_].user.accessRights[_] == enum_UserAccessRights[_]
    input.Body.user[_].user.name == STRING
    input.Body.user[_].userId == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.dataSources.create

enum_DestinationDestination := [ "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_DestinationState := [ "STATE_UNSPECIFIED", "ENABLED", "DISABLED" ]
enum_FetchSettingsDayOfWeek := [ "DAY_OF_WEEK_UNSPECIFIED", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ]
enum_FetchSettingsFrequency := [ "FREQUENCY_UNSPECIFIED", "FREQUENCY_DAILY", "FREQUENCY_WEEKLY", "FREQUENCY_MONTHLY" ]

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.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.destinations[_].destination == enum_DestinationDestination[_]
    input.Body.primaryProductDataSource.destinations[_].state == enum_DestinationState[_]
    input.Body.primaryProductDataSource.feedLabel == STRING
    input.Body.primaryProductDataSource.legacyLocal == BOOLEAN
    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_DestinationDestination := [ "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_DestinationState := [ "STATE_UNSPECIFIED", "ENABLED", "DISABLED" ]
enum_FetchSettingsDayOfWeek := [ "DAY_OF_WEEK_UNSPECIFIED", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ]
enum_FetchSettingsFrequency := [ "FREQUENCY_UNSPECIFIED", "FREQUENCY_DAILY", "FREQUENCY_WEEKLY", "FREQUENCY_MONTHLY" ]

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.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.destinations[_].destination == enum_DestinationDestination[_]
    input.Body.primaryProductDataSource.destinations[_].state == enum_DestinationState[_]
    input.Body.primaryProductDataSource.feedLabel == STRING
    input.Body.primaryProductDataSource.legacyLocal == BOOLEAN
    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.developerRegistration.getDeveloperRegistration

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

merchantapi.accounts.developerRegistration.registerGcp

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

merchantapi.accounts.developerRegistration.unregisterGcp

valid {
    input.Body.STRING == STRING
    input.ReqMap.name == STRING
    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.gbpAccounts.linkGbpAccount

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

merchantapi.accounts.gbpAccounts.list

valid {
    input.ReqMap.parent == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == 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.lfpMerchantStates.get

valid {
    input.ReqMap.name == 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.customAttributes[_].groupValues[_] == NESTED
    input.Body.customAttributes[_].name == STRING
    input.Body.customAttributes[_].value == STRING
    input.Body.merchantReviewAttributes.collectionMethod == enum_MerchantReviewAttributesCollectionMethod[_]
    input.Body.merchantReviewAttributes.content == STRING
    input.Body.merchantReviewAttributes.isAnonymous == BOOLEAN
    input.Body.merchantReviewAttributes.maxRating == STRING
    input.Body.merchantReviewAttributes.merchantDisplayName == STRING
    input.Body.merchantReviewAttributes.merchantId == STRING
    input.Body.merchantReviewAttributes.merchantLink == STRING
    input.Body.merchantReviewAttributes.merchantRatingLink == STRING
    input.Body.merchantReviewAttributes.minRating == STRING
    input.Body.merchantReviewAttributes.rating == NUMBER
    input.Body.merchantReviewAttributes.reviewCountry == STRING
    input.Body.merchantReviewAttributes.reviewLanguage == STRING
    input.Body.merchantReviewAttributes.reviewTime == STRING
    input.Body.merchantReviewAttributes.reviewerId == STRING
    input.Body.merchantReviewAttributes.reviewerUsername == STRING
    input.Body.merchantReviewAttributes.title == 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.omnichannelSettings.create

enum_OmnichannelSettingLsfType := [ "LSF_TYPE_UNSPECIFIED", "GHLSF", "MHLSF_BASIC", "MHLSF_FULL" ]

valid {
    input.Body.about.uri == STRING
    input.Body.inStock.uri == STRING
    input.Body.inventoryVerification.contact == STRING
    input.Body.inventoryVerification.contactEmail == STRING
    input.Body.lsfType == enum_OmnichannelSettingLsfType[_]
    input.Body.name == STRING
    input.Body.odo.uri == STRING
    input.Body.pickup.uri == STRING
    input.Body.regionCode == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.omnichannelSettings.get

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

merchantapi.accounts.omnichannelSettings.lfpProviders.find

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

merchantapi.accounts.omnichannelSettings.lfpProviders.linkLfpProvider

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

merchantapi.accounts.omnichannelSettings.list

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

merchantapi.accounts.omnichannelSettings.patch

enum_OmnichannelSettingLsfType := [ "LSF_TYPE_UNSPECIFIED", "GHLSF", "MHLSF_BASIC", "MHLSF_FULL" ]

valid {
    input.Body.about.uri == STRING
    input.Body.inStock.uri == STRING
    input.Body.inventoryVerification.contact == STRING
    input.Body.inventoryVerification.contactEmail == STRING
    input.Body.lsfType == enum_OmnichannelSettingLsfType[_]
    input.Body.name == STRING
    input.Body.odo.uri == STRING
    input.Body.pickup.uri == STRING
    input.Body.regionCode == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.omnichannelSettings.requestInventoryVerification

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

merchantapi.accounts.onlineReturnPolicies.create

enum_OnlineReturnPolicyItemConditions := [ "ITEM_CONDITION_UNSPECIFIED", "NEW", "USED" ]
enum_OnlineReturnPolicyReturnLabelSource := [ "RETURN_LABEL_SOURCE_UNSPECIFIED", "DOWNLOAD_AND_PRINT", "IN_THE_PACKAGE", "CUSTOMER_RESPONSIBILITY" ]
enum_OnlineReturnPolicyReturnMethods := [ "RETURN_METHOD_UNSPECIFIED", "BY_MAIL", "IN_STORE", "AT_A_KIOSK" ]
enum_PolicyType := [ "TYPE_UNSPECIFIED", "NUMBER_OF_DAYS_AFTER_DELIVERY", "NO_RETURNS", "LIFETIME_RETURNS" ]
enum_ReturnShippingFeeType := [ "TYPE_UNSPECIFIED", "FIXED", "CUSTOMER_PAYING_ACTUAL_FEE" ]

valid {
    input.Body.acceptDefectiveOnly == BOOLEAN
    input.Body.acceptExchange == BOOLEAN
    input.Body.countries[_] == STRING
    input.Body.itemConditions[_] == enum_OnlineReturnPolicyItemConditions[_]
    input.Body.label == STRING
    input.Body.name == STRING
    input.Body.policy.days == STRING
    input.Body.policy.type == enum_PolicyType[_]
    input.Body.processRefundDays == INTEGER
    input.Body.restockingFee.fixedFee.amountMicros == STRING
    input.Body.restockingFee.fixedFee.currencyCode == STRING
    input.Body.restockingFee.microPercent == INTEGER
    input.Body.returnLabelSource == enum_OnlineReturnPolicyReturnLabelSource[_]
    input.Body.returnMethods[_] == enum_OnlineReturnPolicyReturnMethods[_]
    input.Body.returnPolicyUri == STRING
    input.Body.returnShippingFee.fixedFee.amountMicros == STRING
    input.Body.returnShippingFee.fixedFee.currencyCode == STRING
    input.Body.returnShippingFee.type == enum_ReturnShippingFeeType[_]
    input.Body.seasonalOverrides[_].endDate.day == INTEGER
    input.Body.seasonalOverrides[_].endDate.month == INTEGER
    input.Body.seasonalOverrides[_].endDate.year == INTEGER
    input.Body.seasonalOverrides[_].label == STRING
    input.Body.seasonalOverrides[_].returnDays == INTEGER
    input.Body.seasonalOverrides[_].returnUntilDate.day == INTEGER
    input.Body.seasonalOverrides[_].returnUntilDate.month == INTEGER
    input.Body.seasonalOverrides[_].returnUntilDate.year == INTEGER
    input.Body.seasonalOverrides[_].startDate.day == INTEGER
    input.Body.seasonalOverrides[_].startDate.month == INTEGER
    input.Body.seasonalOverrides[_].startDate.year == INTEGER
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.onlineReturnPolicies.delete

valid {
    input.ReqMap.name == 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.onlineReturnPolicies.patch

enum_OnlineReturnPolicyItemConditions := [ "ITEM_CONDITION_UNSPECIFIED", "NEW", "USED" ]
enum_OnlineReturnPolicyReturnLabelSource := [ "RETURN_LABEL_SOURCE_UNSPECIFIED", "DOWNLOAD_AND_PRINT", "IN_THE_PACKAGE", "CUSTOMER_RESPONSIBILITY" ]
enum_OnlineReturnPolicyReturnMethods := [ "RETURN_METHOD_UNSPECIFIED", "BY_MAIL", "IN_STORE", "AT_A_KIOSK" ]
enum_PolicyType := [ "TYPE_UNSPECIFIED", "NUMBER_OF_DAYS_AFTER_DELIVERY", "NO_RETURNS", "LIFETIME_RETURNS" ]
enum_ReturnShippingFeeType := [ "TYPE_UNSPECIFIED", "FIXED", "CUSTOMER_PAYING_ACTUAL_FEE" ]

valid {
    input.Body.acceptDefectiveOnly == BOOLEAN
    input.Body.acceptExchange == BOOLEAN
    input.Body.countries[_] == STRING
    input.Body.itemConditions[_] == enum_OnlineReturnPolicyItemConditions[_]
    input.Body.label == STRING
    input.Body.name == STRING
    input.Body.policy.days == STRING
    input.Body.policy.type == enum_PolicyType[_]
    input.Body.processRefundDays == INTEGER
    input.Body.restockingFee.fixedFee.amountMicros == STRING
    input.Body.restockingFee.fixedFee.currencyCode == STRING
    input.Body.restockingFee.microPercent == INTEGER
    input.Body.returnLabelSource == enum_OnlineReturnPolicyReturnLabelSource[_]
    input.Body.returnMethods[_] == enum_OnlineReturnPolicyReturnMethods[_]
    input.Body.returnPolicyUri == STRING
    input.Body.returnShippingFee.fixedFee.amountMicros == STRING
    input.Body.returnShippingFee.fixedFee.currencyCode == STRING
    input.Body.returnShippingFee.type == enum_ReturnShippingFeeType[_]
    input.Body.seasonalOverrides[_].endDate.day == INTEGER
    input.Body.seasonalOverrides[_].endDate.month == INTEGER
    input.Body.seasonalOverrides[_].endDate.year == INTEGER
    input.Body.seasonalOverrides[_].label == STRING
    input.Body.seasonalOverrides[_].returnDays == INTEGER
    input.Body.seasonalOverrides[_].returnUntilDate.day == INTEGER
    input.Body.seasonalOverrides[_].returnUntilDate.month == INTEGER
    input.Body.seasonalOverrides[_].returnUntilDate.year == INTEGER
    input.Body.seasonalOverrides[_].startDate.day == INTEGER
    input.Body.seasonalOverrides[_].startDate.month == INTEGER
    input.Body.seasonalOverrides[_].startDate.year == INTEGER
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.orderTrackingSignals.create

enum_ShippingInfoShippingStatus := [ "SHIPPING_STATE_UNSPECIFIED", "SHIPPED", "DELIVERED" ]

valid {
    input.Body.customerShippingFee.amountMicros == STRING
    input.Body.customerShippingFee.currencyCode == STRING
    input.Body.deliveryPostalCode == STRING
    input.Body.deliveryRegionCode == STRING
    input.Body.lineItems[_].brand == STRING
    input.Body.lineItems[_].gtins[_] == STRING
    input.Body.lineItems[_].lineItemId == STRING
    input.Body.lineItems[_].mpn == STRING
    input.Body.lineItems[_].productId == STRING
    input.Body.lineItems[_].productTitle == STRING
    input.Body.lineItems[_].quantity == STRING
    input.Body.merchantId == STRING
    input.Body.orderCreatedTime.day == INTEGER
    input.Body.orderCreatedTime.hours == INTEGER
    input.Body.orderCreatedTime.minutes == INTEGER
    input.Body.orderCreatedTime.month == INTEGER
    input.Body.orderCreatedTime.nanos == INTEGER
    input.Body.orderCreatedTime.seconds == INTEGER
    input.Body.orderCreatedTime.timeZone.id == STRING
    input.Body.orderCreatedTime.timeZone.version == STRING
    input.Body.orderCreatedTime.utcOffset == STRING
    input.Body.orderCreatedTime.year == INTEGER
    input.Body.orderId == STRING
    input.Body.shipmentLineItemMapping[_].lineItemId == STRING
    input.Body.shipmentLineItemMapping[_].quantity == STRING
    input.Body.shipmentLineItemMapping[_].shipmentId == STRING
    input.Body.shippingInfo[_].actualDeliveryTime.day == INTEGER
    input.Body.shippingInfo[_].actualDeliveryTime.hours == INTEGER
    input.Body.shippingInfo[_].actualDeliveryTime.minutes == INTEGER
    input.Body.shippingInfo[_].actualDeliveryTime.month == INTEGER
    input.Body.shippingInfo[_].actualDeliveryTime.nanos == INTEGER
    input.Body.shippingInfo[_].actualDeliveryTime.seconds == INTEGER
    input.Body.shippingInfo[_].actualDeliveryTime.timeZone.id == STRING
    input.Body.shippingInfo[_].actualDeliveryTime.timeZone.version == STRING
    input.Body.shippingInfo[_].actualDeliveryTime.utcOffset == STRING
    input.Body.shippingInfo[_].actualDeliveryTime.year == INTEGER
    input.Body.shippingInfo[_].carrier == STRING
    input.Body.shippingInfo[_].carrierService == STRING
    input.Body.shippingInfo[_].earliestDeliveryPromiseTime.day == INTEGER
    input.Body.shippingInfo[_].earliestDeliveryPromiseTime.hours == INTEGER
    input.Body.shippingInfo[_].earliestDeliveryPromiseTime.minutes == INTEGER
    input.Body.shippingInfo[_].earliestDeliveryPromiseTime.month == INTEGER
    input.Body.shippingInfo[_].earliestDeliveryPromiseTime.nanos == INTEGER
    input.Body.shippingInfo[_].earliestDeliveryPromiseTime.seconds == INTEGER
    input.Body.shippingInfo[_].earliestDeliveryPromiseTime.timeZone.id == STRING
    input.Body.shippingInfo[_].earliestDeliveryPromiseTime.timeZone.version == STRING
    input.Body.shippingInfo[_].earliestDeliveryPromiseTime.utcOffset == STRING
    input.Body.shippingInfo[_].earliestDeliveryPromiseTime.year == INTEGER
    input.Body.shippingInfo[_].latestDeliveryPromiseTime.day == INTEGER
    input.Body.shippingInfo[_].latestDeliveryPromiseTime.hours == INTEGER
    input.Body.shippingInfo[_].latestDeliveryPromiseTime.minutes == INTEGER
    input.Body.shippingInfo[_].latestDeliveryPromiseTime.month == INTEGER
    input.Body.shippingInfo[_].latestDeliveryPromiseTime.nanos == INTEGER
    input.Body.shippingInfo[_].latestDeliveryPromiseTime.seconds == INTEGER
    input.Body.shippingInfo[_].latestDeliveryPromiseTime.timeZone.id == STRING
    input.Body.shippingInfo[_].latestDeliveryPromiseTime.timeZone.version == STRING
    input.Body.shippingInfo[_].latestDeliveryPromiseTime.utcOffset == STRING
    input.Body.shippingInfo[_].latestDeliveryPromiseTime.year == INTEGER
    input.Body.shippingInfo[_].originPostalCode == STRING
    input.Body.shippingInfo[_].originRegionCode == STRING
    input.Body.shippingInfo[_].shipmentId == STRING
    input.Body.shippingInfo[_].shippedTime.day == INTEGER
    input.Body.shippingInfo[_].shippedTime.hours == INTEGER
    input.Body.shippingInfo[_].shippedTime.minutes == INTEGER
    input.Body.shippingInfo[_].shippedTime.month == INTEGER
    input.Body.shippingInfo[_].shippedTime.nanos == INTEGER
    input.Body.shippingInfo[_].shippedTime.seconds == INTEGER
    input.Body.shippingInfo[_].shippedTime.timeZone.id == STRING
    input.Body.shippingInfo[_].shippedTime.timeZone.version == STRING
    input.Body.shippingInfo[_].shippedTime.utcOffset == STRING
    input.Body.shippingInfo[_].shippedTime.year == INTEGER
    input.Body.shippingInfo[_].shippingStatus == enum_ShippingInfoShippingStatus[_]
    input.Body.shippingInfo[_].trackingId == STRING
    input.ReqMap.parent == STRING
    input.Qs.orderTrackingSignalId == 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_ProductAttributesAgeGroup := [ "AGE_GROUP_UNSPECIFIED", "ADULT", "KIDS", "TODDLER", "INFANT", "NEWBORN" ]
enum_ProductAttributesAvailability := [ "AVAILABILITY_UNSPECIFIED", "IN_STOCK", "OUT_OF_STOCK", "PREORDER", "LIMITED_AVAILABILITY", "BACKORDER" ]
enum_ProductAttributesCondition := [ "CONDITION_UNSPECIFIED", "NEW", "USED", "REFURBISHED" ]
enum_ProductAttributesEnergyEfficiencyClass := [ "ENERGY_EFFICIENCY_CLASS_UNSPECIFIED", "APPP", "APP", "AP", "A", "B", "C", "D", "E", "F", "G" ]
enum_ProductAttributesExcludedDestinations := [ "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_ProductAttributesGender := [ "GENDER_UNSPECIFIED", "MALE", "FEMALE", "UNISEX" ]
enum_ProductAttributesIncludedDestinations := [ "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_ProductAttributesMaxEnergyEfficiencyClass := [ "ENERGY_EFFICIENCY_CLASS_UNSPECIFIED", "APPP", "APP", "AP", "A", "B", "C", "D", "E", "F", "G" ]
enum_ProductAttributesMinEnergyEfficiencyClass := [ "ENERGY_EFFICIENCY_CLASS_UNSPECIFIED", "APPP", "APP", "AP", "A", "B", "C", "D", "E", "F", "G" ]
enum_ProductAttributesPause := [ "PAUSE_UNSPECIFIED", "ADS", "ALL" ]
enum_ProductAttributesPickupMethod := [ "PICKUP_METHOD_UNSPECIFIED", "NOT_SUPPORTED", "BUY", "RESERVE", "SHIP_TO_STORE" ]
enum_ProductAttributesPickupSla := [ "PICKUP_SLA_UNSPECIFIED", "SAME_DAY", "NEXT_DAY", "TWO_DAY", "THREE_DAY", "FOUR_DAY", "FIVE_DAY", "SIX_DAY", "MULTI_WEEK" ]
enum_ProductAttributesSizeSystem := [ "SIZE_SYSTEM_UNSPECIFIED", "AU", "BR", "CN", "DE", "EU", "FR", "IT", "JP", "MEX", "UK", "US" ]
enum_ProductAttributesSizeTypes := [ "SIZE_TYPE_UNSPECIFIED", "REGULAR", "PETITE", "MATERNITY", "BIG", "TALL", "PLUS" ]
enum_ProductCertificationCertificationAuthority := [ "CERTIFICATION_AUTHORITY_UNSPECIFIED", "ADEME", "BMWK", "EPA", "EC" ]
enum_ProductCertificationCertificationName := [ "CERTIFICATION_NAME_UNSPECIFIED", "ENERGY_STAR", "ENERGY_STAR_MOST_EFFICIENT", "EPREL", "EU_ECOLABEL", "VEHICLE_ENERGY_EFFICIENCY", "VEHICLE_ENERGY_EFFICIENCY_DISCHARGED_BATTERY" ]
enum_ProductInstallmentCreditType := [ "CREDIT_TYPE_UNSPECIFIED", "FINANCE", "LEASE" ]
enum_ProductSustainabilityIncentiveType := [ "TYPE_UNSPECIFIED", "EV_TAX_CREDIT", "EV_PRICE_DISCOUNT" ]
enum_StructuredDescriptionDigitalSourceType := [ "DIGITAL_SOURCE_TYPE_UNSPECIFIED", "TRAINED_ALGORITHMIC_MEDIA", "DEFAULT" ]
enum_StructuredTitleDigitalSourceType := [ "DIGITAL_SOURCE_TYPE_UNSPECIFIED", "TRAINED_ALGORITHMIC_MEDIA", "DEFAULT" ]
enum_SubscriptionCostPeriod := [ "SUBSCRIPTION_PERIOD_UNSPECIFIED", "MONTH", "YEAR" ]

valid {
    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.legacyLocal == BOOLEAN
    input.Body.name == STRING
    input.Body.offerId == STRING
    input.Body.productAttributes.additionalImageLinks[_] == STRING
    input.Body.productAttributes.adsGrouping == STRING
    input.Body.productAttributes.adsLabels[_] == STRING
    input.Body.productAttributes.adsRedirect == STRING
    input.Body.productAttributes.adult == BOOLEAN
    input.Body.productAttributes.ageGroup == enum_ProductAttributesAgeGroup[_]
    input.Body.productAttributes.autoPricingMinPrice.amountMicros == STRING
    input.Body.productAttributes.autoPricingMinPrice.currencyCode == STRING
    input.Body.productAttributes.availability == enum_ProductAttributesAvailability[_]
    input.Body.productAttributes.availabilityDate == STRING
    input.Body.productAttributes.brand == STRING
    input.Body.productAttributes.canonicalLink == STRING
    input.Body.productAttributes.certifications[_].certificationAuthority == enum_ProductCertificationCertificationAuthority[_]
    input.Body.productAttributes.certifications[_].certificationCode == STRING
    input.Body.productAttributes.certifications[_].certificationName == enum_ProductCertificationCertificationName[_]
    input.Body.productAttributes.certifications[_].certificationValue == STRING
    input.Body.productAttributes.cloudExportAdditionalProperties[_].boolValue == BOOLEAN
    input.Body.productAttributes.cloudExportAdditionalProperties[_].floatValue[_] == NUMBER
    input.Body.productAttributes.cloudExportAdditionalProperties[_].intValue[_] == STRING
    input.Body.productAttributes.cloudExportAdditionalProperties[_].maxValue == NUMBER
    input.Body.productAttributes.cloudExportAdditionalProperties[_].minValue == NUMBER
    input.Body.productAttributes.cloudExportAdditionalProperties[_].propertyName == STRING
    input.Body.productAttributes.cloudExportAdditionalProperties[_].textValue[_] == STRING
    input.Body.productAttributes.cloudExportAdditionalProperties[_].unitCode == STRING
    input.Body.productAttributes.color == STRING
    input.Body.productAttributes.condition == enum_ProductAttributesCondition[_]
    input.Body.productAttributes.costOfGoodsSold.amountMicros == STRING
    input.Body.productAttributes.costOfGoodsSold.currencyCode == STRING
    input.Body.productAttributes.customLabel0 == STRING
    input.Body.productAttributes.customLabel1 == STRING
    input.Body.productAttributes.customLabel2 == STRING
    input.Body.productAttributes.customLabel3 == STRING
    input.Body.productAttributes.customLabel4 == STRING
    input.Body.productAttributes.description == STRING
    input.Body.productAttributes.disclosureDate == STRING
    input.Body.productAttributes.displayAdsId == STRING
    input.Body.productAttributes.displayAdsLink == STRING
    input.Body.productAttributes.displayAdsSimilarIds[_] == STRING
    input.Body.productAttributes.displayAdsTitle == STRING
    input.Body.productAttributes.displayAdsValue == NUMBER
    input.Body.productAttributes.energyEfficiencyClass == enum_ProductAttributesEnergyEfficiencyClass[_]
    input.Body.productAttributes.excludedDestinations[_] == enum_ProductAttributesExcludedDestinations[_]
    input.Body.productAttributes.expirationDate == STRING
    input.Body.productAttributes.externalSellerId == STRING
    input.Body.productAttributes.freeShippingThreshold[_].country == STRING
    input.Body.productAttributes.freeShippingThreshold[_].priceThreshold.amountMicros == STRING
    input.Body.productAttributes.freeShippingThreshold[_].priceThreshold.currencyCode == STRING
    input.Body.productAttributes.gender == enum_ProductAttributesGender[_]
    input.Body.productAttributes.googleProductCategory == STRING
    input.Body.productAttributes.gtins[_] == STRING
    input.Body.productAttributes.identifierExists == BOOLEAN
    input.Body.productAttributes.imageLink == STRING
    input.Body.productAttributes.includedDestinations[_] == enum_ProductAttributesIncludedDestinations[_]
    input.Body.productAttributes.installment.amount.amountMicros == STRING
    input.Body.productAttributes.installment.amount.currencyCode == STRING
    input.Body.productAttributes.installment.creditType == enum_ProductInstallmentCreditType[_]
    input.Body.productAttributes.installment.downpayment.amountMicros == STRING
    input.Body.productAttributes.installment.downpayment.currencyCode == STRING
    input.Body.productAttributes.installment.months == STRING
    input.Body.productAttributes.isBundle == BOOLEAN
    input.Body.productAttributes.itemGroupId == STRING
    input.Body.productAttributes.lifestyleImageLinks[_] == STRING
    input.Body.productAttributes.link == STRING
    input.Body.productAttributes.linkTemplate == STRING
    input.Body.productAttributes.loyaltyPoints.name == STRING
    input.Body.productAttributes.loyaltyPoints.pointsValue == STRING
    input.Body.productAttributes.loyaltyPoints.ratio == NUMBER
    input.Body.productAttributes.loyaltyPrograms[_].cashbackForFutureUse.amountMicros == STRING
    input.Body.productAttributes.loyaltyPrograms[_].cashbackForFutureUse.currencyCode == STRING
    input.Body.productAttributes.loyaltyPrograms[_].loyaltyPoints == STRING
    input.Body.productAttributes.loyaltyPrograms[_].memberPriceEffectiveDate.endTime == STRING
    input.Body.productAttributes.loyaltyPrograms[_].memberPriceEffectiveDate.startTime == STRING
    input.Body.productAttributes.loyaltyPrograms[_].price.amountMicros == STRING
    input.Body.productAttributes.loyaltyPrograms[_].price.currencyCode == STRING
    input.Body.productAttributes.loyaltyPrograms[_].programLabel == STRING
    input.Body.productAttributes.loyaltyPrograms[_].shippingLabel == STRING
    input.Body.productAttributes.loyaltyPrograms[_].tierLabel == STRING
    input.Body.productAttributes.material == STRING
    input.Body.productAttributes.maxEnergyEfficiencyClass == enum_ProductAttributesMaxEnergyEfficiencyClass[_]
    input.Body.productAttributes.maxHandlingTime == STRING
    input.Body.productAttributes.maximumRetailPrice.amountMicros == STRING
    input.Body.productAttributes.maximumRetailPrice.currencyCode == STRING
    input.Body.productAttributes.minEnergyEfficiencyClass == enum_ProductAttributesMinEnergyEfficiencyClass[_]
    input.Body.productAttributes.minHandlingTime == STRING
    input.Body.productAttributes.mobileLink == STRING
    input.Body.productAttributes.mobileLinkTemplate == STRING
    input.Body.productAttributes.mpn == STRING
    input.Body.productAttributes.multipack == STRING
    input.Body.productAttributes.pattern == STRING
    input.Body.productAttributes.pause == enum_ProductAttributesPause[_]
    input.Body.productAttributes.pickupMethod == enum_ProductAttributesPickupMethod[_]
    input.Body.productAttributes.pickupSla == enum_ProductAttributesPickupSla[_]
    input.Body.productAttributes.price.amountMicros == STRING
    input.Body.productAttributes.price.currencyCode == STRING
    input.Body.productAttributes.productDetails[_].attributeName == STRING
    input.Body.productAttributes.productDetails[_].attributeValue == STRING
    input.Body.productAttributes.productDetails[_].sectionName == STRING
    input.Body.productAttributes.productHeight.unit == STRING
    input.Body.productAttributes.productHeight.value == NUMBER
    input.Body.productAttributes.productHighlights[_] == STRING
    input.Body.productAttributes.productLength.unit == STRING
    input.Body.productAttributes.productLength.value == NUMBER
    input.Body.productAttributes.productTypes[_] == STRING
    input.Body.productAttributes.productWeight.unit == STRING
    input.Body.productAttributes.productWeight.value == NUMBER
    input.Body.productAttributes.productWidth.unit == STRING
    input.Body.productAttributes.productWidth.value == NUMBER
    input.Body.productAttributes.promotionIds[_] == STRING
    input.Body.productAttributes.salePrice.amountMicros == STRING
    input.Body.productAttributes.salePrice.currencyCode == STRING
    input.Body.productAttributes.salePriceEffectiveDate.endTime == STRING
    input.Body.productAttributes.salePriceEffectiveDate.startTime == STRING
    input.Body.productAttributes.sellOnGoogleQuantity == STRING
    input.Body.productAttributes.shipping[_].country == STRING
    input.Body.productAttributes.shipping[_].locationGroupName == STRING
    input.Body.productAttributes.shipping[_].locationId == STRING
    input.Body.productAttributes.shipping[_].maxHandlingTime == STRING
    input.Body.productAttributes.shipping[_].maxTransitTime == STRING
    input.Body.productAttributes.shipping[_].minHandlingTime == STRING
    input.Body.productAttributes.shipping[_].minTransitTime == STRING
    input.Body.productAttributes.shipping[_].postalCode == STRING
    input.Body.productAttributes.shipping[_].price.amountMicros == STRING
    input.Body.productAttributes.shipping[_].price.currencyCode == STRING
    input.Body.productAttributes.shipping[_].region == STRING
    input.Body.productAttributes.shipping[_].service == STRING
    input.Body.productAttributes.shippingHeight.unit == STRING
    input.Body.productAttributes.shippingHeight.value == NUMBER
    input.Body.productAttributes.shippingLabel == STRING
    input.Body.productAttributes.shippingLength.unit == STRING
    input.Body.productAttributes.shippingLength.value == NUMBER
    input.Body.productAttributes.shippingWeight.unit == STRING
    input.Body.productAttributes.shippingWeight.value == NUMBER
    input.Body.productAttributes.shippingWidth.unit == STRING
    input.Body.productAttributes.shippingWidth.value == NUMBER
    input.Body.productAttributes.shoppingAdsExcludedCountries[_] == STRING
    input.Body.productAttributes.size == STRING
    input.Body.productAttributes.sizeSystem == enum_ProductAttributesSizeSystem[_]
    input.Body.productAttributes.sizeTypes[_] == enum_ProductAttributesSizeTypes[_]
    input.Body.productAttributes.structuredDescription.content == STRING
    input.Body.productAttributes.structuredDescription.digitalSourceType == enum_StructuredDescriptionDigitalSourceType[_]
    input.Body.productAttributes.structuredTitle.content == STRING
    input.Body.productAttributes.structuredTitle.digitalSourceType == enum_StructuredTitleDigitalSourceType[_]
    input.Body.productAttributes.subscriptionCost.amount.amountMicros == STRING
    input.Body.productAttributes.subscriptionCost.amount.currencyCode == STRING
    input.Body.productAttributes.subscriptionCost.period == enum_SubscriptionCostPeriod[_]
    input.Body.productAttributes.subscriptionCost.periodLength == STRING
    input.Body.productAttributes.sustainabilityIncentives[_].amount.amountMicros == STRING
    input.Body.productAttributes.sustainabilityIncentives[_].amount.currencyCode == STRING
    input.Body.productAttributes.sustainabilityIncentives[_].percentage == NUMBER
    input.Body.productAttributes.sustainabilityIncentives[_].type == enum_ProductSustainabilityIncentiveType[_]
    input.Body.productAttributes.title == STRING
    input.Body.productAttributes.transitTimeLabel == STRING
    input.Body.productAttributes.unitPricingBaseMeasure.unit == STRING
    input.Body.productAttributes.unitPricingBaseMeasure.value == STRING
    input.Body.productAttributes.unitPricingMeasure.unit == STRING
    input.Body.productAttributes.unitPricingMeasure.value == NUMBER
    input.Body.productAttributes.virtualModelLink == STRING
    input.Body.versionNumber == STRING
    input.ReqMap.parent == STRING
    input.Qs.dataSource == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.productInputs.patch

enum_ProductAttributesAgeGroup := [ "AGE_GROUP_UNSPECIFIED", "ADULT", "KIDS", "TODDLER", "INFANT", "NEWBORN" ]
enum_ProductAttributesAvailability := [ "AVAILABILITY_UNSPECIFIED", "IN_STOCK", "OUT_OF_STOCK", "PREORDER", "LIMITED_AVAILABILITY", "BACKORDER" ]
enum_ProductAttributesCondition := [ "CONDITION_UNSPECIFIED", "NEW", "USED", "REFURBISHED" ]
enum_ProductAttributesEnergyEfficiencyClass := [ "ENERGY_EFFICIENCY_CLASS_UNSPECIFIED", "APPP", "APP", "AP", "A", "B", "C", "D", "E", "F", "G" ]
enum_ProductAttributesExcludedDestinations := [ "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_ProductAttributesGender := [ "GENDER_UNSPECIFIED", "MALE", "FEMALE", "UNISEX" ]
enum_ProductAttributesIncludedDestinations := [ "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_ProductAttributesMaxEnergyEfficiencyClass := [ "ENERGY_EFFICIENCY_CLASS_UNSPECIFIED", "APPP", "APP", "AP", "A", "B", "C", "D", "E", "F", "G" ]
enum_ProductAttributesMinEnergyEfficiencyClass := [ "ENERGY_EFFICIENCY_CLASS_UNSPECIFIED", "APPP", "APP", "AP", "A", "B", "C", "D", "E", "F", "G" ]
enum_ProductAttributesPause := [ "PAUSE_UNSPECIFIED", "ADS", "ALL" ]
enum_ProductAttributesPickupMethod := [ "PICKUP_METHOD_UNSPECIFIED", "NOT_SUPPORTED", "BUY", "RESERVE", "SHIP_TO_STORE" ]
enum_ProductAttributesPickupSla := [ "PICKUP_SLA_UNSPECIFIED", "SAME_DAY", "NEXT_DAY", "TWO_DAY", "THREE_DAY", "FOUR_DAY", "FIVE_DAY", "SIX_DAY", "MULTI_WEEK" ]
enum_ProductAttributesSizeSystem := [ "SIZE_SYSTEM_UNSPECIFIED", "AU", "BR", "CN", "DE", "EU", "FR", "IT", "JP", "MEX", "UK", "US" ]
enum_ProductAttributesSizeTypes := [ "SIZE_TYPE_UNSPECIFIED", "REGULAR", "PETITE", "MATERNITY", "BIG", "TALL", "PLUS" ]
enum_ProductCertificationCertificationAuthority := [ "CERTIFICATION_AUTHORITY_UNSPECIFIED", "ADEME", "BMWK", "EPA", "EC" ]
enum_ProductCertificationCertificationName := [ "CERTIFICATION_NAME_UNSPECIFIED", "ENERGY_STAR", "ENERGY_STAR_MOST_EFFICIENT", "EPREL", "EU_ECOLABEL", "VEHICLE_ENERGY_EFFICIENCY", "VEHICLE_ENERGY_EFFICIENCY_DISCHARGED_BATTERY" ]
enum_ProductInstallmentCreditType := [ "CREDIT_TYPE_UNSPECIFIED", "FINANCE", "LEASE" ]
enum_ProductSustainabilityIncentiveType := [ "TYPE_UNSPECIFIED", "EV_TAX_CREDIT", "EV_PRICE_DISCOUNT" ]
enum_StructuredDescriptionDigitalSourceType := [ "DIGITAL_SOURCE_TYPE_UNSPECIFIED", "TRAINED_ALGORITHMIC_MEDIA", "DEFAULT" ]
enum_StructuredTitleDigitalSourceType := [ "DIGITAL_SOURCE_TYPE_UNSPECIFIED", "TRAINED_ALGORITHMIC_MEDIA", "DEFAULT" ]
enum_SubscriptionCostPeriod := [ "SUBSCRIPTION_PERIOD_UNSPECIFIED", "MONTH", "YEAR" ]

valid {
    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.legacyLocal == BOOLEAN
    input.Body.name == STRING
    input.Body.offerId == STRING
    input.Body.productAttributes.additionalImageLinks[_] == STRING
    input.Body.productAttributes.adsGrouping == STRING
    input.Body.productAttributes.adsLabels[_] == STRING
    input.Body.productAttributes.adsRedirect == STRING
    input.Body.productAttributes.adult == BOOLEAN
    input.Body.productAttributes.ageGroup == enum_ProductAttributesAgeGroup[_]
    input.Body.productAttributes.autoPricingMinPrice.amountMicros == STRING
    input.Body.productAttributes.autoPricingMinPrice.currencyCode == STRING
    input.Body.productAttributes.availability == enum_ProductAttributesAvailability[_]
    input.Body.productAttributes.availabilityDate == STRING
    input.Body.productAttributes.brand == STRING
    input.Body.productAttributes.canonicalLink == STRING
    input.Body.productAttributes.certifications[_].certificationAuthority == enum_ProductCertificationCertificationAuthority[_]
    input.Body.productAttributes.certifications[_].certificationCode == STRING
    input.Body.productAttributes.certifications[_].certificationName == enum_ProductCertificationCertificationName[_]
    input.Body.productAttributes.certifications[_].certificationValue == STRING
    input.Body.productAttributes.cloudExportAdditionalProperties[_].boolValue == BOOLEAN
    input.Body.productAttributes.cloudExportAdditionalProperties[_].floatValue[_] == NUMBER
    input.Body.productAttributes.cloudExportAdditionalProperties[_].intValue[_] == STRING
    input.Body.productAttributes.cloudExportAdditionalProperties[_].maxValue == NUMBER
    input.Body.productAttributes.cloudExportAdditionalProperties[_].minValue == NUMBER
    input.Body.productAttributes.cloudExportAdditionalProperties[_].propertyName == STRING
    input.Body.productAttributes.cloudExportAdditionalProperties[_].textValue[_] == STRING
    input.Body.productAttributes.cloudExportAdditionalProperties[_].unitCode == STRING
    input.Body.productAttributes.color == STRING
    input.Body.productAttributes.condition == enum_ProductAttributesCondition[_]
    input.Body.productAttributes.costOfGoodsSold.amountMicros == STRING
    input.Body.productAttributes.costOfGoodsSold.currencyCode == STRING
    input.Body.productAttributes.customLabel0 == STRING
    input.Body.productAttributes.customLabel1 == STRING
    input.Body.productAttributes.customLabel2 == STRING
    input.Body.productAttributes.customLabel3 == STRING
    input.Body.productAttributes.customLabel4 == STRING
    input.Body.productAttributes.description == STRING
    input.Body.productAttributes.disclosureDate == STRING
    input.Body.productAttributes.displayAdsId == STRING
    input.Body.productAttributes.displayAdsLink == STRING
    input.Body.productAttributes.displayAdsSimilarIds[_] == STRING
    input.Body.productAttributes.displayAdsTitle == STRING
    input.Body.productAttributes.displayAdsValue == NUMBER
    input.Body.productAttributes.energyEfficiencyClass == enum_ProductAttributesEnergyEfficiencyClass[_]
    input.Body.productAttributes.excludedDestinations[_] == enum_ProductAttributesExcludedDestinations[_]
    input.Body.productAttributes.expirationDate == STRING
    input.Body.productAttributes.externalSellerId == STRING
    input.Body.productAttributes.freeShippingThreshold[_].country == STRING
    input.Body.productAttributes.freeShippingThreshold[_].priceThreshold.amountMicros == STRING
    input.Body.productAttributes.freeShippingThreshold[_].priceThreshold.currencyCode == STRING
    input.Body.productAttributes.gender == enum_ProductAttributesGender[_]
    input.Body.productAttributes.googleProductCategory == STRING
    input.Body.productAttributes.gtins[_] == STRING
    input.Body.productAttributes.identifierExists == BOOLEAN
    input.Body.productAttributes.imageLink == STRING
    input.Body.productAttributes.includedDestinations[_] == enum_ProductAttributesIncludedDestinations[_]
    input.Body.productAttributes.installment.amount.amountMicros == STRING
    input.Body.productAttributes.installment.amount.currencyCode == STRING
    input.Body.productAttributes.installment.creditType == enum_ProductInstallmentCreditType[_]
    input.Body.productAttributes.installment.downpayment.amountMicros == STRING
    input.Body.productAttributes.installment.downpayment.currencyCode == STRING
    input.Body.productAttributes.installment.months == STRING
    input.Body.productAttributes.isBundle == BOOLEAN
    input.Body.productAttributes.itemGroupId == STRING
    input.Body.productAttributes.lifestyleImageLinks[_] == STRING
    input.Body.productAttributes.link == STRING
    input.Body.productAttributes.linkTemplate == STRING
    input.Body.productAttributes.loyaltyPoints.name == STRING
    input.Body.productAttributes.loyaltyPoints.pointsValue == STRING
    input.Body.productAttributes.loyaltyPoints.ratio == NUMBER
    input.Body.productAttributes.loyaltyPrograms[_].cashbackForFutureUse.amountMicros == STRING
    input.Body.productAttributes.loyaltyPrograms[_].cashbackForFutureUse.currencyCode == STRING
    input.Body.productAttributes.loyaltyPrograms[_].loyaltyPoints == STRING
    input.Body.productAttributes.loyaltyPrograms[_].memberPriceEffectiveDate.endTime == STRING
    input.Body.productAttributes.loyaltyPrograms[_].memberPriceEffectiveDate.startTime == STRING
    input.Body.productAttributes.loyaltyPrograms[_].price.amountMicros == STRING
    input.Body.productAttributes.loyaltyPrograms[_].price.currencyCode == STRING
    input.Body.productAttributes.loyaltyPrograms[_].programLabel == STRING
    input.Body.productAttributes.loyaltyPrograms[_].shippingLabel == STRING
    input.Body.productAttributes.loyaltyPrograms[_].tierLabel == STRING
    input.Body.productAttributes.material == STRING
    input.Body.productAttributes.maxEnergyEfficiencyClass == enum_ProductAttributesMaxEnergyEfficiencyClass[_]
    input.Body.productAttributes.maxHandlingTime == STRING
    input.Body.productAttributes.maximumRetailPrice.amountMicros == STRING
    input.Body.productAttributes.maximumRetailPrice.currencyCode == STRING
    input.Body.productAttributes.minEnergyEfficiencyClass == enum_ProductAttributesMinEnergyEfficiencyClass[_]
    input.Body.productAttributes.minHandlingTime == STRING
    input.Body.productAttributes.mobileLink == STRING
    input.Body.productAttributes.mobileLinkTemplate == STRING
    input.Body.productAttributes.mpn == STRING
    input.Body.productAttributes.multipack == STRING
    input.Body.productAttributes.pattern == STRING
    input.Body.productAttributes.pause == enum_ProductAttributesPause[_]
    input.Body.productAttributes.pickupMethod == enum_ProductAttributesPickupMethod[_]
    input.Body.productAttributes.pickupSla == enum_ProductAttributesPickupSla[_]
    input.Body.productAttributes.price.amountMicros == STRING
    input.Body.productAttributes.price.currencyCode == STRING
    input.Body.productAttributes.productDetails[_].attributeName == STRING
    input.Body.productAttributes.productDetails[_].attributeValue == STRING
    input.Body.productAttributes.productDetails[_].sectionName == STRING
    input.Body.productAttributes.productHeight.unit == STRING
    input.Body.productAttributes.productHeight.value == NUMBER
    input.Body.productAttributes.productHighlights[_] == STRING
    input.Body.productAttributes.productLength.unit == STRING
    input.Body.productAttributes.productLength.value == NUMBER
    input.Body.productAttributes.productTypes[_] == STRING
    input.Body.productAttributes.productWeight.unit == STRING
    input.Body.productAttributes.productWeight.value == NUMBER
    input.Body.productAttributes.productWidth.unit == STRING
    input.Body.productAttributes.productWidth.value == NUMBER
    input.Body.productAttributes.promotionIds[_] == STRING
    input.Body.productAttributes.salePrice.amountMicros == STRING
    input.Body.productAttributes.salePrice.currencyCode == STRING
    input.Body.productAttributes.salePriceEffectiveDate.endTime == STRING
    input.Body.productAttributes.salePriceEffectiveDate.startTime == STRING
    input.Body.productAttributes.sellOnGoogleQuantity == STRING
    input.Body.productAttributes.shipping[_].country == STRING
    input.Body.productAttributes.shipping[_].locationGroupName == STRING
    input.Body.productAttributes.shipping[_].locationId == STRING
    input.Body.productAttributes.shipping[_].maxHandlingTime == STRING
    input.Body.productAttributes.shipping[_].maxTransitTime == STRING
    input.Body.productAttributes.shipping[_].minHandlingTime == STRING
    input.Body.productAttributes.shipping[_].minTransitTime == STRING
    input.Body.productAttributes.shipping[_].postalCode == STRING
    input.Body.productAttributes.shipping[_].price.amountMicros == STRING
    input.Body.productAttributes.shipping[_].price.currencyCode == STRING
    input.Body.productAttributes.shipping[_].region == STRING
    input.Body.productAttributes.shipping[_].service == STRING
    input.Body.productAttributes.shippingHeight.unit == STRING
    input.Body.productAttributes.shippingHeight.value == NUMBER
    input.Body.productAttributes.shippingLabel == STRING
    input.Body.productAttributes.shippingLength.unit == STRING
    input.Body.productAttributes.shippingLength.value == NUMBER
    input.Body.productAttributes.shippingWeight.unit == STRING
    input.Body.productAttributes.shippingWeight.value == NUMBER
    input.Body.productAttributes.shippingWidth.unit == STRING
    input.Body.productAttributes.shippingWidth.value == NUMBER
    input.Body.productAttributes.shoppingAdsExcludedCountries[_] == STRING
    input.Body.productAttributes.size == STRING
    input.Body.productAttributes.sizeSystem == enum_ProductAttributesSizeSystem[_]
    input.Body.productAttributes.sizeTypes[_] == enum_ProductAttributesSizeTypes[_]
    input.Body.productAttributes.structuredDescription.content == STRING
    input.Body.productAttributes.structuredDescription.digitalSourceType == enum_StructuredDescriptionDigitalSourceType[_]
    input.Body.productAttributes.structuredTitle.content == STRING
    input.Body.productAttributes.structuredTitle.digitalSourceType == enum_StructuredTitleDigitalSourceType[_]
    input.Body.productAttributes.subscriptionCost.amount.amountMicros == STRING
    input.Body.productAttributes.subscriptionCost.amount.currencyCode == STRING
    input.Body.productAttributes.subscriptionCost.period == enum_SubscriptionCostPeriod[_]
    input.Body.productAttributes.subscriptionCost.periodLength == STRING
    input.Body.productAttributes.sustainabilityIncentives[_].amount.amountMicros == STRING
    input.Body.productAttributes.sustainabilityIncentives[_].amount.currencyCode == STRING
    input.Body.productAttributes.sustainabilityIncentives[_].percentage == NUMBER
    input.Body.productAttributes.sustainabilityIncentives[_].type == enum_ProductSustainabilityIncentiveType[_]
    input.Body.productAttributes.title == STRING
    input.Body.productAttributes.transitTimeLabel == STRING
    input.Body.productAttributes.unitPricingBaseMeasure.unit == STRING
    input.Body.productAttributes.unitPricingBaseMeasure.value == STRING
    input.Body.productAttributes.unitPricingMeasure.unit == STRING
    input.Body.productAttributes.unitPricingMeasure.value == NUMBER
    input.Body.productAttributes.virtualModelLink == STRING
    input.Body.versionNumber == STRING
    input.ReqMap.name == STRING
    input.Qs.dataSource == STRING
    input.Qs.updateMask == 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.customAttributes[_].groupValues[_] == NESTED
    input.Body.customAttributes[_].name == STRING
    input.Body.customAttributes[_].value == STRING
    input.Body.name == STRING
    input.Body.productReviewAttributes.aggregatorName == STRING
    input.Body.productReviewAttributes.asins[_] == STRING
    input.Body.productReviewAttributes.brands[_] == STRING
    input.Body.productReviewAttributes.collectionMethod == enum_ProductReviewAttributesCollectionMethod[_]
    input.Body.productReviewAttributes.cons[_] == STRING
    input.Body.productReviewAttributes.content == STRING
    input.Body.productReviewAttributes.gtins[_] == STRING
    input.Body.productReviewAttributes.isIncentivizedReview == BOOLEAN
    input.Body.productReviewAttributes.isSpam == BOOLEAN
    input.Body.productReviewAttributes.isVerifiedPurchase == BOOLEAN
    input.Body.productReviewAttributes.maxRating == STRING
    input.Body.productReviewAttributes.minRating == STRING
    input.Body.productReviewAttributes.mpns[_] == STRING
    input.Body.productReviewAttributes.productLinks[_] == STRING
    input.Body.productReviewAttributes.productNames[_] == STRING
    input.Body.productReviewAttributes.pros[_] == STRING
    input.Body.productReviewAttributes.publisherFavicon == STRING
    input.Body.productReviewAttributes.publisherName == STRING
    input.Body.productReviewAttributes.rating == NUMBER
    input.Body.productReviewAttributes.reviewCountry == STRING
    input.Body.productReviewAttributes.reviewLanguage == STRING
    input.Body.productReviewAttributes.reviewLink.link == STRING
    input.Body.productReviewAttributes.reviewLink.type == enum_ReviewLinkType[_]
    input.Body.productReviewAttributes.reviewTime == STRING
    input.Body.productReviewAttributes.reviewerId == STRING
    input.Body.productReviewAttributes.reviewerImageLinks[_] == STRING
    input.Body.productReviewAttributes.reviewerIsAnonymous == BOOLEAN
    input.Body.productReviewAttributes.reviewerUsername == STRING
    input.Body.productReviewAttributes.skus[_] == STRING
    input.Body.productReviewAttributes.subclientName == STRING
    input.Body.productReviewAttributes.title == STRING
    input.Body.productReviewAttributes.transactionId == 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

enum_LocalInventoryAttributesAvailability := [ "LOCAL_INVENTORY_AVAILABILITY_UNSPECIFIED", "IN_STOCK", "LIMITED_AVAILABILITY", "ON_DISPLAY_TO_ORDER", "OUT_OF_STOCK" ]
enum_LocalInventoryAttributesPickupMethod := [ "PICKUP_METHOD_UNSPECIFIED", "BUY", "RESERVE", "SHIP_TO_STORE", "NOT_SUPPORTED" ]
enum_LocalInventoryAttributesPickupSla := [ "PICKUP_SLA_UNSPECIFIED", "SAME_DAY", "NEXT_DAY", "TWO_DAY", "THREE_DAY", "FOUR_DAY", "FIVE_DAY", "SIX_DAY", "SEVEN_DAY", "MULTI_WEEK" ]

valid {
    input.Body.localInventoryAttributes.availability == enum_LocalInventoryAttributesAvailability[_]
    input.Body.localInventoryAttributes.instoreProductLocation == STRING
    input.Body.localInventoryAttributes.pickupMethod == enum_LocalInventoryAttributesPickupMethod[_]
    input.Body.localInventoryAttributes.pickupSla == enum_LocalInventoryAttributesPickupSla[_]
    input.Body.localInventoryAttributes.price.amountMicros == STRING
    input.Body.localInventoryAttributes.price.currencyCode == STRING
    input.Body.localInventoryAttributes.quantity == STRING
    input.Body.localInventoryAttributes.salePrice.amountMicros == STRING
    input.Body.localInventoryAttributes.salePrice.currencyCode == STRING
    input.Body.localInventoryAttributes.salePriceEffectiveDate.endTime == STRING
    input.Body.localInventoryAttributes.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

enum_RegionalInventoryAttributesAvailability := [ "REGIONAL_INVENTORY_AVAILABILITY_UNSPECIFIED", "IN_STOCK", "OUT_OF_STOCK" ]

valid {
    input.Body.region == STRING
    input.Body.regionalInventoryAttributes.availability == enum_RegionalInventoryAttributesAvailability[_]
    input.Body.regionalInventoryAttributes.price.amountMicros == STRING
    input.Body.regionalInventoryAttributes.price.currencyCode == STRING
    input.Body.regionalInventoryAttributes.salePrice.amountMicros == STRING
    input.Body.regionalInventoryAttributes.salePrice.currencyCode == STRING
    input.Body.regionalInventoryAttributes.salePriceEffectiveDate.endTime == STRING
    input.Body.regionalInventoryAttributes.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.checkoutSettings.create

enum_CheckoutSettingsEligibleDestinations := [ "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" ]

valid {
    input.Body.eligibleDestinations[_] == enum_CheckoutSettingsEligibleDestinations[_]
    input.Body.name == STRING
    input.Body.uriSettings.cartUriTemplate == STRING
    input.Body.uriSettings.checkoutUriTemplate == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.programs.checkoutSettings.deleteCheckoutSettings

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

merchantapi.accounts.programs.checkoutSettings.getCheckoutSettings

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

merchantapi.accounts.programs.checkoutSettings.updateCheckoutSettings

enum_CheckoutSettingsEligibleDestinations := [ "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" ]

valid {
    input.Body.eligibleDestinations[_] == enum_CheckoutSettingsEligibleDestinations[_]
    input.Body.name == STRING
    input.Body.uriSettings.cartUriTemplate == STRING
    input.Body.uriSettings.checkoutUriTemplate == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == 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.batchCreate

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

merchantapi.accounts.regions.batchDelete

valid {
    input.Body.requests[_].name == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.regions.batchUpdate

valid {
    input.Body.requests[_].region.displayName == STRING
    input.Body.requests[_].region.geotargetArea.geotargetCriteriaIds[_] == STRING
    input.Body.requests[_].region.name == STRING
    input.Body.requests[_].region.postalCodeArea.postalCodes[_].begin == STRING
    input.Body.requests[_].region.postalCodeArea.postalCodes[_].end == STRING
    input.Body.requests[_].region.postalCodeArea.regionCode == STRING
    input.Body.requests[_].updateMask == STRING
    input.ReqMap.parent == 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.relationships.get

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

merchantapi.accounts.relationships.list

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

merchantapi.accounts.relationships.patch

valid {
    input.Body.accountIdAlias == STRING
    input.Body.name == STRING
    input.Body.provider == 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.services.approve

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

merchantapi.accounts.services.get

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

merchantapi.accounts.services.list

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

merchantapi.accounts.services.propose

valid {
    input.Body.accountService.accountAggregation.STRING == STRING
    input.Body.accountService.accountManagement.STRING == STRING
    input.Body.accountService.campaignsManagement.STRING == STRING
    input.Body.accountService.externalAccountId == STRING
    input.Body.accountService.localListingManagement.STRING == STRING
    input.Body.accountService.name == STRING
    input.Body.accountService.productsManagement.STRING == STRING
    input.Body.provider == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.accounts.services.reject

valid {
    input.Body.STRING == STRING
    input.ReqMap.name == 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", "READ_ONLY", "ADMIN", "PERFORMANCE_REPORTING", "API_DEVELOPER" ]

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", "READ_ONLY", "ADMIN", "PERFORMANCE_REPORTING", "API_DEVELOPER" ]

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

merchantapi.issueresolution.renderaccountissues

enum_RenderIssuesRequestPayloadContentOption := [ "CONTENT_OPTION_UNSPECIFIED", "PRE_RENDERED_HTML" ]
enum_RenderIssuesRequestPayloadUserInputActionOption := [ "USER_INPUT_ACTION_RENDERING_OPTION_UNSPECIFIED", "REDIRECT_TO_MERCHANT_CENTER", "BUILT_IN_USER_INPUT_ACTIONS" ]

valid {
    input.Body.contentOption == enum_RenderIssuesRequestPayloadContentOption[_]
    input.Body.userInputActionOption == enum_RenderIssuesRequestPayloadUserInputActionOption[_]
    input.ReqMap.name == STRING
    input.Qs.languageCode == STRING
    input.Qs.timeZone == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.issueresolution.renderproductissues

enum_RenderIssuesRequestPayloadContentOption := [ "CONTENT_OPTION_UNSPECIFIED", "PRE_RENDERED_HTML" ]
enum_RenderIssuesRequestPayloadUserInputActionOption := [ "USER_INPUT_ACTION_RENDERING_OPTION_UNSPECIFIED", "REDIRECT_TO_MERCHANT_CENTER", "BUILT_IN_USER_INPUT_ACTIONS" ]

valid {
    input.Body.contentOption == enum_RenderIssuesRequestPayloadContentOption[_]
    input.Body.userInputActionOption == enum_RenderIssuesRequestPayloadUserInputActionOption[_]
    input.ReqMap.name == STRING
    input.Qs.languageCode == STRING
    input.Qs.timeZone == STRING
    input.ProviderMetadata.Region == STRING
}

merchantapi.issueresolution.triggeraction

valid {
    input.Body.actionContext == STRING
    input.Body.actionInput.actionFlowId == STRING
    input.Body.actionInput.inputValues[_].checkboxInputValue.value == BOOLEAN
    input.Body.actionInput.inputValues[_].choiceInputValue.choiceInputOptionId == STRING
    input.Body.actionInput.inputValues[_].inputFieldId == STRING
    input.Body.actionInput.inputValues[_].textInputValue.value == STRING
    input.ReqMap.name == STRING
    input.Qs.languageCode == 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
}