ANDROIDPUBLISHER

androidpublisher.applications.dataSafety

valid {
    input.Body.safetyLabels == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.applications.deviceTierConfigs.create

valid {
    input.Body.deviceGroups[_].deviceSelectors[_].deviceRam.maxBytes == STRING
    input.Body.deviceGroups[_].deviceSelectors[_].deviceRam.minBytes == STRING
    input.Body.deviceGroups[_].deviceSelectors[_].excludedDeviceIds[_].buildBrand == STRING
    input.Body.deviceGroups[_].deviceSelectors[_].excludedDeviceIds[_].buildDevice == STRING
    input.Body.deviceGroups[_].deviceSelectors[_].forbiddenSystemFeatures[_].name == STRING
    input.Body.deviceGroups[_].deviceSelectors[_].includedDeviceIds[_].buildBrand == STRING
    input.Body.deviceGroups[_].deviceSelectors[_].includedDeviceIds[_].buildDevice == STRING
    input.Body.deviceGroups[_].deviceSelectors[_].requiredSystemFeatures[_].name == STRING
    input.Body.deviceGroups[_].name == STRING
    input.Body.deviceTierSet.deviceTiers[_].deviceGroupNames[_] == STRING
    input.Body.deviceTierSet.deviceTiers[_].level == INTEGER
    input.Body.userCountrySets[_].countryCodes[_] == STRING
    input.Body.userCountrySets[_].name == STRING
    input.ReqMap.packageName == STRING
    input.Qs.allowUnknownDevices == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

androidpublisher.applications.deviceTierConfigs.get

valid {
    input.ReqMap.deviceTierConfigId == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.applications.deviceTierConfigs.list

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

androidpublisher.apprecovery.addTargeting

valid {
    input.Body.targetingUpdate.allUsers.isAllUsersRequested == BOOLEAN
    input.Body.targetingUpdate.androidSdks.sdkLevels[_] == STRING
    input.Body.targetingUpdate.regions.regionCode[_] == STRING
    input.ReqMap.appRecoveryId == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.apprecovery.appRecoveries

valid {
    input.ReqMap.packageName == STRING
    input.Qs.versionCode == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.apprecovery.cancel

valid {
    input.Body.STRING == STRING
    input.ReqMap.appRecoveryId == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.apprecovery.deploy

valid {
    input.Body.STRING == STRING
    input.ReqMap.appRecoveryId == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.apks.addexternallyhosted

valid {
    input.Body.externallyHostedApk.applicationLabel == STRING
    input.Body.externallyHostedApk.certificateBase64s[_] == STRING
    input.Body.externallyHostedApk.externallyHostedUrl == STRING
    input.Body.externallyHostedApk.fileSha1Base64 == STRING
    input.Body.externallyHostedApk.fileSha256Base64 == STRING
    input.Body.externallyHostedApk.fileSize == STRING
    input.Body.externallyHostedApk.iconBase64 == STRING
    input.Body.externallyHostedApk.maximumSdk == INTEGER
    input.Body.externallyHostedApk.minimumSdk == INTEGER
    input.Body.externallyHostedApk.nativeCodes[_] == STRING
    input.Body.externallyHostedApk.packageName == STRING
    input.Body.externallyHostedApk.usesFeatures[_] == STRING
    input.Body.externallyHostedApk.usesPermissions[_].maxSdkVersion == INTEGER
    input.Body.externallyHostedApk.usesPermissions[_].name == STRING
    input.Body.externallyHostedApk.versionCode == INTEGER
    input.Body.externallyHostedApk.versionName == STRING
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.apks.list

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.apks.upload

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.bundles.list

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.bundles.upload

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.Qs.ackBundleInstallationWarning == BOOLEAN
    input.Qs.deviceTierConfigId == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.commit

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.Qs.changesNotSentForReview == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.countryavailability.get

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.track == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.delete

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.deobfuscationfiles.upload

enum_DeobfuscationFileTypeParameter := [ "deobfuscationFileTypeUnspecified", "proguard", "nativeCode" ]

valid {
    input.ReqMap.apkVersionCode == INTEGER
    input.ReqMap.deobfuscationFileType == enum_DeobfuscationFileTypeParameter[_]
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.details.get

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.details.patch

valid {
    input.Body.contactEmail == STRING
    input.Body.contactPhone == STRING
    input.Body.contactWebsite == STRING
    input.Body.defaultLanguage == STRING
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.details.update

valid {
    input.Body.contactEmail == STRING
    input.Body.contactPhone == STRING
    input.Body.contactWebsite == STRING
    input.Body.defaultLanguage == STRING
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.expansionfiles.get

enum_ExpansionFileTypeParameter := [ "expansionFileTypeUnspecified", "main", "patch" ]

valid {
    input.ReqMap.apkVersionCode == INTEGER
    input.ReqMap.editId == STRING
    input.ReqMap.expansionFileType == enum_ExpansionFileTypeParameter[_]
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.expansionfiles.patch

enum_ExpansionFileTypeParameter := [ "expansionFileTypeUnspecified", "main", "patch" ]

valid {
    input.Body.fileSize == STRING
    input.Body.referencesVersion == INTEGER
    input.ReqMap.apkVersionCode == INTEGER
    input.ReqMap.editId == STRING
    input.ReqMap.expansionFileType == enum_ExpansionFileTypeParameter[_]
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.expansionfiles.update

enum_ExpansionFileTypeParameter := [ "expansionFileTypeUnspecified", "main", "patch" ]

valid {
    input.Body.fileSize == STRING
    input.Body.referencesVersion == INTEGER
    input.ReqMap.apkVersionCode == INTEGER
    input.ReqMap.editId == STRING
    input.ReqMap.expansionFileType == enum_ExpansionFileTypeParameter[_]
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.expansionfiles.upload

enum_ExpansionFileTypeParameter := [ "expansionFileTypeUnspecified", "main", "patch" ]

valid {
    input.ReqMap.apkVersionCode == INTEGER
    input.ReqMap.editId == STRING
    input.ReqMap.expansionFileType == enum_ExpansionFileTypeParameter[_]
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.get

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.images.delete

enum_ImageTypeParameter := [ "appImageTypeUnspecified", "phoneScreenshots", "sevenInchScreenshots", "tenInchScreenshots", "tvScreenshots", "wearScreenshots", "icon", "featureGraphic", "tvBanner" ]

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.imageId == STRING
    input.ReqMap.imageType == enum_ImageTypeParameter[_]
    input.ReqMap.language == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.images.deleteall

enum_ImageTypeParameter := [ "appImageTypeUnspecified", "phoneScreenshots", "sevenInchScreenshots", "tenInchScreenshots", "tvScreenshots", "wearScreenshots", "icon", "featureGraphic", "tvBanner" ]

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.imageType == enum_ImageTypeParameter[_]
    input.ReqMap.language == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.images.list

enum_ImageTypeParameter := [ "appImageTypeUnspecified", "phoneScreenshots", "sevenInchScreenshots", "tenInchScreenshots", "tvScreenshots", "wearScreenshots", "icon", "featureGraphic", "tvBanner" ]

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.imageType == enum_ImageTypeParameter[_]
    input.ReqMap.language == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.images.upload

enum_ImageTypeParameter := [ "appImageTypeUnspecified", "phoneScreenshots", "sevenInchScreenshots", "tenInchScreenshots", "tvScreenshots", "wearScreenshots", "icon", "featureGraphic", "tvBanner" ]

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.imageType == enum_ImageTypeParameter[_]
    input.ReqMap.language == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.insert

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

androidpublisher.edits.listings.delete

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.language == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.listings.deleteall

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.listings.get

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.language == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.listings.list

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.listings.patch

valid {
    input.Body.fullDescription == STRING
    input.Body.language == STRING
    input.Body.shortDescription == STRING
    input.Body.title == STRING
    input.Body.video == STRING
    input.ReqMap.editId == STRING
    input.ReqMap.language == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.listings.update

valid {
    input.Body.fullDescription == STRING
    input.Body.language == STRING
    input.Body.shortDescription == STRING
    input.Body.title == STRING
    input.Body.video == STRING
    input.ReqMap.editId == STRING
    input.ReqMap.language == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.testers.get

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.track == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.testers.patch

valid {
    input.Body.googleGroups[_] == STRING
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.track == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.testers.update

valid {
    input.Body.googleGroups[_] == STRING
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.track == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.tracks.create

enum_TrackConfigFormFactor := [ "FORM_FACTOR_UNSPECIFIED", "DEFAULT", "WEAR", "AUTOMOTIVE" ]
enum_TrackConfigType := [ "TRACK_TYPE_UNSPECIFIED", "CLOSED_TESTING" ]

valid {
    input.Body.formFactor == enum_TrackConfigFormFactor[_]
    input.Body.track == STRING
    input.Body.type == enum_TrackConfigType[_]
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.tracks.get

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.track == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.tracks.list

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.tracks.patch

enum_TrackReleaseStatus := [ "statusUnspecified", "draft", "inProgress", "halted", "completed" ]

valid {
    input.Body.releases[_].countryTargeting.countries[_] == STRING
    input.Body.releases[_].countryTargeting.includeRestOfWorld == BOOLEAN
    input.Body.releases[_].inAppUpdatePriority == INTEGER
    input.Body.releases[_].name == STRING
    input.Body.releases[_].releaseNotes[_].language == STRING
    input.Body.releases[_].releaseNotes[_].text == STRING
    input.Body.releases[_].status == enum_TrackReleaseStatus[_]
    input.Body.releases[_].userFraction == NUMBER
    input.Body.releases[_].versionCodes[_] == STRING
    input.Body.track == STRING
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.track == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.tracks.update

enum_TrackReleaseStatus := [ "statusUnspecified", "draft", "inProgress", "halted", "completed" ]

valid {
    input.Body.releases[_].countryTargeting.countries[_] == STRING
    input.Body.releases[_].countryTargeting.includeRestOfWorld == BOOLEAN
    input.Body.releases[_].inAppUpdatePriority == INTEGER
    input.Body.releases[_].name == STRING
    input.Body.releases[_].releaseNotes[_].language == STRING
    input.Body.releases[_].releaseNotes[_].text == STRING
    input.Body.releases[_].status == enum_TrackReleaseStatus[_]
    input.Body.releases[_].userFraction == NUMBER
    input.Body.releases[_].versionCodes[_] == STRING
    input.Body.track == STRING
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.track == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.edits.validate

valid {
    input.ReqMap.editId == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.externaltransactions.createexternaltransaction

enum_ExternalSubscriptionSubscriptionType := [ "SUBSCRIPTION_TYPE_UNSPECIFIED", "RECURRING", "PREPAID" ]
enum_RecurringExternalTransactionMigratedTransactionProgram := [ "EXTERNAL_TRANSACTION_PROGRAM_UNSPECIFIED", "USER_CHOICE_BILLING", "ALTERNATIVE_BILLING_ONLY" ]

valid {
    input.Body.oneTimeTransaction.externalTransactionToken == STRING
    input.Body.originalPreTaxAmount.currency == STRING
    input.Body.originalPreTaxAmount.priceMicros == STRING
    input.Body.originalTaxAmount.currency == STRING
    input.Body.originalTaxAmount.priceMicros == STRING
    input.Body.recurringTransaction.externalSubscription.subscriptionType == enum_ExternalSubscriptionSubscriptionType[_]
    input.Body.recurringTransaction.externalTransactionToken == STRING
    input.Body.recurringTransaction.initialExternalTransactionId == STRING
    input.Body.recurringTransaction.migratedTransactionProgram == enum_RecurringExternalTransactionMigratedTransactionProgram[_]
    input.Body.recurringTransaction.otherRecurringProduct.STRING == STRING
    input.Body.transactionTime == STRING
    input.Body.userTaxAddress.administrativeArea == STRING
    input.Body.userTaxAddress.regionCode == STRING
    input.ReqMap.parent == STRING
    input.Qs.externalTransactionId == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.externaltransactions.getexternaltransaction

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

androidpublisher.externaltransactions.refundexternaltransaction

valid {
    input.Body.fullRefund.STRING == STRING
    input.Body.partialRefund.refundId == STRING
    input.Body.partialRefund.refundPreTaxAmount.currency == STRING
    input.Body.partialRefund.refundPreTaxAmount.priceMicros == STRING
    input.Body.refundTime == STRING
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.generatedapks.download

valid {
    input.ReqMap.downloadId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.versionCode == INTEGER
    input.ProviderMetadata.Region == STRING
}

androidpublisher.generatedapks.list

valid {
    input.ReqMap.packageName == STRING
    input.ReqMap.versionCode == INTEGER
    input.ProviderMetadata.Region == STRING
}

androidpublisher.grants.create

enum_GrantAppLevelPermissions := [ "APP_LEVEL_PERMISSION_UNSPECIFIED", "CAN_ACCESS_APP", "CAN_VIEW_FINANCIAL_DATA", "CAN_MANAGE_PERMISSIONS", "CAN_REPLY_TO_REVIEWS", "CAN_MANAGE_PUBLIC_APKS", "CAN_MANAGE_TRACK_APKS", "CAN_MANAGE_TRACK_USERS", "CAN_MANAGE_PUBLIC_LISTING", "CAN_MANAGE_DRAFT_APPS", "CAN_MANAGE_ORDERS", "CAN_MANAGE_APP_CONTENT", "CAN_VIEW_NON_FINANCIAL_DATA", "CAN_VIEW_APP_QUALITY", "CAN_MANAGE_DEEPLINKS" ]

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

androidpublisher.grants.delete

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

androidpublisher.grants.patch

enum_GrantAppLevelPermissions := [ "APP_LEVEL_PERMISSION_UNSPECIFIED", "CAN_ACCESS_APP", "CAN_VIEW_FINANCIAL_DATA", "CAN_MANAGE_PERMISSIONS", "CAN_REPLY_TO_REVIEWS", "CAN_MANAGE_PUBLIC_APKS", "CAN_MANAGE_TRACK_APKS", "CAN_MANAGE_TRACK_USERS", "CAN_MANAGE_PUBLIC_LISTING", "CAN_MANAGE_DRAFT_APPS", "CAN_MANAGE_ORDERS", "CAN_MANAGE_APP_CONTENT", "CAN_VIEW_NON_FINANCIAL_DATA", "CAN_VIEW_APP_QUALITY", "CAN_MANAGE_DEEPLINKS" ]

valid {
    input.Body.appLevelPermissions[_] == enum_GrantAppLevelPermissions[_]
    input.Body.name == STRING
    input.Body.packageName == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.inappproducts.batchDelete

enum_InappproductsDeleteRequestLatencyTolerance := [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ]

valid {
    input.Body.requests[_].latencyTolerance == enum_InappproductsDeleteRequestLatencyTolerance[_]
    input.Body.requests[_].packageName == STRING
    input.Body.requests[_].sku == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.inappproducts.batchGet

valid {
    input.ReqMap.packageName == STRING
    input.Qs.sku == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.inappproducts.batchUpdate

enum_InAppProductPurchaseType := [ "purchaseTypeUnspecified", "managedUser", "subscription" ]
enum_InAppProductStatus := [ "statusUnspecified", "active", "inactive" ]
enum_InappproductsUpdateRequestLatencyTolerance := [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ]
enum_ManagedProductTaxAndComplianceSettingsEeaWithdrawalRightType := [ "WITHDRAWAL_RIGHT_TYPE_UNSPECIFIED", "WITHDRAWAL_RIGHT_DIGITAL_CONTENT", "WITHDRAWAL_RIGHT_SERVICE" ]
enum_RegionalTaxRateInfoStreamingTaxType := [ "STREAMING_TAX_TYPE_UNSPECIFIED", "STREAMING_TAX_TYPE_TELCO_VIDEO_RENTAL", "STREAMING_TAX_TYPE_TELCO_VIDEO_SALES", "STREAMING_TAX_TYPE_TELCO_VIDEO_MULTI_CHANNEL", "STREAMING_TAX_TYPE_TELCO_AUDIO_RENTAL", "STREAMING_TAX_TYPE_TELCO_AUDIO_SALES", "STREAMING_TAX_TYPE_TELCO_AUDIO_MULTI_CHANNEL" ]
enum_RegionalTaxRateInfoTaxTier := [ "TAX_TIER_UNSPECIFIED", "TAX_TIER_BOOKS_1", "TAX_TIER_NEWS_1", "TAX_TIER_NEWS_2", "TAX_TIER_MUSIC_OR_AUDIO_1", "TAX_TIER_LIVE_OR_BROADCAST_1" ]
enum_SubscriptionTaxAndComplianceSettingsEeaWithdrawalRightType := [ "WITHDRAWAL_RIGHT_TYPE_UNSPECIFIED", "WITHDRAWAL_RIGHT_DIGITAL_CONTENT", "WITHDRAWAL_RIGHT_SERVICE" ]

valid {
    input.Body.requests[_].allowMissing == BOOLEAN
    input.Body.requests[_].autoConvertMissingPrices == BOOLEAN
    input.Body.requests[_].inappproduct.defaultLanguage == STRING
    input.Body.requests[_].inappproduct.defaultPrice.currency == STRING
    input.Body.requests[_].inappproduct.defaultPrice.priceMicros == STRING
    input.Body.requests[_].inappproduct.gracePeriod == STRING
    input.Body.requests[_].inappproduct.listings.STRING.benefits[_] == STRING
    input.Body.requests[_].inappproduct.listings.STRING.description == STRING
    input.Body.requests[_].inappproduct.listings.STRING.title == STRING
    input.Body.requests[_].inappproduct.managedProductTaxesAndComplianceSettings.eeaWithdrawalRightType == enum_ManagedProductTaxAndComplianceSettingsEeaWithdrawalRightType[_]
    input.Body.requests[_].inappproduct.managedProductTaxesAndComplianceSettings.isTokenizedDigitalAsset == BOOLEAN
    input.Body.requests[_].inappproduct.managedProductTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.eligibleForStreamingServiceTaxRate == BOOLEAN
    input.Body.requests[_].inappproduct.managedProductTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.streamingTaxType == enum_RegionalTaxRateInfoStreamingTaxType[_]
    input.Body.requests[_].inappproduct.managedProductTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.taxTier == enum_RegionalTaxRateInfoTaxTier[_]
    input.Body.requests[_].inappproduct.packageName == STRING
    input.Body.requests[_].inappproduct.prices.STRING.currency == STRING
    input.Body.requests[_].inappproduct.prices.STRING.priceMicros == STRING
    input.Body.requests[_].inappproduct.purchaseType == enum_InAppProductPurchaseType[_]
    input.Body.requests[_].inappproduct.sku == STRING
    input.Body.requests[_].inappproduct.status == enum_InAppProductStatus[_]
    input.Body.requests[_].inappproduct.subscriptionPeriod == STRING
    input.Body.requests[_].inappproduct.subscriptionTaxesAndComplianceSettings.eeaWithdrawalRightType == enum_SubscriptionTaxAndComplianceSettingsEeaWithdrawalRightType[_]
    input.Body.requests[_].inappproduct.subscriptionTaxesAndComplianceSettings.isTokenizedDigitalAsset == BOOLEAN
    input.Body.requests[_].inappproduct.subscriptionTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.eligibleForStreamingServiceTaxRate == BOOLEAN
    input.Body.requests[_].inappproduct.subscriptionTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.streamingTaxType == enum_RegionalTaxRateInfoStreamingTaxType[_]
    input.Body.requests[_].inappproduct.subscriptionTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.taxTier == enum_RegionalTaxRateInfoTaxTier[_]
    input.Body.requests[_].inappproduct.trialPeriod == STRING
    input.Body.requests[_].latencyTolerance == enum_InappproductsUpdateRequestLatencyTolerance[_]
    input.Body.requests[_].packageName == STRING
    input.Body.requests[_].sku == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.inappproducts.delete

enum_LatencyToleranceParameter := [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ]

valid {
    input.ReqMap.packageName == STRING
    input.ReqMap.sku == STRING
    input.Qs.latencyTolerance == enum_LatencyToleranceParameter[_]
    input.ProviderMetadata.Region == STRING
}

androidpublisher.inappproducts.get

valid {
    input.ReqMap.packageName == STRING
    input.ReqMap.sku == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.inappproducts.insert

enum_InAppProductPurchaseType := [ "purchaseTypeUnspecified", "managedUser", "subscription" ]
enum_InAppProductStatus := [ "statusUnspecified", "active", "inactive" ]
enum_ManagedProductTaxAndComplianceSettingsEeaWithdrawalRightType := [ "WITHDRAWAL_RIGHT_TYPE_UNSPECIFIED", "WITHDRAWAL_RIGHT_DIGITAL_CONTENT", "WITHDRAWAL_RIGHT_SERVICE" ]
enum_RegionalTaxRateInfoStreamingTaxType := [ "STREAMING_TAX_TYPE_UNSPECIFIED", "STREAMING_TAX_TYPE_TELCO_VIDEO_RENTAL", "STREAMING_TAX_TYPE_TELCO_VIDEO_SALES", "STREAMING_TAX_TYPE_TELCO_VIDEO_MULTI_CHANNEL", "STREAMING_TAX_TYPE_TELCO_AUDIO_RENTAL", "STREAMING_TAX_TYPE_TELCO_AUDIO_SALES", "STREAMING_TAX_TYPE_TELCO_AUDIO_MULTI_CHANNEL" ]
enum_RegionalTaxRateInfoTaxTier := [ "TAX_TIER_UNSPECIFIED", "TAX_TIER_BOOKS_1", "TAX_TIER_NEWS_1", "TAX_TIER_NEWS_2", "TAX_TIER_MUSIC_OR_AUDIO_1", "TAX_TIER_LIVE_OR_BROADCAST_1" ]
enum_SubscriptionTaxAndComplianceSettingsEeaWithdrawalRightType := [ "WITHDRAWAL_RIGHT_TYPE_UNSPECIFIED", "WITHDRAWAL_RIGHT_DIGITAL_CONTENT", "WITHDRAWAL_RIGHT_SERVICE" ]

valid {
    input.Body.defaultLanguage == STRING
    input.Body.defaultPrice.currency == STRING
    input.Body.defaultPrice.priceMicros == STRING
    input.Body.gracePeriod == STRING
    input.Body.listings.STRING.benefits[_] == STRING
    input.Body.listings.STRING.description == STRING
    input.Body.listings.STRING.title == STRING
    input.Body.managedProductTaxesAndComplianceSettings.eeaWithdrawalRightType == enum_ManagedProductTaxAndComplianceSettingsEeaWithdrawalRightType[_]
    input.Body.managedProductTaxesAndComplianceSettings.isTokenizedDigitalAsset == BOOLEAN
    input.Body.managedProductTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.eligibleForStreamingServiceTaxRate == BOOLEAN
    input.Body.managedProductTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.streamingTaxType == enum_RegionalTaxRateInfoStreamingTaxType[_]
    input.Body.managedProductTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.taxTier == enum_RegionalTaxRateInfoTaxTier[_]
    input.Body.packageName == STRING
    input.Body.prices.STRING.currency == STRING
    input.Body.prices.STRING.priceMicros == STRING
    input.Body.purchaseType == enum_InAppProductPurchaseType[_]
    input.Body.sku == STRING
    input.Body.status == enum_InAppProductStatus[_]
    input.Body.subscriptionPeriod == STRING
    input.Body.subscriptionTaxesAndComplianceSettings.eeaWithdrawalRightType == enum_SubscriptionTaxAndComplianceSettingsEeaWithdrawalRightType[_]
    input.Body.subscriptionTaxesAndComplianceSettings.isTokenizedDigitalAsset == BOOLEAN
    input.Body.subscriptionTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.eligibleForStreamingServiceTaxRate == BOOLEAN
    input.Body.subscriptionTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.streamingTaxType == enum_RegionalTaxRateInfoStreamingTaxType[_]
    input.Body.subscriptionTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.taxTier == enum_RegionalTaxRateInfoTaxTier[_]
    input.Body.trialPeriod == STRING
    input.ReqMap.packageName == STRING
    input.Qs.autoConvertMissingPrices == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

androidpublisher.inappproducts.list

valid {
    input.ReqMap.packageName == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.startIndex == INTEGER
    input.Qs.token == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.inappproducts.patch

enum_InAppProductPurchaseType := [ "purchaseTypeUnspecified", "managedUser", "subscription" ]
enum_InAppProductStatus := [ "statusUnspecified", "active", "inactive" ]
enum_LatencyToleranceParameter := [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ]
enum_ManagedProductTaxAndComplianceSettingsEeaWithdrawalRightType := [ "WITHDRAWAL_RIGHT_TYPE_UNSPECIFIED", "WITHDRAWAL_RIGHT_DIGITAL_CONTENT", "WITHDRAWAL_RIGHT_SERVICE" ]
enum_RegionalTaxRateInfoStreamingTaxType := [ "STREAMING_TAX_TYPE_UNSPECIFIED", "STREAMING_TAX_TYPE_TELCO_VIDEO_RENTAL", "STREAMING_TAX_TYPE_TELCO_VIDEO_SALES", "STREAMING_TAX_TYPE_TELCO_VIDEO_MULTI_CHANNEL", "STREAMING_TAX_TYPE_TELCO_AUDIO_RENTAL", "STREAMING_TAX_TYPE_TELCO_AUDIO_SALES", "STREAMING_TAX_TYPE_TELCO_AUDIO_MULTI_CHANNEL" ]
enum_RegionalTaxRateInfoTaxTier := [ "TAX_TIER_UNSPECIFIED", "TAX_TIER_BOOKS_1", "TAX_TIER_NEWS_1", "TAX_TIER_NEWS_2", "TAX_TIER_MUSIC_OR_AUDIO_1", "TAX_TIER_LIVE_OR_BROADCAST_1" ]
enum_SubscriptionTaxAndComplianceSettingsEeaWithdrawalRightType := [ "WITHDRAWAL_RIGHT_TYPE_UNSPECIFIED", "WITHDRAWAL_RIGHT_DIGITAL_CONTENT", "WITHDRAWAL_RIGHT_SERVICE" ]

valid {
    input.Body.defaultLanguage == STRING
    input.Body.defaultPrice.currency == STRING
    input.Body.defaultPrice.priceMicros == STRING
    input.Body.gracePeriod == STRING
    input.Body.listings.STRING.benefits[_] == STRING
    input.Body.listings.STRING.description == STRING
    input.Body.listings.STRING.title == STRING
    input.Body.managedProductTaxesAndComplianceSettings.eeaWithdrawalRightType == enum_ManagedProductTaxAndComplianceSettingsEeaWithdrawalRightType[_]
    input.Body.managedProductTaxesAndComplianceSettings.isTokenizedDigitalAsset == BOOLEAN
    input.Body.managedProductTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.eligibleForStreamingServiceTaxRate == BOOLEAN
    input.Body.managedProductTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.streamingTaxType == enum_RegionalTaxRateInfoStreamingTaxType[_]
    input.Body.managedProductTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.taxTier == enum_RegionalTaxRateInfoTaxTier[_]
    input.Body.packageName == STRING
    input.Body.prices.STRING.currency == STRING
    input.Body.prices.STRING.priceMicros == STRING
    input.Body.purchaseType == enum_InAppProductPurchaseType[_]
    input.Body.sku == STRING
    input.Body.status == enum_InAppProductStatus[_]
    input.Body.subscriptionPeriod == STRING
    input.Body.subscriptionTaxesAndComplianceSettings.eeaWithdrawalRightType == enum_SubscriptionTaxAndComplianceSettingsEeaWithdrawalRightType[_]
    input.Body.subscriptionTaxesAndComplianceSettings.isTokenizedDigitalAsset == BOOLEAN
    input.Body.subscriptionTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.eligibleForStreamingServiceTaxRate == BOOLEAN
    input.Body.subscriptionTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.streamingTaxType == enum_RegionalTaxRateInfoStreamingTaxType[_]
    input.Body.subscriptionTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.taxTier == enum_RegionalTaxRateInfoTaxTier[_]
    input.Body.trialPeriod == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.sku == STRING
    input.Qs.autoConvertMissingPrices == BOOLEAN
    input.Qs.latencyTolerance == enum_LatencyToleranceParameter[_]
    input.ProviderMetadata.Region == STRING
}

androidpublisher.inappproducts.update

enum_InAppProductPurchaseType := [ "purchaseTypeUnspecified", "managedUser", "subscription" ]
enum_InAppProductStatus := [ "statusUnspecified", "active", "inactive" ]
enum_LatencyToleranceParameter := [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ]
enum_ManagedProductTaxAndComplianceSettingsEeaWithdrawalRightType := [ "WITHDRAWAL_RIGHT_TYPE_UNSPECIFIED", "WITHDRAWAL_RIGHT_DIGITAL_CONTENT", "WITHDRAWAL_RIGHT_SERVICE" ]
enum_RegionalTaxRateInfoStreamingTaxType := [ "STREAMING_TAX_TYPE_UNSPECIFIED", "STREAMING_TAX_TYPE_TELCO_VIDEO_RENTAL", "STREAMING_TAX_TYPE_TELCO_VIDEO_SALES", "STREAMING_TAX_TYPE_TELCO_VIDEO_MULTI_CHANNEL", "STREAMING_TAX_TYPE_TELCO_AUDIO_RENTAL", "STREAMING_TAX_TYPE_TELCO_AUDIO_SALES", "STREAMING_TAX_TYPE_TELCO_AUDIO_MULTI_CHANNEL" ]
enum_RegionalTaxRateInfoTaxTier := [ "TAX_TIER_UNSPECIFIED", "TAX_TIER_BOOKS_1", "TAX_TIER_NEWS_1", "TAX_TIER_NEWS_2", "TAX_TIER_MUSIC_OR_AUDIO_1", "TAX_TIER_LIVE_OR_BROADCAST_1" ]
enum_SubscriptionTaxAndComplianceSettingsEeaWithdrawalRightType := [ "WITHDRAWAL_RIGHT_TYPE_UNSPECIFIED", "WITHDRAWAL_RIGHT_DIGITAL_CONTENT", "WITHDRAWAL_RIGHT_SERVICE" ]

valid {
    input.Body.defaultLanguage == STRING
    input.Body.defaultPrice.currency == STRING
    input.Body.defaultPrice.priceMicros == STRING
    input.Body.gracePeriod == STRING
    input.Body.listings.STRING.benefits[_] == STRING
    input.Body.listings.STRING.description == STRING
    input.Body.listings.STRING.title == STRING
    input.Body.managedProductTaxesAndComplianceSettings.eeaWithdrawalRightType == enum_ManagedProductTaxAndComplianceSettingsEeaWithdrawalRightType[_]
    input.Body.managedProductTaxesAndComplianceSettings.isTokenizedDigitalAsset == BOOLEAN
    input.Body.managedProductTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.eligibleForStreamingServiceTaxRate == BOOLEAN
    input.Body.managedProductTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.streamingTaxType == enum_RegionalTaxRateInfoStreamingTaxType[_]
    input.Body.managedProductTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.taxTier == enum_RegionalTaxRateInfoTaxTier[_]
    input.Body.packageName == STRING
    input.Body.prices.STRING.currency == STRING
    input.Body.prices.STRING.priceMicros == STRING
    input.Body.purchaseType == enum_InAppProductPurchaseType[_]
    input.Body.sku == STRING
    input.Body.status == enum_InAppProductStatus[_]
    input.Body.subscriptionPeriod == STRING
    input.Body.subscriptionTaxesAndComplianceSettings.eeaWithdrawalRightType == enum_SubscriptionTaxAndComplianceSettingsEeaWithdrawalRightType[_]
    input.Body.subscriptionTaxesAndComplianceSettings.isTokenizedDigitalAsset == BOOLEAN
    input.Body.subscriptionTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.eligibleForStreamingServiceTaxRate == BOOLEAN
    input.Body.subscriptionTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.streamingTaxType == enum_RegionalTaxRateInfoStreamingTaxType[_]
    input.Body.subscriptionTaxesAndComplianceSettings.taxRateInfoByRegionCode.STRING.taxTier == enum_RegionalTaxRateInfoTaxTier[_]
    input.Body.trialPeriod == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.sku == STRING
    input.Qs.allowMissing == BOOLEAN
    input.Qs.autoConvertMissingPrices == BOOLEAN
    input.Qs.latencyTolerance == enum_LatencyToleranceParameter[_]
    input.ProviderMetadata.Region == STRING
}

androidpublisher.inapppurchases.get

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

androidpublisher.internalappsharingartifacts.uploadapk

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

androidpublisher.internalappsharingartifacts.uploadbundle

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

androidpublisher.monetization.convertRegionPrices

valid {
    input.Body.price.currencyCode == STRING
    input.Body.price.nanos == INTEGER
    input.Body.price.units == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.archive

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

androidpublisher.monetization.subscriptions.basePlans.activate

enum_ActivateBasePlanRequestLatencyTolerance := [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ]

valid {
    input.Body.basePlanId == STRING
    input.Body.latencyTolerance == enum_ActivateBasePlanRequestLatencyTolerance[_]
    input.Body.packageName == STRING
    input.Body.productId == STRING
    input.ReqMap.basePlanId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.productId == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.basePlans.batchMigratePrices

enum_MigrateBasePlanPricesRequestLatencyTolerance := [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ]
enum_RegionalPriceMigrationConfigPriceIncreaseType := [ "PRICE_INCREASE_TYPE_UNSPECIFIED", "PRICE_INCREASE_TYPE_OPT_IN", "PRICE_INCREASE_TYPE_OPT_OUT" ]

valid {
    input.Body.requests[_].basePlanId == STRING
    input.Body.requests[_].latencyTolerance == enum_MigrateBasePlanPricesRequestLatencyTolerance[_]
    input.Body.requests[_].packageName == STRING
    input.Body.requests[_].productId == STRING
    input.Body.requests[_].regionalPriceMigrations[_].oldestAllowedPriceVersionTime == STRING
    input.Body.requests[_].regionalPriceMigrations[_].priceIncreaseType == enum_RegionalPriceMigrationConfigPriceIncreaseType[_]
    input.Body.requests[_].regionalPriceMigrations[_].regionCode == STRING
    input.Body.requests[_].regionsVersion.version == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.productId == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.basePlans.batchUpdateStates

enum_ActivateBasePlanRequestLatencyTolerance := [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ]
enum_DeactivateBasePlanRequestLatencyTolerance := [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ]

valid {
    input.Body.requests[_].activateBasePlanRequest.basePlanId == STRING
    input.Body.requests[_].activateBasePlanRequest.latencyTolerance == enum_ActivateBasePlanRequestLatencyTolerance[_]
    input.Body.requests[_].activateBasePlanRequest.packageName == STRING
    input.Body.requests[_].activateBasePlanRequest.productId == STRING
    input.Body.requests[_].deactivateBasePlanRequest.basePlanId == STRING
    input.Body.requests[_].deactivateBasePlanRequest.latencyTolerance == enum_DeactivateBasePlanRequestLatencyTolerance[_]
    input.Body.requests[_].deactivateBasePlanRequest.packageName == STRING
    input.Body.requests[_].deactivateBasePlanRequest.productId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.productId == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.basePlans.deactivate

enum_DeactivateBasePlanRequestLatencyTolerance := [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ]

valid {
    input.Body.basePlanId == STRING
    input.Body.latencyTolerance == enum_DeactivateBasePlanRequestLatencyTolerance[_]
    input.Body.packageName == STRING
    input.Body.productId == STRING
    input.ReqMap.basePlanId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.productId == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.basePlans.delete

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

androidpublisher.monetization.subscriptions.basePlans.migratePrices

enum_MigrateBasePlanPricesRequestLatencyTolerance := [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ]
enum_RegionalPriceMigrationConfigPriceIncreaseType := [ "PRICE_INCREASE_TYPE_UNSPECIFIED", "PRICE_INCREASE_TYPE_OPT_IN", "PRICE_INCREASE_TYPE_OPT_OUT" ]

valid {
    input.Body.basePlanId == STRING
    input.Body.latencyTolerance == enum_MigrateBasePlanPricesRequestLatencyTolerance[_]
    input.Body.packageName == STRING
    input.Body.productId == STRING
    input.Body.regionalPriceMigrations[_].oldestAllowedPriceVersionTime == STRING
    input.Body.regionalPriceMigrations[_].priceIncreaseType == enum_RegionalPriceMigrationConfigPriceIncreaseType[_]
    input.Body.regionalPriceMigrations[_].regionCode == STRING
    input.Body.regionsVersion.version == STRING
    input.ReqMap.basePlanId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.productId == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.basePlans.offers.activate

enum_ActivateSubscriptionOfferRequestLatencyTolerance := [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ]

valid {
    input.Body.basePlanId == STRING
    input.Body.latencyTolerance == enum_ActivateSubscriptionOfferRequestLatencyTolerance[_]
    input.Body.offerId == STRING
    input.Body.packageName == STRING
    input.Body.productId == STRING
    input.ReqMap.basePlanId == STRING
    input.ReqMap.offerId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.productId == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.basePlans.offers.batchGet

valid {
    input.Body.requests[_].basePlanId == STRING
    input.Body.requests[_].offerId == STRING
    input.Body.requests[_].packageName == STRING
    input.Body.requests[_].productId == STRING
    input.ReqMap.basePlanId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.productId == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.basePlans.offers.batchUpdate

enum_UpdateSubscriptionOfferRequestLatencyTolerance := [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ]

valid {
    input.Body.requests[_].allowMissing == BOOLEAN
    input.Body.requests[_].latencyTolerance == enum_UpdateSubscriptionOfferRequestLatencyTolerance[_]
    input.Body.requests[_].regionsVersion.version == STRING
    input.Body.requests[_].subscriptionOffer.basePlanId == STRING
    input.Body.requests[_].subscriptionOffer.offerId == STRING
    input.Body.requests[_].subscriptionOffer.offerTags[_].tag == STRING
    input.Body.requests[_].subscriptionOffer.otherRegionsConfig.otherRegionsNewSubscriberAvailability == BOOLEAN
    input.Body.requests[_].subscriptionOffer.packageName == STRING
    input.Body.requests[_].subscriptionOffer.phases[_].duration == STRING
    input.Body.requests[_].subscriptionOffer.phases[_].otherRegionsConfig.absoluteDiscounts.eurPrice.currencyCode == STRING
    input.Body.requests[_].subscriptionOffer.phases[_].otherRegionsConfig.absoluteDiscounts.eurPrice.nanos == INTEGER
    input.Body.requests[_].subscriptionOffer.phases[_].otherRegionsConfig.absoluteDiscounts.eurPrice.units == STRING
    input.Body.requests[_].subscriptionOffer.phases[_].otherRegionsConfig.absoluteDiscounts.usdPrice.currencyCode == STRING
    input.Body.requests[_].subscriptionOffer.phases[_].otherRegionsConfig.absoluteDiscounts.usdPrice.nanos == INTEGER
    input.Body.requests[_].subscriptionOffer.phases[_].otherRegionsConfig.absoluteDiscounts.usdPrice.units == STRING
    input.Body.requests[_].subscriptionOffer.phases[_].otherRegionsConfig.free.STRING == STRING
    input.Body.requests[_].subscriptionOffer.phases[_].otherRegionsConfig.otherRegionsPrices.eurPrice.currencyCode == STRING
    input.Body.requests[_].subscriptionOffer.phases[_].otherRegionsConfig.otherRegionsPrices.eurPrice.nanos == INTEGER
    input.Body.requests[_].subscriptionOffer.phases[_].otherRegionsConfig.otherRegionsPrices.eurPrice.units == STRING
    input.Body.requests[_].subscriptionOffer.phases[_].otherRegionsConfig.otherRegionsPrices.usdPrice.currencyCode == STRING
    input.Body.requests[_].subscriptionOffer.phases[_].otherRegionsConfig.otherRegionsPrices.usdPrice.nanos == INTEGER
    input.Body.requests[_].subscriptionOffer.phases[_].otherRegionsConfig.otherRegionsPrices.usdPrice.units == STRING
    input.Body.requests[_].subscriptionOffer.phases[_].otherRegionsConfig.relativeDiscount == NUMBER
    input.Body.requests[_].subscriptionOffer.phases[_].recurrenceCount == INTEGER
    input.Body.requests[_].subscriptionOffer.phases[_].regionalConfigs[_].absoluteDiscount.currencyCode == STRING
    input.Body.requests[_].subscriptionOffer.phases[_].regionalConfigs[_].absoluteDiscount.nanos == INTEGER
    input.Body.requests[_].subscriptionOffer.phases[_].regionalConfigs[_].absoluteDiscount.units == STRING
    input.Body.requests[_].subscriptionOffer.phases[_].regionalConfigs[_].free.STRING == STRING
    input.Body.requests[_].subscriptionOffer.phases[_].regionalConfigs[_].price.currencyCode == STRING
    input.Body.requests[_].subscriptionOffer.phases[_].regionalConfigs[_].price.nanos == INTEGER
    input.Body.requests[_].subscriptionOffer.phases[_].regionalConfigs[_].price.units == STRING
    input.Body.requests[_].subscriptionOffer.phases[_].regionalConfigs[_].regionCode == STRING
    input.Body.requests[_].subscriptionOffer.phases[_].regionalConfigs[_].relativeDiscount == NUMBER
    input.Body.requests[_].subscriptionOffer.productId == STRING
    input.Body.requests[_].subscriptionOffer.regionalConfigs[_].newSubscriberAvailability == BOOLEAN
    input.Body.requests[_].subscriptionOffer.regionalConfigs[_].regionCode == STRING
    input.Body.requests[_].subscriptionOffer.targeting.acquisitionRule.scope.anySubscriptionInApp.STRING == STRING
    input.Body.requests[_].subscriptionOffer.targeting.acquisitionRule.scope.specificSubscriptionInApp == STRING
    input.Body.requests[_].subscriptionOffer.targeting.acquisitionRule.scope.thisSubscription.STRING == STRING
    input.Body.requests[_].subscriptionOffer.targeting.upgradeRule.billingPeriodDuration == STRING
    input.Body.requests[_].subscriptionOffer.targeting.upgradeRule.oncePerUser == BOOLEAN
    input.Body.requests[_].subscriptionOffer.targeting.upgradeRule.scope.anySubscriptionInApp.STRING == STRING
    input.Body.requests[_].subscriptionOffer.targeting.upgradeRule.scope.specificSubscriptionInApp == STRING
    input.Body.requests[_].subscriptionOffer.targeting.upgradeRule.scope.thisSubscription.STRING == STRING
    input.Body.requests[_].updateMask == STRING
    input.ReqMap.basePlanId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.productId == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.basePlans.offers.batchUpdateStates

enum_ActivateSubscriptionOfferRequestLatencyTolerance := [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ]
enum_DeactivateSubscriptionOfferRequestLatencyTolerance := [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ]

valid {
    input.Body.requests[_].activateSubscriptionOfferRequest.basePlanId == STRING
    input.Body.requests[_].activateSubscriptionOfferRequest.latencyTolerance == enum_ActivateSubscriptionOfferRequestLatencyTolerance[_]
    input.Body.requests[_].activateSubscriptionOfferRequest.offerId == STRING
    input.Body.requests[_].activateSubscriptionOfferRequest.packageName == STRING
    input.Body.requests[_].activateSubscriptionOfferRequest.productId == STRING
    input.Body.requests[_].deactivateSubscriptionOfferRequest.basePlanId == STRING
    input.Body.requests[_].deactivateSubscriptionOfferRequest.latencyTolerance == enum_DeactivateSubscriptionOfferRequestLatencyTolerance[_]
    input.Body.requests[_].deactivateSubscriptionOfferRequest.offerId == STRING
    input.Body.requests[_].deactivateSubscriptionOfferRequest.packageName == STRING
    input.Body.requests[_].deactivateSubscriptionOfferRequest.productId == STRING
    input.ReqMap.basePlanId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.productId == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.basePlans.offers.create

valid {
    input.Body.basePlanId == STRING
    input.Body.offerId == STRING
    input.Body.offerTags[_].tag == STRING
    input.Body.otherRegionsConfig.otherRegionsNewSubscriberAvailability == BOOLEAN
    input.Body.packageName == STRING
    input.Body.phases[_].duration == STRING
    input.Body.phases[_].otherRegionsConfig.absoluteDiscounts.eurPrice.currencyCode == STRING
    input.Body.phases[_].otherRegionsConfig.absoluteDiscounts.eurPrice.nanos == INTEGER
    input.Body.phases[_].otherRegionsConfig.absoluteDiscounts.eurPrice.units == STRING
    input.Body.phases[_].otherRegionsConfig.absoluteDiscounts.usdPrice.currencyCode == STRING
    input.Body.phases[_].otherRegionsConfig.absoluteDiscounts.usdPrice.nanos == INTEGER
    input.Body.phases[_].otherRegionsConfig.absoluteDiscounts.usdPrice.units == STRING
    input.Body.phases[_].otherRegionsConfig.free.STRING == STRING
    input.Body.phases[_].otherRegionsConfig.otherRegionsPrices.eurPrice.currencyCode == STRING
    input.Body.phases[_].otherRegionsConfig.otherRegionsPrices.eurPrice.nanos == INTEGER
    input.Body.phases[_].otherRegionsConfig.otherRegionsPrices.eurPrice.units == STRING
    input.Body.phases[_].otherRegionsConfig.otherRegionsPrices.usdPrice.currencyCode == STRING
    input.Body.phases[_].otherRegionsConfig.otherRegionsPrices.usdPrice.nanos == INTEGER
    input.Body.phases[_].otherRegionsConfig.otherRegionsPrices.usdPrice.units == STRING
    input.Body.phases[_].otherRegionsConfig.relativeDiscount == NUMBER
    input.Body.phases[_].recurrenceCount == INTEGER
    input.Body.phases[_].regionalConfigs[_].absoluteDiscount.currencyCode == STRING
    input.Body.phases[_].regionalConfigs[_].absoluteDiscount.nanos == INTEGER
    input.Body.phases[_].regionalConfigs[_].absoluteDiscount.units == STRING
    input.Body.phases[_].regionalConfigs[_].free.STRING == STRING
    input.Body.phases[_].regionalConfigs[_].price.currencyCode == STRING
    input.Body.phases[_].regionalConfigs[_].price.nanos == INTEGER
    input.Body.phases[_].regionalConfigs[_].price.units == STRING
    input.Body.phases[_].regionalConfigs[_].regionCode == STRING
    input.Body.phases[_].regionalConfigs[_].relativeDiscount == NUMBER
    input.Body.productId == STRING
    input.Body.regionalConfigs[_].newSubscriberAvailability == BOOLEAN
    input.Body.regionalConfigs[_].regionCode == STRING
    input.Body.targeting.acquisitionRule.scope.anySubscriptionInApp.STRING == STRING
    input.Body.targeting.acquisitionRule.scope.specificSubscriptionInApp == STRING
    input.Body.targeting.acquisitionRule.scope.thisSubscription.STRING == STRING
    input.Body.targeting.upgradeRule.billingPeriodDuration == STRING
    input.Body.targeting.upgradeRule.oncePerUser == BOOLEAN
    input.Body.targeting.upgradeRule.scope.anySubscriptionInApp.STRING == STRING
    input.Body.targeting.upgradeRule.scope.specificSubscriptionInApp == STRING
    input.Body.targeting.upgradeRule.scope.thisSubscription.STRING == STRING
    input.ReqMap.basePlanId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.productId == STRING
    input.Qs.offerId == STRING
    input.Qs.regionsVersion.version == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.basePlans.offers.deactivate

enum_DeactivateSubscriptionOfferRequestLatencyTolerance := [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ]

valid {
    input.Body.basePlanId == STRING
    input.Body.latencyTolerance == enum_DeactivateSubscriptionOfferRequestLatencyTolerance[_]
    input.Body.offerId == STRING
    input.Body.packageName == STRING
    input.Body.productId == STRING
    input.ReqMap.basePlanId == STRING
    input.ReqMap.offerId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.productId == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.basePlans.offers.delete

valid {
    input.ReqMap.basePlanId == STRING
    input.ReqMap.offerId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.productId == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.basePlans.offers.get

valid {
    input.ReqMap.basePlanId == STRING
    input.ReqMap.offerId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.productId == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.basePlans.offers.list

valid {
    input.ReqMap.basePlanId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.productId == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.basePlans.offers.patch

enum_LatencyToleranceParameter := [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ]

valid {
    input.Body.basePlanId == STRING
    input.Body.offerId == STRING
    input.Body.offerTags[_].tag == STRING
    input.Body.otherRegionsConfig.otherRegionsNewSubscriberAvailability == BOOLEAN
    input.Body.packageName == STRING
    input.Body.phases[_].duration == STRING
    input.Body.phases[_].otherRegionsConfig.absoluteDiscounts.eurPrice.currencyCode == STRING
    input.Body.phases[_].otherRegionsConfig.absoluteDiscounts.eurPrice.nanos == INTEGER
    input.Body.phases[_].otherRegionsConfig.absoluteDiscounts.eurPrice.units == STRING
    input.Body.phases[_].otherRegionsConfig.absoluteDiscounts.usdPrice.currencyCode == STRING
    input.Body.phases[_].otherRegionsConfig.absoluteDiscounts.usdPrice.nanos == INTEGER
    input.Body.phases[_].otherRegionsConfig.absoluteDiscounts.usdPrice.units == STRING
    input.Body.phases[_].otherRegionsConfig.free.STRING == STRING
    input.Body.phases[_].otherRegionsConfig.otherRegionsPrices.eurPrice.currencyCode == STRING
    input.Body.phases[_].otherRegionsConfig.otherRegionsPrices.eurPrice.nanos == INTEGER
    input.Body.phases[_].otherRegionsConfig.otherRegionsPrices.eurPrice.units == STRING
    input.Body.phases[_].otherRegionsConfig.otherRegionsPrices.usdPrice.currencyCode == STRING
    input.Body.phases[_].otherRegionsConfig.otherRegionsPrices.usdPrice.nanos == INTEGER
    input.Body.phases[_].otherRegionsConfig.otherRegionsPrices.usdPrice.units == STRING
    input.Body.phases[_].otherRegionsConfig.relativeDiscount == NUMBER
    input.Body.phases[_].recurrenceCount == INTEGER
    input.Body.phases[_].regionalConfigs[_].absoluteDiscount.currencyCode == STRING
    input.Body.phases[_].regionalConfigs[_].absoluteDiscount.nanos == INTEGER
    input.Body.phases[_].regionalConfigs[_].absoluteDiscount.units == STRING
    input.Body.phases[_].regionalConfigs[_].free.STRING == STRING
    input.Body.phases[_].regionalConfigs[_].price.currencyCode == STRING
    input.Body.phases[_].regionalConfigs[_].price.nanos == INTEGER
    input.Body.phases[_].regionalConfigs[_].price.units == STRING
    input.Body.phases[_].regionalConfigs[_].regionCode == STRING
    input.Body.phases[_].regionalConfigs[_].relativeDiscount == NUMBER
    input.Body.productId == STRING
    input.Body.regionalConfigs[_].newSubscriberAvailability == BOOLEAN
    input.Body.regionalConfigs[_].regionCode == STRING
    input.Body.targeting.acquisitionRule.scope.anySubscriptionInApp.STRING == STRING
    input.Body.targeting.acquisitionRule.scope.specificSubscriptionInApp == STRING
    input.Body.targeting.acquisitionRule.scope.thisSubscription.STRING == STRING
    input.Body.targeting.upgradeRule.billingPeriodDuration == STRING
    input.Body.targeting.upgradeRule.oncePerUser == BOOLEAN
    input.Body.targeting.upgradeRule.scope.anySubscriptionInApp.STRING == STRING
    input.Body.targeting.upgradeRule.scope.specificSubscriptionInApp == STRING
    input.Body.targeting.upgradeRule.scope.thisSubscription.STRING == STRING
    input.ReqMap.basePlanId == STRING
    input.ReqMap.offerId == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.productId == STRING
    input.Qs.allowMissing == BOOLEAN
    input.Qs.latencyTolerance == enum_LatencyToleranceParameter[_]
    input.Qs.regionsVersion.version == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.batchGet

valid {
    input.ReqMap.packageName == STRING
    input.Qs.productIds == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.batchUpdate

enum_AutoRenewingBasePlanTypeProrationMode := [ "SUBSCRIPTION_PRORATION_MODE_UNSPECIFIED", "SUBSCRIPTION_PRORATION_MODE_CHARGE_ON_NEXT_BILLING_DATE", "SUBSCRIPTION_PRORATION_MODE_CHARGE_FULL_PRICE_IMMEDIATELY" ]
enum_AutoRenewingBasePlanTypeResubscribeState := [ "RESUBSCRIBE_STATE_UNSPECIFIED", "RESUBSCRIBE_STATE_ACTIVE", "RESUBSCRIBE_STATE_INACTIVE" ]
enum_PrepaidBasePlanTypeTimeExtension := [ "TIME_EXTENSION_UNSPECIFIED", "TIME_EXTENSION_ACTIVE", "TIME_EXTENSION_INACTIVE" ]
enum_RegionalTaxRateInfoStreamingTaxType := [ "STREAMING_TAX_TYPE_UNSPECIFIED", "STREAMING_TAX_TYPE_TELCO_VIDEO_RENTAL", "STREAMING_TAX_TYPE_TELCO_VIDEO_SALES", "STREAMING_TAX_TYPE_TELCO_VIDEO_MULTI_CHANNEL", "STREAMING_TAX_TYPE_TELCO_AUDIO_RENTAL", "STREAMING_TAX_TYPE_TELCO_AUDIO_SALES", "STREAMING_TAX_TYPE_TELCO_AUDIO_MULTI_CHANNEL" ]
enum_RegionalTaxRateInfoTaxTier := [ "TAX_TIER_UNSPECIFIED", "TAX_TIER_BOOKS_1", "TAX_TIER_NEWS_1", "TAX_TIER_NEWS_2", "TAX_TIER_MUSIC_OR_AUDIO_1", "TAX_TIER_LIVE_OR_BROADCAST_1" ]
enum_SubscriptionTaxAndComplianceSettingsEeaWithdrawalRightType := [ "WITHDRAWAL_RIGHT_TYPE_UNSPECIFIED", "WITHDRAWAL_RIGHT_DIGITAL_CONTENT", "WITHDRAWAL_RIGHT_SERVICE" ]
enum_UpdateSubscriptionRequestLatencyTolerance := [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ]

valid {
    input.Body.requests[_].allowMissing == BOOLEAN
    input.Body.requests[_].latencyTolerance == enum_UpdateSubscriptionRequestLatencyTolerance[_]
    input.Body.requests[_].regionsVersion.version == STRING
    input.Body.requests[_].subscription.basePlans[_].autoRenewingBasePlanType.accountHoldDuration == STRING
    input.Body.requests[_].subscription.basePlans[_].autoRenewingBasePlanType.billingPeriodDuration == STRING
    input.Body.requests[_].subscription.basePlans[_].autoRenewingBasePlanType.gracePeriodDuration == STRING
    input.Body.requests[_].subscription.basePlans[_].autoRenewingBasePlanType.legacyCompatible == BOOLEAN
    input.Body.requests[_].subscription.basePlans[_].autoRenewingBasePlanType.legacyCompatibleSubscriptionOfferId == STRING
    input.Body.requests[_].subscription.basePlans[_].autoRenewingBasePlanType.prorationMode == enum_AutoRenewingBasePlanTypeProrationMode[_]
    input.Body.requests[_].subscription.basePlans[_].autoRenewingBasePlanType.resubscribeState == enum_AutoRenewingBasePlanTypeResubscribeState[_]
    input.Body.requests[_].subscription.basePlans[_].basePlanId == STRING
    input.Body.requests[_].subscription.basePlans[_].offerTags[_].tag == STRING
    input.Body.requests[_].subscription.basePlans[_].otherRegionsConfig.eurPrice.currencyCode == STRING
    input.Body.requests[_].subscription.basePlans[_].otherRegionsConfig.eurPrice.nanos == INTEGER
    input.Body.requests[_].subscription.basePlans[_].otherRegionsConfig.eurPrice.units == STRING
    input.Body.requests[_].subscription.basePlans[_].otherRegionsConfig.newSubscriberAvailability == BOOLEAN
    input.Body.requests[_].subscription.basePlans[_].otherRegionsConfig.usdPrice.currencyCode == STRING
    input.Body.requests[_].subscription.basePlans[_].otherRegionsConfig.usdPrice.nanos == INTEGER
    input.Body.requests[_].subscription.basePlans[_].otherRegionsConfig.usdPrice.units == STRING
    input.Body.requests[_].subscription.basePlans[_].prepaidBasePlanType.billingPeriodDuration == STRING
    input.Body.requests[_].subscription.basePlans[_].prepaidBasePlanType.timeExtension == enum_PrepaidBasePlanTypeTimeExtension[_]
    input.Body.requests[_].subscription.basePlans[_].regionalConfigs[_].newSubscriberAvailability == BOOLEAN
    input.Body.requests[_].subscription.basePlans[_].regionalConfigs[_].price.currencyCode == STRING
    input.Body.requests[_].subscription.basePlans[_].regionalConfigs[_].price.nanos == INTEGER
    input.Body.requests[_].subscription.basePlans[_].regionalConfigs[_].price.units == STRING
    input.Body.requests[_].subscription.basePlans[_].regionalConfigs[_].regionCode == STRING
    input.Body.requests[_].subscription.listings[_].benefits[_] == STRING
    input.Body.requests[_].subscription.listings[_].description == STRING
    input.Body.requests[_].subscription.listings[_].languageCode == STRING
    input.Body.requests[_].subscription.listings[_].title == STRING
    input.Body.requests[_].subscription.packageName == STRING
    input.Body.requests[_].subscription.productId == STRING
    input.Body.requests[_].subscription.taxAndComplianceSettings.eeaWithdrawalRightType == enum_SubscriptionTaxAndComplianceSettingsEeaWithdrawalRightType[_]
    input.Body.requests[_].subscription.taxAndComplianceSettings.isTokenizedDigitalAsset == BOOLEAN
    input.Body.requests[_].subscription.taxAndComplianceSettings.taxRateInfoByRegionCode.STRING.eligibleForStreamingServiceTaxRate == BOOLEAN
    input.Body.requests[_].subscription.taxAndComplianceSettings.taxRateInfoByRegionCode.STRING.streamingTaxType == enum_RegionalTaxRateInfoStreamingTaxType[_]
    input.Body.requests[_].subscription.taxAndComplianceSettings.taxRateInfoByRegionCode.STRING.taxTier == enum_RegionalTaxRateInfoTaxTier[_]
    input.Body.requests[_].updateMask == STRING
    input.ReqMap.packageName == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.create

enum_AutoRenewingBasePlanTypeProrationMode := [ "SUBSCRIPTION_PRORATION_MODE_UNSPECIFIED", "SUBSCRIPTION_PRORATION_MODE_CHARGE_ON_NEXT_BILLING_DATE", "SUBSCRIPTION_PRORATION_MODE_CHARGE_FULL_PRICE_IMMEDIATELY" ]
enum_AutoRenewingBasePlanTypeResubscribeState := [ "RESUBSCRIBE_STATE_UNSPECIFIED", "RESUBSCRIBE_STATE_ACTIVE", "RESUBSCRIBE_STATE_INACTIVE" ]
enum_PrepaidBasePlanTypeTimeExtension := [ "TIME_EXTENSION_UNSPECIFIED", "TIME_EXTENSION_ACTIVE", "TIME_EXTENSION_INACTIVE" ]
enum_RegionalTaxRateInfoStreamingTaxType := [ "STREAMING_TAX_TYPE_UNSPECIFIED", "STREAMING_TAX_TYPE_TELCO_VIDEO_RENTAL", "STREAMING_TAX_TYPE_TELCO_VIDEO_SALES", "STREAMING_TAX_TYPE_TELCO_VIDEO_MULTI_CHANNEL", "STREAMING_TAX_TYPE_TELCO_AUDIO_RENTAL", "STREAMING_TAX_TYPE_TELCO_AUDIO_SALES", "STREAMING_TAX_TYPE_TELCO_AUDIO_MULTI_CHANNEL" ]
enum_RegionalTaxRateInfoTaxTier := [ "TAX_TIER_UNSPECIFIED", "TAX_TIER_BOOKS_1", "TAX_TIER_NEWS_1", "TAX_TIER_NEWS_2", "TAX_TIER_MUSIC_OR_AUDIO_1", "TAX_TIER_LIVE_OR_BROADCAST_1" ]
enum_SubscriptionTaxAndComplianceSettingsEeaWithdrawalRightType := [ "WITHDRAWAL_RIGHT_TYPE_UNSPECIFIED", "WITHDRAWAL_RIGHT_DIGITAL_CONTENT", "WITHDRAWAL_RIGHT_SERVICE" ]

valid {
    input.Body.basePlans[_].autoRenewingBasePlanType.accountHoldDuration == STRING
    input.Body.basePlans[_].autoRenewingBasePlanType.billingPeriodDuration == STRING
    input.Body.basePlans[_].autoRenewingBasePlanType.gracePeriodDuration == STRING
    input.Body.basePlans[_].autoRenewingBasePlanType.legacyCompatible == BOOLEAN
    input.Body.basePlans[_].autoRenewingBasePlanType.legacyCompatibleSubscriptionOfferId == STRING
    input.Body.basePlans[_].autoRenewingBasePlanType.prorationMode == enum_AutoRenewingBasePlanTypeProrationMode[_]
    input.Body.basePlans[_].autoRenewingBasePlanType.resubscribeState == enum_AutoRenewingBasePlanTypeResubscribeState[_]
    input.Body.basePlans[_].basePlanId == STRING
    input.Body.basePlans[_].offerTags[_].tag == STRING
    input.Body.basePlans[_].otherRegionsConfig.eurPrice.currencyCode == STRING
    input.Body.basePlans[_].otherRegionsConfig.eurPrice.nanos == INTEGER
    input.Body.basePlans[_].otherRegionsConfig.eurPrice.units == STRING
    input.Body.basePlans[_].otherRegionsConfig.newSubscriberAvailability == BOOLEAN
    input.Body.basePlans[_].otherRegionsConfig.usdPrice.currencyCode == STRING
    input.Body.basePlans[_].otherRegionsConfig.usdPrice.nanos == INTEGER
    input.Body.basePlans[_].otherRegionsConfig.usdPrice.units == STRING
    input.Body.basePlans[_].prepaidBasePlanType.billingPeriodDuration == STRING
    input.Body.basePlans[_].prepaidBasePlanType.timeExtension == enum_PrepaidBasePlanTypeTimeExtension[_]
    input.Body.basePlans[_].regionalConfigs[_].newSubscriberAvailability == BOOLEAN
    input.Body.basePlans[_].regionalConfigs[_].price.currencyCode == STRING
    input.Body.basePlans[_].regionalConfigs[_].price.nanos == INTEGER
    input.Body.basePlans[_].regionalConfigs[_].price.units == STRING
    input.Body.basePlans[_].regionalConfigs[_].regionCode == STRING
    input.Body.listings[_].benefits[_] == STRING
    input.Body.listings[_].description == STRING
    input.Body.listings[_].languageCode == STRING
    input.Body.listings[_].title == STRING
    input.Body.packageName == STRING
    input.Body.productId == STRING
    input.Body.taxAndComplianceSettings.eeaWithdrawalRightType == enum_SubscriptionTaxAndComplianceSettingsEeaWithdrawalRightType[_]
    input.Body.taxAndComplianceSettings.isTokenizedDigitalAsset == BOOLEAN
    input.Body.taxAndComplianceSettings.taxRateInfoByRegionCode.STRING.eligibleForStreamingServiceTaxRate == BOOLEAN
    input.Body.taxAndComplianceSettings.taxRateInfoByRegionCode.STRING.streamingTaxType == enum_RegionalTaxRateInfoStreamingTaxType[_]
    input.Body.taxAndComplianceSettings.taxRateInfoByRegionCode.STRING.taxTier == enum_RegionalTaxRateInfoTaxTier[_]
    input.ReqMap.packageName == STRING
    input.Qs.productId == STRING
    input.Qs.regionsVersion.version == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.delete

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

androidpublisher.monetization.subscriptions.get

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

androidpublisher.monetization.subscriptions.list

valid {
    input.ReqMap.packageName == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.showArchived == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

androidpublisher.monetization.subscriptions.patch

enum_AutoRenewingBasePlanTypeProrationMode := [ "SUBSCRIPTION_PRORATION_MODE_UNSPECIFIED", "SUBSCRIPTION_PRORATION_MODE_CHARGE_ON_NEXT_BILLING_DATE", "SUBSCRIPTION_PRORATION_MODE_CHARGE_FULL_PRICE_IMMEDIATELY" ]
enum_AutoRenewingBasePlanTypeResubscribeState := [ "RESUBSCRIBE_STATE_UNSPECIFIED", "RESUBSCRIBE_STATE_ACTIVE", "RESUBSCRIBE_STATE_INACTIVE" ]
enum_LatencyToleranceParameter := [ "PRODUCT_UPDATE_LATENCY_TOLERANCE_UNSPECIFIED", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_SENSITIVE", "PRODUCT_UPDATE_LATENCY_TOLERANCE_LATENCY_TOLERANT" ]
enum_PrepaidBasePlanTypeTimeExtension := [ "TIME_EXTENSION_UNSPECIFIED", "TIME_EXTENSION_ACTIVE", "TIME_EXTENSION_INACTIVE" ]
enum_RegionalTaxRateInfoStreamingTaxType := [ "STREAMING_TAX_TYPE_UNSPECIFIED", "STREAMING_TAX_TYPE_TELCO_VIDEO_RENTAL", "STREAMING_TAX_TYPE_TELCO_VIDEO_SALES", "STREAMING_TAX_TYPE_TELCO_VIDEO_MULTI_CHANNEL", "STREAMING_TAX_TYPE_TELCO_AUDIO_RENTAL", "STREAMING_TAX_TYPE_TELCO_AUDIO_SALES", "STREAMING_TAX_TYPE_TELCO_AUDIO_MULTI_CHANNEL" ]
enum_RegionalTaxRateInfoTaxTier := [ "TAX_TIER_UNSPECIFIED", "TAX_TIER_BOOKS_1", "TAX_TIER_NEWS_1", "TAX_TIER_NEWS_2", "TAX_TIER_MUSIC_OR_AUDIO_1", "TAX_TIER_LIVE_OR_BROADCAST_1" ]
enum_SubscriptionTaxAndComplianceSettingsEeaWithdrawalRightType := [ "WITHDRAWAL_RIGHT_TYPE_UNSPECIFIED", "WITHDRAWAL_RIGHT_DIGITAL_CONTENT", "WITHDRAWAL_RIGHT_SERVICE" ]

valid {
    input.Body.basePlans[_].autoRenewingBasePlanType.accountHoldDuration == STRING
    input.Body.basePlans[_].autoRenewingBasePlanType.billingPeriodDuration == STRING
    input.Body.basePlans[_].autoRenewingBasePlanType.gracePeriodDuration == STRING
    input.Body.basePlans[_].autoRenewingBasePlanType.legacyCompatible == BOOLEAN
    input.Body.basePlans[_].autoRenewingBasePlanType.legacyCompatibleSubscriptionOfferId == STRING
    input.Body.basePlans[_].autoRenewingBasePlanType.prorationMode == enum_AutoRenewingBasePlanTypeProrationMode[_]
    input.Body.basePlans[_].autoRenewingBasePlanType.resubscribeState == enum_AutoRenewingBasePlanTypeResubscribeState[_]
    input.Body.basePlans[_].basePlanId == STRING
    input.Body.basePlans[_].offerTags[_].tag == STRING
    input.Body.basePlans[_].otherRegionsConfig.eurPrice.currencyCode == STRING
    input.Body.basePlans[_].otherRegionsConfig.eurPrice.nanos == INTEGER
    input.Body.basePlans[_].otherRegionsConfig.eurPrice.units == STRING
    input.Body.basePlans[_].otherRegionsConfig.newSubscriberAvailability == BOOLEAN
    input.Body.basePlans[_].otherRegionsConfig.usdPrice.currencyCode == STRING
    input.Body.basePlans[_].otherRegionsConfig.usdPrice.nanos == INTEGER
    input.Body.basePlans[_].otherRegionsConfig.usdPrice.units == STRING
    input.Body.basePlans[_].prepaidBasePlanType.billingPeriodDuration == STRING
    input.Body.basePlans[_].prepaidBasePlanType.timeExtension == enum_PrepaidBasePlanTypeTimeExtension[_]
    input.Body.basePlans[_].regionalConfigs[_].newSubscriberAvailability == BOOLEAN
    input.Body.basePlans[_].regionalConfigs[_].price.currencyCode == STRING
    input.Body.basePlans[_].regionalConfigs[_].price.nanos == INTEGER
    input.Body.basePlans[_].regionalConfigs[_].price.units == STRING
    input.Body.basePlans[_].regionalConfigs[_].regionCode == STRING
    input.Body.listings[_].benefits[_] == STRING
    input.Body.listings[_].description == STRING
    input.Body.listings[_].languageCode == STRING
    input.Body.listings[_].title == STRING
    input.Body.packageName == STRING
    input.Body.productId == STRING
    input.Body.taxAndComplianceSettings.eeaWithdrawalRightType == enum_SubscriptionTaxAndComplianceSettingsEeaWithdrawalRightType[_]
    input.Body.taxAndComplianceSettings.isTokenizedDigitalAsset == BOOLEAN
    input.Body.taxAndComplianceSettings.taxRateInfoByRegionCode.STRING.eligibleForStreamingServiceTaxRate == BOOLEAN
    input.Body.taxAndComplianceSettings.taxRateInfoByRegionCode.STRING.streamingTaxType == enum_RegionalTaxRateInfoStreamingTaxType[_]
    input.Body.taxAndComplianceSettings.taxRateInfoByRegionCode.STRING.taxTier == enum_RegionalTaxRateInfoTaxTier[_]
    input.ReqMap.packageName == STRING
    input.ReqMap.productId == STRING
    input.Qs.allowMissing == BOOLEAN
    input.Qs.latencyTolerance == enum_LatencyToleranceParameter[_]
    input.Qs.regionsVersion.version == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.orders.refund

valid {
    input.ReqMap.orderId == STRING
    input.ReqMap.packageName == STRING
    input.Qs.revoke == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

androidpublisher.purchases.products.acknowledge

valid {
    input.Body.developerPayload == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.productId == STRING
    input.ReqMap.token == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.purchases.products.consume

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

androidpublisher.purchases.products.get

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

androidpublisher.purchases.subscriptions.acknowledge

valid {
    input.Body.developerPayload == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.subscriptionId == STRING
    input.ReqMap.token == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.purchases.subscriptions.cancel

valid {
    input.ReqMap.packageName == STRING
    input.ReqMap.subscriptionId == STRING
    input.ReqMap.token == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.purchases.subscriptions.defer

valid {
    input.Body.deferralInfo.desiredExpiryTimeMillis == STRING
    input.Body.deferralInfo.expectedExpiryTimeMillis == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.subscriptionId == STRING
    input.ReqMap.token == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.purchases.subscriptions.get

valid {
    input.ReqMap.packageName == STRING
    input.ReqMap.subscriptionId == STRING
    input.ReqMap.token == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.purchases.subscriptions.refund

valid {
    input.ReqMap.packageName == STRING
    input.ReqMap.subscriptionId == STRING
    input.ReqMap.token == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.purchases.subscriptions.revoke

valid {
    input.ReqMap.packageName == STRING
    input.ReqMap.subscriptionId == STRING
    input.ReqMap.token == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.purchases.subscriptionsv2.get

valid {
    input.ReqMap.packageName == STRING
    input.ReqMap.token == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.purchases.subscriptionsv2.revoke

valid {
    input.Body.revocationContext.proratedRefund.STRING == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.token == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.purchases.voidedpurchases.list

valid {
    input.ReqMap.packageName == STRING
    input.Qs.endTime == STRING
    input.Qs.includeQuantityBasedPartialRefund == BOOLEAN
    input.Qs.maxResults == INTEGER
    input.Qs.startIndex == INTEGER
    input.Qs.startTime == STRING
    input.Qs.token == STRING
    input.Qs.type == INTEGER
    input.ProviderMetadata.Region == STRING
}

androidpublisher.reviews.get

valid {
    input.ReqMap.packageName == STRING
    input.ReqMap.reviewId == STRING
    input.Qs.translationLanguage == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.reviews.list

valid {
    input.ReqMap.packageName == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.startIndex == INTEGER
    input.Qs.token == STRING
    input.Qs.translationLanguage == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.reviews.reply

valid {
    input.Body.replyText == STRING
    input.ReqMap.packageName == STRING
    input.ReqMap.reviewId == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.systemapks.variants.create

valid {
    input.Body.deviceSpec.screenDensity == INTEGER
    input.Body.deviceSpec.supportedAbis[_] == STRING
    input.Body.deviceSpec.supportedLocales[_] == STRING
    input.Body.options.rotated == BOOLEAN
    input.Body.options.uncompressedDexFiles == BOOLEAN
    input.Body.options.uncompressedNativeLibraries == BOOLEAN
    input.ReqMap.packageName == STRING
    input.ReqMap.versionCode == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.systemapks.variants.download

valid {
    input.ReqMap.packageName == STRING
    input.ReqMap.variantId == INTEGER
    input.ReqMap.versionCode == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.systemapks.variants.get

valid {
    input.ReqMap.packageName == STRING
    input.ReqMap.variantId == INTEGER
    input.ReqMap.versionCode == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.systemapks.variants.list

valid {
    input.ReqMap.packageName == STRING
    input.ReqMap.versionCode == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.users.create

enum_UserDeveloperAccountPermissions := [ "DEVELOPER_LEVEL_PERMISSION_UNSPECIFIED", "CAN_SEE_ALL_APPS", "CAN_VIEW_FINANCIAL_DATA_GLOBAL", "CAN_MANAGE_PERMISSIONS_GLOBAL", "CAN_EDIT_GAMES_GLOBAL", "CAN_PUBLISH_GAMES_GLOBAL", "CAN_REPLY_TO_REVIEWS_GLOBAL", "CAN_MANAGE_PUBLIC_APKS_GLOBAL", "CAN_MANAGE_TRACK_APKS_GLOBAL", "CAN_MANAGE_TRACK_USERS_GLOBAL", "CAN_MANAGE_PUBLIC_LISTING_GLOBAL", "CAN_MANAGE_DRAFT_APPS_GLOBAL", "CAN_CREATE_MANAGED_PLAY_APPS_GLOBAL", "CAN_CHANGE_MANAGED_PLAY_SETTING_GLOBAL", "CAN_MANAGE_ORDERS_GLOBAL", "CAN_MANAGE_APP_CONTENT_GLOBAL", "CAN_VIEW_NON_FINANCIAL_DATA_GLOBAL", "CAN_VIEW_APP_QUALITY_GLOBAL", "CAN_MANAGE_DEEPLINKS_GLOBAL" ]

valid {
    input.Body.developerAccountPermissions[_] == enum_UserDeveloperAccountPermissions[_]
    input.Body.email == STRING
    input.Body.expirationTime == STRING
    input.Body.name == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

androidpublisher.users.delete

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

androidpublisher.users.list

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

androidpublisher.users.patch

enum_UserDeveloperAccountPermissions := [ "DEVELOPER_LEVEL_PERMISSION_UNSPECIFIED", "CAN_SEE_ALL_APPS", "CAN_VIEW_FINANCIAL_DATA_GLOBAL", "CAN_MANAGE_PERMISSIONS_GLOBAL", "CAN_EDIT_GAMES_GLOBAL", "CAN_PUBLISH_GAMES_GLOBAL", "CAN_REPLY_TO_REVIEWS_GLOBAL", "CAN_MANAGE_PUBLIC_APKS_GLOBAL", "CAN_MANAGE_TRACK_APKS_GLOBAL", "CAN_MANAGE_TRACK_USERS_GLOBAL", "CAN_MANAGE_PUBLIC_LISTING_GLOBAL", "CAN_MANAGE_DRAFT_APPS_GLOBAL", "CAN_CREATE_MANAGED_PLAY_APPS_GLOBAL", "CAN_CHANGE_MANAGED_PLAY_SETTING_GLOBAL", "CAN_MANAGE_ORDERS_GLOBAL", "CAN_MANAGE_APP_CONTENT_GLOBAL", "CAN_VIEW_NON_FINANCIAL_DATA_GLOBAL", "CAN_VIEW_APP_QUALITY_GLOBAL", "CAN_MANAGE_DEEPLINKS_GLOBAL" ]

valid {
    input.Body.developerAccountPermissions[_] == enum_UserDeveloperAccountPermissions[_]
    input.Body.email == STRING
    input.Body.expirationTime == STRING
    input.Body.name == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}