FIREBASEHOSTING

firebasehosting.operations.cancel

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

firebasehosting.operations.delete

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

firebasehosting.operations.list

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

firebasehosting.projects.operations.get

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

firebasehosting.projects.sites.channels.create

valid {
    input.Body.expireTime == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.retainedReleaseCount == INTEGER
    input.Body.ttl == STRING
    input.ReqMap.parent == STRING
    input.Qs.channelId == STRING
    input.ProviderMetadata.Region == STRING
}

firebasehosting.projects.sites.channels.delete

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

firebasehosting.projects.sites.channels.get

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

firebasehosting.projects.sites.channels.list

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

firebasehosting.projects.sites.channels.patch

valid {
    input.Body.expireTime == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.retainedReleaseCount == INTEGER
    input.Body.ttl == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

firebasehosting.projects.sites.channels.releases.create

enum_ReleaseType := [ "TYPE_UNSPECIFIED", "DEPLOY", "ROLLBACK", "SITE_DISABLE" ]
enum_ServingConfigAppAssociation := [ "AUTO", "NONE" ]
enum_ServingConfigTrailingSlashBehavior := [ "TRAILING_SLASH_BEHAVIOR_UNSPECIFIED", "ADD", "REMOVE" ]
enum_VersionStatus := [ "VERSION_STATUS_UNSPECIFIED", "CREATED", "FINALIZED", "DELETED", "ABANDONED", "EXPIRED", "CLONING" ]

valid {
    input.Body.message == STRING
    input.Body.name == STRING
    input.Body.releaseTime == STRING
    input.Body.releaseUser.email == STRING
    input.Body.releaseUser.imageUrl == STRING
    input.Body.type == enum_ReleaseType[_]
    input.Body.version.config.appAssociation == enum_ServingConfigAppAssociation[_]
    input.Body.version.config.cleanUrls == BOOLEAN
    input.Body.version.config.headers[_].glob == STRING
    input.Body.version.config.headers[_].headers.STRING == STRING
    input.Body.version.config.headers[_].regex == STRING
    input.Body.version.config.i18n.root == STRING
    input.Body.version.config.redirects[_].glob == STRING
    input.Body.version.config.redirects[_].location == STRING
    input.Body.version.config.redirects[_].regex == STRING
    input.Body.version.config.redirects[_].statusCode == INTEGER
    input.Body.version.config.rewrites[_].dynamicLinks == BOOLEAN
    input.Body.version.config.rewrites[_].function == STRING
    input.Body.version.config.rewrites[_].functionRegion == STRING
    input.Body.version.config.rewrites[_].glob == STRING
    input.Body.version.config.rewrites[_].path == STRING
    input.Body.version.config.rewrites[_].regex == STRING
    input.Body.version.config.rewrites[_].run.region == STRING
    input.Body.version.config.rewrites[_].run.serviceId == STRING
    input.Body.version.config.rewrites[_].run.tag == STRING
    input.Body.version.config.trailingSlashBehavior == enum_ServingConfigTrailingSlashBehavior[_]
    input.Body.version.createTime == STRING
    input.Body.version.createUser.email == STRING
    input.Body.version.createUser.imageUrl == STRING
    input.Body.version.deleteTime == STRING
    input.Body.version.deleteUser.email == STRING
    input.Body.version.deleteUser.imageUrl == STRING
    input.Body.version.fileCount == STRING
    input.Body.version.finalizeTime == STRING
    input.Body.version.finalizeUser.email == STRING
    input.Body.version.finalizeUser.imageUrl == STRING
    input.Body.version.labels.STRING == STRING
    input.Body.version.name == STRING
    input.Body.version.status == enum_VersionStatus[_]
    input.Body.version.versionBytes == STRING
    input.ReqMap.parent == STRING
    input.Qs.versionName == STRING
    input.ProviderMetadata.Region == STRING
}

firebasehosting.projects.sites.channels.releases.get

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

firebasehosting.projects.sites.channels.releases.list

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

firebasehosting.projects.sites.create

valid {
    input.Body.appId == STRING
    input.Body.labels.STRING == STRING
    input.ReqMap.parent == STRING
    input.Qs.siteId == STRING
    input.Qs.validateOnly == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

firebasehosting.projects.sites.customDomains.create

enum_CustomDomainCertPreference := [ "TYPE_UNSPECIFIED", "TEMPORARY", "GROUPED", "PROJECT_GROUPED", "DEDICATED" ]

valid {
    input.Body.annotations.STRING == STRING
    input.Body.certPreference == enum_CustomDomainCertPreference[_]
    input.Body.labels.STRING == STRING
    input.Body.redirectTarget == STRING
    input.ReqMap.parent == STRING
    input.Qs.customDomainId == STRING
    input.Qs.validateOnly == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

firebasehosting.projects.sites.customDomains.delete

valid {
    input.ReqMap.name == STRING
    input.Qs.allowMissing == BOOLEAN
    input.Qs.etag == STRING
    input.Qs.validateOnly == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

firebasehosting.projects.sites.customDomains.get

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

firebasehosting.projects.sites.customDomains.list

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

firebasehosting.projects.sites.customDomains.operations.cancel

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

firebasehosting.projects.sites.customDomains.operations.delete

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

firebasehosting.projects.sites.customDomains.operations.get

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

firebasehosting.projects.sites.customDomains.operations.list

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

firebasehosting.projects.sites.customDomains.patch

enum_CustomDomainCertPreference := [ "TYPE_UNSPECIFIED", "TEMPORARY", "GROUPED", "PROJECT_GROUPED", "DEDICATED" ]

valid {
    input.Body.annotations.STRING == STRING
    input.Body.certPreference == enum_CustomDomainCertPreference[_]
    input.Body.labels.STRING == STRING
    input.Body.redirectTarget == STRING
    input.ReqMap.name == STRING
    input.Qs.allowMissing == BOOLEAN
    input.Qs.updateMask == STRING
    input.Qs.validateOnly == BOOLEAN
    input.ProviderMetadata.Region == STRING
}

firebasehosting.projects.sites.customDomains.undelete

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

firebasehosting.projects.sites.delete

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

firebasehosting.projects.sites.domains.create

enum_DomainProvisioningCertStatus := [ "CERT_STATUS_UNSPECIFIED", "CERT_PENDING", "CERT_MISSING", "CERT_PROCESSING", "CERT_PROPAGATING", "CERT_ACTIVE", "CERT_ERROR" ]
enum_DomainProvisioningDnsStatus := [ "DNS_STATUS_UNSPECIFIED", "DNS_PENDING", "DNS_MISSING", "DNS_PARTIAL_MATCH", "DNS_MATCH", "DNS_EXTRANEOUS_MATCH" ]
enum_DomainRedirectType := [ "REDIRECT_TYPE_UNSPECIFIED", "MOVED_PERMANENTLY" ]
enum_DomainStatus := [ "DOMAIN_STATUS_UNSPECIFIED", "DOMAIN_CHANGE_PENDING", "DOMAIN_ACTIVE", "DOMAIN_VERIFICATION_REQUIRED", "DOMAIN_VERIFICATION_LOST" ]

valid {
    input.Body.domainName == STRING
    input.Body.domainRedirect.domainName == STRING
    input.Body.domainRedirect.type == enum_DomainRedirectType[_]
    input.Body.provisioning.certChallengeDiscoveredTxt[_] == STRING
    input.Body.provisioning.certChallengeDns.domainName == STRING
    input.Body.provisioning.certChallengeDns.token == STRING
    input.Body.provisioning.certChallengeHttp.path == STRING
    input.Body.provisioning.certChallengeHttp.token == STRING
    input.Body.provisioning.certStatus == enum_DomainProvisioningCertStatus[_]
    input.Body.provisioning.discoveredIps[_] == STRING
    input.Body.provisioning.dnsFetchTime == STRING
    input.Body.provisioning.dnsStatus == enum_DomainProvisioningDnsStatus[_]
    input.Body.provisioning.expectedIps[_] == STRING
    input.Body.site == STRING
    input.Body.status == enum_DomainStatus[_]
    input.Body.updateTime == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

firebasehosting.projects.sites.domains.delete

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

firebasehosting.projects.sites.domains.get

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

firebasehosting.projects.sites.domains.list

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

firebasehosting.projects.sites.domains.update

enum_DomainProvisioningCertStatus := [ "CERT_STATUS_UNSPECIFIED", "CERT_PENDING", "CERT_MISSING", "CERT_PROCESSING", "CERT_PROPAGATING", "CERT_ACTIVE", "CERT_ERROR" ]
enum_DomainProvisioningDnsStatus := [ "DNS_STATUS_UNSPECIFIED", "DNS_PENDING", "DNS_MISSING", "DNS_PARTIAL_MATCH", "DNS_MATCH", "DNS_EXTRANEOUS_MATCH" ]
enum_DomainRedirectType := [ "REDIRECT_TYPE_UNSPECIFIED", "MOVED_PERMANENTLY" ]
enum_DomainStatus := [ "DOMAIN_STATUS_UNSPECIFIED", "DOMAIN_CHANGE_PENDING", "DOMAIN_ACTIVE", "DOMAIN_VERIFICATION_REQUIRED", "DOMAIN_VERIFICATION_LOST" ]

valid {
    input.Body.domainName == STRING
    input.Body.domainRedirect.domainName == STRING
    input.Body.domainRedirect.type == enum_DomainRedirectType[_]
    input.Body.provisioning.certChallengeDiscoveredTxt[_] == STRING
    input.Body.provisioning.certChallengeDns.domainName == STRING
    input.Body.provisioning.certChallengeDns.token == STRING
    input.Body.provisioning.certChallengeHttp.path == STRING
    input.Body.provisioning.certChallengeHttp.token == STRING
    input.Body.provisioning.certStatus == enum_DomainProvisioningCertStatus[_]
    input.Body.provisioning.discoveredIps[_] == STRING
    input.Body.provisioning.dnsFetchTime == STRING
    input.Body.provisioning.dnsStatus == enum_DomainProvisioningDnsStatus[_]
    input.Body.provisioning.expectedIps[_] == STRING
    input.Body.site == STRING
    input.Body.status == enum_DomainStatus[_]
    input.Body.updateTime == STRING
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

firebasehosting.projects.sites.get

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

firebasehosting.projects.sites.getConfig

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

firebasehosting.projects.sites.list

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

firebasehosting.projects.sites.patch

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

firebasehosting.projects.sites.releases.create

enum_ReleaseType := [ "TYPE_UNSPECIFIED", "DEPLOY", "ROLLBACK", "SITE_DISABLE" ]
enum_ServingConfigAppAssociation := [ "AUTO", "NONE" ]
enum_ServingConfigTrailingSlashBehavior := [ "TRAILING_SLASH_BEHAVIOR_UNSPECIFIED", "ADD", "REMOVE" ]
enum_VersionStatus := [ "VERSION_STATUS_UNSPECIFIED", "CREATED", "FINALIZED", "DELETED", "ABANDONED", "EXPIRED", "CLONING" ]

valid {
    input.Body.message == STRING
    input.Body.name == STRING
    input.Body.releaseTime == STRING
    input.Body.releaseUser.email == STRING
    input.Body.releaseUser.imageUrl == STRING
    input.Body.type == enum_ReleaseType[_]
    input.Body.version.config.appAssociation == enum_ServingConfigAppAssociation[_]
    input.Body.version.config.cleanUrls == BOOLEAN
    input.Body.version.config.headers[_].glob == STRING
    input.Body.version.config.headers[_].headers.STRING == STRING
    input.Body.version.config.headers[_].regex == STRING
    input.Body.version.config.i18n.root == STRING
    input.Body.version.config.redirects[_].glob == STRING
    input.Body.version.config.redirects[_].location == STRING
    input.Body.version.config.redirects[_].regex == STRING
    input.Body.version.config.redirects[_].statusCode == INTEGER
    input.Body.version.config.rewrites[_].dynamicLinks == BOOLEAN
    input.Body.version.config.rewrites[_].function == STRING
    input.Body.version.config.rewrites[_].functionRegion == STRING
    input.Body.version.config.rewrites[_].glob == STRING
    input.Body.version.config.rewrites[_].path == STRING
    input.Body.version.config.rewrites[_].regex == STRING
    input.Body.version.config.rewrites[_].run.region == STRING
    input.Body.version.config.rewrites[_].run.serviceId == STRING
    input.Body.version.config.rewrites[_].run.tag == STRING
    input.Body.version.config.trailingSlashBehavior == enum_ServingConfigTrailingSlashBehavior[_]
    input.Body.version.createTime == STRING
    input.Body.version.createUser.email == STRING
    input.Body.version.createUser.imageUrl == STRING
    input.Body.version.deleteTime == STRING
    input.Body.version.deleteUser.email == STRING
    input.Body.version.deleteUser.imageUrl == STRING
    input.Body.version.fileCount == STRING
    input.Body.version.finalizeTime == STRING
    input.Body.version.finalizeUser.email == STRING
    input.Body.version.finalizeUser.imageUrl == STRING
    input.Body.version.labels.STRING == STRING
    input.Body.version.name == STRING
    input.Body.version.status == enum_VersionStatus[_]
    input.Body.version.versionBytes == STRING
    input.ReqMap.parent == STRING
    input.Qs.versionName == STRING
    input.ProviderMetadata.Region == STRING
}

firebasehosting.projects.sites.releases.get

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

firebasehosting.projects.sites.releases.list

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

firebasehosting.projects.sites.updateConfig

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

firebasehosting.projects.sites.versions.clone

valid {
    input.Body.exclude.regexes[_] == STRING
    input.Body.finalize == BOOLEAN
    input.Body.include.regexes[_] == STRING
    input.Body.sourceVersion == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

firebasehosting.projects.sites.versions.create

enum_ServingConfigAppAssociation := [ "AUTO", "NONE" ]
enum_ServingConfigTrailingSlashBehavior := [ "TRAILING_SLASH_BEHAVIOR_UNSPECIFIED", "ADD", "REMOVE" ]
enum_VersionStatus := [ "VERSION_STATUS_UNSPECIFIED", "CREATED", "FINALIZED", "DELETED", "ABANDONED", "EXPIRED", "CLONING" ]

valid {
    input.Body.config.appAssociation == enum_ServingConfigAppAssociation[_]
    input.Body.config.cleanUrls == BOOLEAN
    input.Body.config.headers[_].glob == STRING
    input.Body.config.headers[_].headers.STRING == STRING
    input.Body.config.headers[_].regex == STRING
    input.Body.config.i18n.root == STRING
    input.Body.config.redirects[_].glob == STRING
    input.Body.config.redirects[_].location == STRING
    input.Body.config.redirects[_].regex == STRING
    input.Body.config.redirects[_].statusCode == INTEGER
    input.Body.config.rewrites[_].dynamicLinks == BOOLEAN
    input.Body.config.rewrites[_].function == STRING
    input.Body.config.rewrites[_].functionRegion == STRING
    input.Body.config.rewrites[_].glob == STRING
    input.Body.config.rewrites[_].path == STRING
    input.Body.config.rewrites[_].regex == STRING
    input.Body.config.rewrites[_].run.region == STRING
    input.Body.config.rewrites[_].run.serviceId == STRING
    input.Body.config.rewrites[_].run.tag == STRING
    input.Body.config.trailingSlashBehavior == enum_ServingConfigTrailingSlashBehavior[_]
    input.Body.createTime == STRING
    input.Body.createUser.email == STRING
    input.Body.createUser.imageUrl == STRING
    input.Body.deleteTime == STRING
    input.Body.deleteUser.email == STRING
    input.Body.deleteUser.imageUrl == STRING
    input.Body.fileCount == STRING
    input.Body.finalizeTime == STRING
    input.Body.finalizeUser.email == STRING
    input.Body.finalizeUser.imageUrl == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.status == enum_VersionStatus[_]
    input.Body.versionBytes == STRING
    input.ReqMap.parent == STRING
    input.Qs.sizeBytes == STRING
    input.Qs.versionId == STRING
    input.ProviderMetadata.Region == STRING
}

firebasehosting.projects.sites.versions.delete

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

firebasehosting.projects.sites.versions.files.list

enum_StatusParameter := [ "STATUS_UNSPECIFIED", "EXPECTED", "ACTIVE" ]

valid {
    input.ReqMap.parent == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.status == enum_StatusParameter[_]
    input.ProviderMetadata.Region == STRING
}

firebasehosting.projects.sites.versions.get

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

firebasehosting.projects.sites.versions.list

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

firebasehosting.projects.sites.versions.patch

enum_ServingConfigAppAssociation := [ "AUTO", "NONE" ]
enum_ServingConfigTrailingSlashBehavior := [ "TRAILING_SLASH_BEHAVIOR_UNSPECIFIED", "ADD", "REMOVE" ]
enum_VersionStatus := [ "VERSION_STATUS_UNSPECIFIED", "CREATED", "FINALIZED", "DELETED", "ABANDONED", "EXPIRED", "CLONING" ]

valid {
    input.Body.config.appAssociation == enum_ServingConfigAppAssociation[_]
    input.Body.config.cleanUrls == BOOLEAN
    input.Body.config.headers[_].glob == STRING
    input.Body.config.headers[_].headers.STRING == STRING
    input.Body.config.headers[_].regex == STRING
    input.Body.config.i18n.root == STRING
    input.Body.config.redirects[_].glob == STRING
    input.Body.config.redirects[_].location == STRING
    input.Body.config.redirects[_].regex == STRING
    input.Body.config.redirects[_].statusCode == INTEGER
    input.Body.config.rewrites[_].dynamicLinks == BOOLEAN
    input.Body.config.rewrites[_].function == STRING
    input.Body.config.rewrites[_].functionRegion == STRING
    input.Body.config.rewrites[_].glob == STRING
    input.Body.config.rewrites[_].path == STRING
    input.Body.config.rewrites[_].regex == STRING
    input.Body.config.rewrites[_].run.region == STRING
    input.Body.config.rewrites[_].run.serviceId == STRING
    input.Body.config.rewrites[_].run.tag == STRING
    input.Body.config.trailingSlashBehavior == enum_ServingConfigTrailingSlashBehavior[_]
    input.Body.createTime == STRING
    input.Body.createUser.email == STRING
    input.Body.createUser.imageUrl == STRING
    input.Body.deleteTime == STRING
    input.Body.deleteUser.email == STRING
    input.Body.deleteUser.imageUrl == STRING
    input.Body.fileCount == STRING
    input.Body.finalizeTime == STRING
    input.Body.finalizeUser.email == STRING
    input.Body.finalizeUser.imageUrl == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.status == enum_VersionStatus[_]
    input.Body.versionBytes == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

firebasehosting.projects.sites.versions.populateFiles

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

firebasehosting.sites.channels.create

valid {
    input.Body.expireTime == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.retainedReleaseCount == INTEGER
    input.Body.ttl == STRING
    input.ReqMap.parent == STRING
    input.Qs.channelId == STRING
    input.ProviderMetadata.Region == STRING
}

firebasehosting.sites.channels.delete

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

firebasehosting.sites.channels.get

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

firebasehosting.sites.channels.list

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

firebasehosting.sites.channels.patch

valid {
    input.Body.expireTime == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.retainedReleaseCount == INTEGER
    input.Body.ttl == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

firebasehosting.sites.channels.releases.create

enum_ReleaseType := [ "TYPE_UNSPECIFIED", "DEPLOY", "ROLLBACK", "SITE_DISABLE" ]
enum_ServingConfigAppAssociation := [ "AUTO", "NONE" ]
enum_ServingConfigTrailingSlashBehavior := [ "TRAILING_SLASH_BEHAVIOR_UNSPECIFIED", "ADD", "REMOVE" ]
enum_VersionStatus := [ "VERSION_STATUS_UNSPECIFIED", "CREATED", "FINALIZED", "DELETED", "ABANDONED", "EXPIRED", "CLONING" ]

valid {
    input.Body.message == STRING
    input.Body.name == STRING
    input.Body.releaseTime == STRING
    input.Body.releaseUser.email == STRING
    input.Body.releaseUser.imageUrl == STRING
    input.Body.type == enum_ReleaseType[_]
    input.Body.version.config.appAssociation == enum_ServingConfigAppAssociation[_]
    input.Body.version.config.cleanUrls == BOOLEAN
    input.Body.version.config.headers[_].glob == STRING
    input.Body.version.config.headers[_].headers.STRING == STRING
    input.Body.version.config.headers[_].regex == STRING
    input.Body.version.config.i18n.root == STRING
    input.Body.version.config.redirects[_].glob == STRING
    input.Body.version.config.redirects[_].location == STRING
    input.Body.version.config.redirects[_].regex == STRING
    input.Body.version.config.redirects[_].statusCode == INTEGER
    input.Body.version.config.rewrites[_].dynamicLinks == BOOLEAN
    input.Body.version.config.rewrites[_].function == STRING
    input.Body.version.config.rewrites[_].functionRegion == STRING
    input.Body.version.config.rewrites[_].glob == STRING
    input.Body.version.config.rewrites[_].path == STRING
    input.Body.version.config.rewrites[_].regex == STRING
    input.Body.version.config.rewrites[_].run.region == STRING
    input.Body.version.config.rewrites[_].run.serviceId == STRING
    input.Body.version.config.rewrites[_].run.tag == STRING
    input.Body.version.config.trailingSlashBehavior == enum_ServingConfigTrailingSlashBehavior[_]
    input.Body.version.createTime == STRING
    input.Body.version.createUser.email == STRING
    input.Body.version.createUser.imageUrl == STRING
    input.Body.version.deleteTime == STRING
    input.Body.version.deleteUser.email == STRING
    input.Body.version.deleteUser.imageUrl == STRING
    input.Body.version.fileCount == STRING
    input.Body.version.finalizeTime == STRING
    input.Body.version.finalizeUser.email == STRING
    input.Body.version.finalizeUser.imageUrl == STRING
    input.Body.version.labels.STRING == STRING
    input.Body.version.name == STRING
    input.Body.version.status == enum_VersionStatus[_]
    input.Body.version.versionBytes == STRING
    input.ReqMap.parent == STRING
    input.Qs.versionName == STRING
    input.ProviderMetadata.Region == STRING
}

firebasehosting.sites.channels.releases.get

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

firebasehosting.sites.channels.releases.list

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

firebasehosting.sites.domains.create

enum_DomainProvisioningCertStatus := [ "CERT_STATUS_UNSPECIFIED", "CERT_PENDING", "CERT_MISSING", "CERT_PROCESSING", "CERT_PROPAGATING", "CERT_ACTIVE", "CERT_ERROR" ]
enum_DomainProvisioningDnsStatus := [ "DNS_STATUS_UNSPECIFIED", "DNS_PENDING", "DNS_MISSING", "DNS_PARTIAL_MATCH", "DNS_MATCH", "DNS_EXTRANEOUS_MATCH" ]
enum_DomainRedirectType := [ "REDIRECT_TYPE_UNSPECIFIED", "MOVED_PERMANENTLY" ]
enum_DomainStatus := [ "DOMAIN_STATUS_UNSPECIFIED", "DOMAIN_CHANGE_PENDING", "DOMAIN_ACTIVE", "DOMAIN_VERIFICATION_REQUIRED", "DOMAIN_VERIFICATION_LOST" ]

valid {
    input.Body.domainName == STRING
    input.Body.domainRedirect.domainName == STRING
    input.Body.domainRedirect.type == enum_DomainRedirectType[_]
    input.Body.provisioning.certChallengeDiscoveredTxt[_] == STRING
    input.Body.provisioning.certChallengeDns.domainName == STRING
    input.Body.provisioning.certChallengeDns.token == STRING
    input.Body.provisioning.certChallengeHttp.path == STRING
    input.Body.provisioning.certChallengeHttp.token == STRING
    input.Body.provisioning.certStatus == enum_DomainProvisioningCertStatus[_]
    input.Body.provisioning.discoveredIps[_] == STRING
    input.Body.provisioning.dnsFetchTime == STRING
    input.Body.provisioning.dnsStatus == enum_DomainProvisioningDnsStatus[_]
    input.Body.provisioning.expectedIps[_] == STRING
    input.Body.site == STRING
    input.Body.status == enum_DomainStatus[_]
    input.Body.updateTime == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

firebasehosting.sites.domains.delete

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

firebasehosting.sites.domains.get

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

firebasehosting.sites.domains.list

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

firebasehosting.sites.domains.update

enum_DomainProvisioningCertStatus := [ "CERT_STATUS_UNSPECIFIED", "CERT_PENDING", "CERT_MISSING", "CERT_PROCESSING", "CERT_PROPAGATING", "CERT_ACTIVE", "CERT_ERROR" ]
enum_DomainProvisioningDnsStatus := [ "DNS_STATUS_UNSPECIFIED", "DNS_PENDING", "DNS_MISSING", "DNS_PARTIAL_MATCH", "DNS_MATCH", "DNS_EXTRANEOUS_MATCH" ]
enum_DomainRedirectType := [ "REDIRECT_TYPE_UNSPECIFIED", "MOVED_PERMANENTLY" ]
enum_DomainStatus := [ "DOMAIN_STATUS_UNSPECIFIED", "DOMAIN_CHANGE_PENDING", "DOMAIN_ACTIVE", "DOMAIN_VERIFICATION_REQUIRED", "DOMAIN_VERIFICATION_LOST" ]

valid {
    input.Body.domainName == STRING
    input.Body.domainRedirect.domainName == STRING
    input.Body.domainRedirect.type == enum_DomainRedirectType[_]
    input.Body.provisioning.certChallengeDiscoveredTxt[_] == STRING
    input.Body.provisioning.certChallengeDns.domainName == STRING
    input.Body.provisioning.certChallengeDns.token == STRING
    input.Body.provisioning.certChallengeHttp.path == STRING
    input.Body.provisioning.certChallengeHttp.token == STRING
    input.Body.provisioning.certStatus == enum_DomainProvisioningCertStatus[_]
    input.Body.provisioning.discoveredIps[_] == STRING
    input.Body.provisioning.dnsFetchTime == STRING
    input.Body.provisioning.dnsStatus == enum_DomainProvisioningDnsStatus[_]
    input.Body.provisioning.expectedIps[_] == STRING
    input.Body.site == STRING
    input.Body.status == enum_DomainStatus[_]
    input.Body.updateTime == STRING
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

firebasehosting.sites.getConfig

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

firebasehosting.sites.releases.create

enum_ReleaseType := [ "TYPE_UNSPECIFIED", "DEPLOY", "ROLLBACK", "SITE_DISABLE" ]
enum_ServingConfigAppAssociation := [ "AUTO", "NONE" ]
enum_ServingConfigTrailingSlashBehavior := [ "TRAILING_SLASH_BEHAVIOR_UNSPECIFIED", "ADD", "REMOVE" ]
enum_VersionStatus := [ "VERSION_STATUS_UNSPECIFIED", "CREATED", "FINALIZED", "DELETED", "ABANDONED", "EXPIRED", "CLONING" ]

valid {
    input.Body.message == STRING
    input.Body.name == STRING
    input.Body.releaseTime == STRING
    input.Body.releaseUser.email == STRING
    input.Body.releaseUser.imageUrl == STRING
    input.Body.type == enum_ReleaseType[_]
    input.Body.version.config.appAssociation == enum_ServingConfigAppAssociation[_]
    input.Body.version.config.cleanUrls == BOOLEAN
    input.Body.version.config.headers[_].glob == STRING
    input.Body.version.config.headers[_].headers.STRING == STRING
    input.Body.version.config.headers[_].regex == STRING
    input.Body.version.config.i18n.root == STRING
    input.Body.version.config.redirects[_].glob == STRING
    input.Body.version.config.redirects[_].location == STRING
    input.Body.version.config.redirects[_].regex == STRING
    input.Body.version.config.redirects[_].statusCode == INTEGER
    input.Body.version.config.rewrites[_].dynamicLinks == BOOLEAN
    input.Body.version.config.rewrites[_].function == STRING
    input.Body.version.config.rewrites[_].functionRegion == STRING
    input.Body.version.config.rewrites[_].glob == STRING
    input.Body.version.config.rewrites[_].path == STRING
    input.Body.version.config.rewrites[_].regex == STRING
    input.Body.version.config.rewrites[_].run.region == STRING
    input.Body.version.config.rewrites[_].run.serviceId == STRING
    input.Body.version.config.rewrites[_].run.tag == STRING
    input.Body.version.config.trailingSlashBehavior == enum_ServingConfigTrailingSlashBehavior[_]
    input.Body.version.createTime == STRING
    input.Body.version.createUser.email == STRING
    input.Body.version.createUser.imageUrl == STRING
    input.Body.version.deleteTime == STRING
    input.Body.version.deleteUser.email == STRING
    input.Body.version.deleteUser.imageUrl == STRING
    input.Body.version.fileCount == STRING
    input.Body.version.finalizeTime == STRING
    input.Body.version.finalizeUser.email == STRING
    input.Body.version.finalizeUser.imageUrl == STRING
    input.Body.version.labels.STRING == STRING
    input.Body.version.name == STRING
    input.Body.version.status == enum_VersionStatus[_]
    input.Body.version.versionBytes == STRING
    input.ReqMap.parent == STRING
    input.Qs.versionName == STRING
    input.ProviderMetadata.Region == STRING
}

firebasehosting.sites.releases.get

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

firebasehosting.sites.releases.list

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

firebasehosting.sites.updateConfig

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

firebasehosting.sites.versions.clone

valid {
    input.Body.exclude.regexes[_] == STRING
    input.Body.finalize == BOOLEAN
    input.Body.include.regexes[_] == STRING
    input.Body.sourceVersion == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

firebasehosting.sites.versions.create

enum_ServingConfigAppAssociation := [ "AUTO", "NONE" ]
enum_ServingConfigTrailingSlashBehavior := [ "TRAILING_SLASH_BEHAVIOR_UNSPECIFIED", "ADD", "REMOVE" ]
enum_VersionStatus := [ "VERSION_STATUS_UNSPECIFIED", "CREATED", "FINALIZED", "DELETED", "ABANDONED", "EXPIRED", "CLONING" ]

valid {
    input.Body.config.appAssociation == enum_ServingConfigAppAssociation[_]
    input.Body.config.cleanUrls == BOOLEAN
    input.Body.config.headers[_].glob == STRING
    input.Body.config.headers[_].headers.STRING == STRING
    input.Body.config.headers[_].regex == STRING
    input.Body.config.i18n.root == STRING
    input.Body.config.redirects[_].glob == STRING
    input.Body.config.redirects[_].location == STRING
    input.Body.config.redirects[_].regex == STRING
    input.Body.config.redirects[_].statusCode == INTEGER
    input.Body.config.rewrites[_].dynamicLinks == BOOLEAN
    input.Body.config.rewrites[_].function == STRING
    input.Body.config.rewrites[_].functionRegion == STRING
    input.Body.config.rewrites[_].glob == STRING
    input.Body.config.rewrites[_].path == STRING
    input.Body.config.rewrites[_].regex == STRING
    input.Body.config.rewrites[_].run.region == STRING
    input.Body.config.rewrites[_].run.serviceId == STRING
    input.Body.config.rewrites[_].run.tag == STRING
    input.Body.config.trailingSlashBehavior == enum_ServingConfigTrailingSlashBehavior[_]
    input.Body.createTime == STRING
    input.Body.createUser.email == STRING
    input.Body.createUser.imageUrl == STRING
    input.Body.deleteTime == STRING
    input.Body.deleteUser.email == STRING
    input.Body.deleteUser.imageUrl == STRING
    input.Body.fileCount == STRING
    input.Body.finalizeTime == STRING
    input.Body.finalizeUser.email == STRING
    input.Body.finalizeUser.imageUrl == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.status == enum_VersionStatus[_]
    input.Body.versionBytes == STRING
    input.ReqMap.parent == STRING
    input.Qs.sizeBytes == STRING
    input.Qs.versionId == STRING
    input.ProviderMetadata.Region == STRING
}

firebasehosting.sites.versions.delete

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

firebasehosting.sites.versions.files.list

enum_StatusParameter := [ "STATUS_UNSPECIFIED", "EXPECTED", "ACTIVE" ]

valid {
    input.ReqMap.parent == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.status == enum_StatusParameter[_]
    input.ProviderMetadata.Region == STRING
}

firebasehosting.sites.versions.get

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

firebasehosting.sites.versions.list

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

firebasehosting.sites.versions.patch

enum_ServingConfigAppAssociation := [ "AUTO", "NONE" ]
enum_ServingConfigTrailingSlashBehavior := [ "TRAILING_SLASH_BEHAVIOR_UNSPECIFIED", "ADD", "REMOVE" ]
enum_VersionStatus := [ "VERSION_STATUS_UNSPECIFIED", "CREATED", "FINALIZED", "DELETED", "ABANDONED", "EXPIRED", "CLONING" ]

valid {
    input.Body.config.appAssociation == enum_ServingConfigAppAssociation[_]
    input.Body.config.cleanUrls == BOOLEAN
    input.Body.config.headers[_].glob == STRING
    input.Body.config.headers[_].headers.STRING == STRING
    input.Body.config.headers[_].regex == STRING
    input.Body.config.i18n.root == STRING
    input.Body.config.redirects[_].glob == STRING
    input.Body.config.redirects[_].location == STRING
    input.Body.config.redirects[_].regex == STRING
    input.Body.config.redirects[_].statusCode == INTEGER
    input.Body.config.rewrites[_].dynamicLinks == BOOLEAN
    input.Body.config.rewrites[_].function == STRING
    input.Body.config.rewrites[_].functionRegion == STRING
    input.Body.config.rewrites[_].glob == STRING
    input.Body.config.rewrites[_].path == STRING
    input.Body.config.rewrites[_].regex == STRING
    input.Body.config.rewrites[_].run.region == STRING
    input.Body.config.rewrites[_].run.serviceId == STRING
    input.Body.config.rewrites[_].run.tag == STRING
    input.Body.config.trailingSlashBehavior == enum_ServingConfigTrailingSlashBehavior[_]
    input.Body.createTime == STRING
    input.Body.createUser.email == STRING
    input.Body.createUser.imageUrl == STRING
    input.Body.deleteTime == STRING
    input.Body.deleteUser.email == STRING
    input.Body.deleteUser.imageUrl == STRING
    input.Body.fileCount == STRING
    input.Body.finalizeTime == STRING
    input.Body.finalizeUser.email == STRING
    input.Body.finalizeUser.imageUrl == STRING
    input.Body.labels.STRING == STRING
    input.Body.name == STRING
    input.Body.status == enum_VersionStatus[_]
    input.Body.versionBytes == STRING
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

firebasehosting.sites.versions.populateFiles

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