PROD_TT_SASPORTAL

prod_tt_sasportal.customers.deployments.create

valid {
    input.Body.displayName == STRING
    input.Body.sasUserIds[_] == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.customers.deployments.delete

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

prod_tt_sasportal.customers.deployments.devices.create

enum_SasPortalDeviceAirInterfaceRadioTechnology := [ "RADIO_TECHNOLOGY_UNSPECIFIED", "E_UTRA", "CAMBIUM_NETWORKS", "FOUR_G_BBW_SAA_1", "NR", "DOODLE_CBRS", "CW", "REDLINE", "TARANA_WIRELESS" ]
enum_SasPortalDeviceConfigCategory := [ "DEVICE_CATEGORY_UNSPECIFIED", "DEVICE_CATEGORY_A", "DEVICE_CATEGORY_B" ]
enum_SasPortalDeviceConfigMeasurementCapabilities := [ "MEASUREMENT_CAPABILITY_UNSPECIFIED", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITH_GRANT", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITHOUT_GRANT" ]
enum_SasPortalDeviceConfigState := [ "DEVICE_CONFIG_STATE_UNSPECIFIED", "DRAFT", "FINAL" ]
enum_SasPortalDeviceGrantChannelType := [ "CHANNEL_TYPE_UNSPECIFIED", "CHANNEL_TYPE_GAA", "CHANNEL_TYPE_PAL" ]
enum_SasPortalDeviceGrantState := [ "GRANT_STATE_UNSPECIFIED", "GRANT_STATE_GRANTED", "GRANT_STATE_TERMINATED", "GRANT_STATE_SUSPENDED", "GRANT_STATE_AUTHORIZED", "GRANT_STATE_EXPIRED" ]
enum_SasPortalDeviceState := [ "DEVICE_STATE_UNSPECIFIED", "RESERVED", "REGISTERED", "DEREGISTERED" ]
enum_SasPortalInstallationParamsHeightType := [ "HEIGHT_TYPE_UNSPECIFIED", "HEIGHT_TYPE_AGL", "HEIGHT_TYPE_AMSL" ]

valid {
    input.Body.activeConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.activeConfig.airInterface.supportedSpec == STRING
    input.Body.activeConfig.callSign == STRING
    input.Body.activeConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.activeConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.activeConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.activeConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.activeConfig.installationParams.antennaGain == INTEGER
    input.Body.activeConfig.installationParams.antennaModel == STRING
    input.Body.activeConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.activeConfig.installationParams.eirpCapability == INTEGER
    input.Body.activeConfig.installationParams.height == NUMBER
    input.Body.activeConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.activeConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.activeConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.activeConfig.installationParams.latitude == NUMBER
    input.Body.activeConfig.installationParams.longitude == NUMBER
    input.Body.activeConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.activeConfig.isSigned == BOOLEAN
    input.Body.activeConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.activeConfig.model.firmwareVersion == STRING
    input.Body.activeConfig.model.hardwareVersion == STRING
    input.Body.activeConfig.model.name == STRING
    input.Body.activeConfig.model.softwareVersion == STRING
    input.Body.activeConfig.model.vendor == STRING
    input.Body.activeConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.activeConfig.updateTime == STRING
    input.Body.activeConfig.userId == STRING
    input.Body.deviceMetadata.antennaModel == STRING
    input.Body.deviceMetadata.commonChannelGroup == STRING
    input.Body.deviceMetadata.interferenceCoordinationGroup == STRING
    input.Body.displayName == STRING
    input.Body.fccId == STRING
    input.Body.grantRangeAllowlists[_].highFrequencyMhz == NUMBER
    input.Body.grantRangeAllowlists[_].lowFrequencyMhz == NUMBER
    input.Body.grants[_].channelType == enum_SasPortalDeviceGrantChannelType[_]
    input.Body.grants[_].expireTime == STRING
    input.Body.grants[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.grants[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.grants[_].grantId == STRING
    input.Body.grants[_].lastHeartbeatTransmitExpireTime == STRING
    input.Body.grants[_].maxEirp == NUMBER
    input.Body.grants[_].moveList[_].dpaId == STRING
    input.Body.grants[_].moveList[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.grants[_].moveList[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.grants[_].state == enum_SasPortalDeviceGrantState[_]
    input.Body.grants[_].suspensionReason[_] == STRING
    input.Body.name == STRING
    input.Body.preloadedConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.preloadedConfig.airInterface.supportedSpec == STRING
    input.Body.preloadedConfig.callSign == STRING
    input.Body.preloadedConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.preloadedConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.preloadedConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.preloadedConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.preloadedConfig.installationParams.antennaGain == INTEGER
    input.Body.preloadedConfig.installationParams.antennaModel == STRING
    input.Body.preloadedConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.preloadedConfig.installationParams.eirpCapability == INTEGER
    input.Body.preloadedConfig.installationParams.height == NUMBER
    input.Body.preloadedConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.preloadedConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.preloadedConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.preloadedConfig.installationParams.latitude == NUMBER
    input.Body.preloadedConfig.installationParams.longitude == NUMBER
    input.Body.preloadedConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.preloadedConfig.isSigned == BOOLEAN
    input.Body.preloadedConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.preloadedConfig.model.firmwareVersion == STRING
    input.Body.preloadedConfig.model.hardwareVersion == STRING
    input.Body.preloadedConfig.model.name == STRING
    input.Body.preloadedConfig.model.softwareVersion == STRING
    input.Body.preloadedConfig.model.vendor == STRING
    input.Body.preloadedConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.preloadedConfig.updateTime == STRING
    input.Body.preloadedConfig.userId == STRING
    input.Body.serialNumber == STRING
    input.Body.state == enum_SasPortalDeviceState[_]
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.customers.deployments.devices.createSigned

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

prod_tt_sasportal.customers.deployments.devices.list

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

prod_tt_sasportal.customers.deployments.get

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

prod_tt_sasportal.customers.deployments.list

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

prod_tt_sasportal.customers.deployments.move

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

prod_tt_sasportal.customers.deployments.patch

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

prod_tt_sasportal.customers.devices.create

enum_SasPortalDeviceAirInterfaceRadioTechnology := [ "RADIO_TECHNOLOGY_UNSPECIFIED", "E_UTRA", "CAMBIUM_NETWORKS", "FOUR_G_BBW_SAA_1", "NR", "DOODLE_CBRS", "CW", "REDLINE", "TARANA_WIRELESS" ]
enum_SasPortalDeviceConfigCategory := [ "DEVICE_CATEGORY_UNSPECIFIED", "DEVICE_CATEGORY_A", "DEVICE_CATEGORY_B" ]
enum_SasPortalDeviceConfigMeasurementCapabilities := [ "MEASUREMENT_CAPABILITY_UNSPECIFIED", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITH_GRANT", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITHOUT_GRANT" ]
enum_SasPortalDeviceConfigState := [ "DEVICE_CONFIG_STATE_UNSPECIFIED", "DRAFT", "FINAL" ]
enum_SasPortalDeviceGrantChannelType := [ "CHANNEL_TYPE_UNSPECIFIED", "CHANNEL_TYPE_GAA", "CHANNEL_TYPE_PAL" ]
enum_SasPortalDeviceGrantState := [ "GRANT_STATE_UNSPECIFIED", "GRANT_STATE_GRANTED", "GRANT_STATE_TERMINATED", "GRANT_STATE_SUSPENDED", "GRANT_STATE_AUTHORIZED", "GRANT_STATE_EXPIRED" ]
enum_SasPortalDeviceState := [ "DEVICE_STATE_UNSPECIFIED", "RESERVED", "REGISTERED", "DEREGISTERED" ]
enum_SasPortalInstallationParamsHeightType := [ "HEIGHT_TYPE_UNSPECIFIED", "HEIGHT_TYPE_AGL", "HEIGHT_TYPE_AMSL" ]

valid {
    input.Body.activeConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.activeConfig.airInterface.supportedSpec == STRING
    input.Body.activeConfig.callSign == STRING
    input.Body.activeConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.activeConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.activeConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.activeConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.activeConfig.installationParams.antennaGain == INTEGER
    input.Body.activeConfig.installationParams.antennaModel == STRING
    input.Body.activeConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.activeConfig.installationParams.eirpCapability == INTEGER
    input.Body.activeConfig.installationParams.height == NUMBER
    input.Body.activeConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.activeConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.activeConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.activeConfig.installationParams.latitude == NUMBER
    input.Body.activeConfig.installationParams.longitude == NUMBER
    input.Body.activeConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.activeConfig.isSigned == BOOLEAN
    input.Body.activeConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.activeConfig.model.firmwareVersion == STRING
    input.Body.activeConfig.model.hardwareVersion == STRING
    input.Body.activeConfig.model.name == STRING
    input.Body.activeConfig.model.softwareVersion == STRING
    input.Body.activeConfig.model.vendor == STRING
    input.Body.activeConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.activeConfig.updateTime == STRING
    input.Body.activeConfig.userId == STRING
    input.Body.deviceMetadata.antennaModel == STRING
    input.Body.deviceMetadata.commonChannelGroup == STRING
    input.Body.deviceMetadata.interferenceCoordinationGroup == STRING
    input.Body.displayName == STRING
    input.Body.fccId == STRING
    input.Body.grantRangeAllowlists[_].highFrequencyMhz == NUMBER
    input.Body.grantRangeAllowlists[_].lowFrequencyMhz == NUMBER
    input.Body.grants[_].channelType == enum_SasPortalDeviceGrantChannelType[_]
    input.Body.grants[_].expireTime == STRING
    input.Body.grants[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.grants[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.grants[_].grantId == STRING
    input.Body.grants[_].lastHeartbeatTransmitExpireTime == STRING
    input.Body.grants[_].maxEirp == NUMBER
    input.Body.grants[_].moveList[_].dpaId == STRING
    input.Body.grants[_].moveList[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.grants[_].moveList[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.grants[_].state == enum_SasPortalDeviceGrantState[_]
    input.Body.grants[_].suspensionReason[_] == STRING
    input.Body.name == STRING
    input.Body.preloadedConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.preloadedConfig.airInterface.supportedSpec == STRING
    input.Body.preloadedConfig.callSign == STRING
    input.Body.preloadedConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.preloadedConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.preloadedConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.preloadedConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.preloadedConfig.installationParams.antennaGain == INTEGER
    input.Body.preloadedConfig.installationParams.antennaModel == STRING
    input.Body.preloadedConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.preloadedConfig.installationParams.eirpCapability == INTEGER
    input.Body.preloadedConfig.installationParams.height == NUMBER
    input.Body.preloadedConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.preloadedConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.preloadedConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.preloadedConfig.installationParams.latitude == NUMBER
    input.Body.preloadedConfig.installationParams.longitude == NUMBER
    input.Body.preloadedConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.preloadedConfig.isSigned == BOOLEAN
    input.Body.preloadedConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.preloadedConfig.model.firmwareVersion == STRING
    input.Body.preloadedConfig.model.hardwareVersion == STRING
    input.Body.preloadedConfig.model.name == STRING
    input.Body.preloadedConfig.model.softwareVersion == STRING
    input.Body.preloadedConfig.model.vendor == STRING
    input.Body.preloadedConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.preloadedConfig.updateTime == STRING
    input.Body.preloadedConfig.userId == STRING
    input.Body.serialNumber == STRING
    input.Body.state == enum_SasPortalDeviceState[_]
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.customers.devices.createSigned

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

prod_tt_sasportal.customers.devices.delete

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

prod_tt_sasportal.customers.devices.get

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

prod_tt_sasportal.customers.devices.list

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

prod_tt_sasportal.customers.devices.move

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

prod_tt_sasportal.customers.devices.patch

enum_SasPortalDeviceAirInterfaceRadioTechnology := [ "RADIO_TECHNOLOGY_UNSPECIFIED", "E_UTRA", "CAMBIUM_NETWORKS", "FOUR_G_BBW_SAA_1", "NR", "DOODLE_CBRS", "CW", "REDLINE", "TARANA_WIRELESS" ]
enum_SasPortalDeviceConfigCategory := [ "DEVICE_CATEGORY_UNSPECIFIED", "DEVICE_CATEGORY_A", "DEVICE_CATEGORY_B" ]
enum_SasPortalDeviceConfigMeasurementCapabilities := [ "MEASUREMENT_CAPABILITY_UNSPECIFIED", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITH_GRANT", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITHOUT_GRANT" ]
enum_SasPortalDeviceConfigState := [ "DEVICE_CONFIG_STATE_UNSPECIFIED", "DRAFT", "FINAL" ]
enum_SasPortalDeviceGrantChannelType := [ "CHANNEL_TYPE_UNSPECIFIED", "CHANNEL_TYPE_GAA", "CHANNEL_TYPE_PAL" ]
enum_SasPortalDeviceGrantState := [ "GRANT_STATE_UNSPECIFIED", "GRANT_STATE_GRANTED", "GRANT_STATE_TERMINATED", "GRANT_STATE_SUSPENDED", "GRANT_STATE_AUTHORIZED", "GRANT_STATE_EXPIRED" ]
enum_SasPortalDeviceState := [ "DEVICE_STATE_UNSPECIFIED", "RESERVED", "REGISTERED", "DEREGISTERED" ]
enum_SasPortalInstallationParamsHeightType := [ "HEIGHT_TYPE_UNSPECIFIED", "HEIGHT_TYPE_AGL", "HEIGHT_TYPE_AMSL" ]

valid {
    input.Body.activeConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.activeConfig.airInterface.supportedSpec == STRING
    input.Body.activeConfig.callSign == STRING
    input.Body.activeConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.activeConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.activeConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.activeConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.activeConfig.installationParams.antennaGain == INTEGER
    input.Body.activeConfig.installationParams.antennaModel == STRING
    input.Body.activeConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.activeConfig.installationParams.eirpCapability == INTEGER
    input.Body.activeConfig.installationParams.height == NUMBER
    input.Body.activeConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.activeConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.activeConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.activeConfig.installationParams.latitude == NUMBER
    input.Body.activeConfig.installationParams.longitude == NUMBER
    input.Body.activeConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.activeConfig.isSigned == BOOLEAN
    input.Body.activeConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.activeConfig.model.firmwareVersion == STRING
    input.Body.activeConfig.model.hardwareVersion == STRING
    input.Body.activeConfig.model.name == STRING
    input.Body.activeConfig.model.softwareVersion == STRING
    input.Body.activeConfig.model.vendor == STRING
    input.Body.activeConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.activeConfig.updateTime == STRING
    input.Body.activeConfig.userId == STRING
    input.Body.deviceMetadata.antennaModel == STRING
    input.Body.deviceMetadata.commonChannelGroup == STRING
    input.Body.deviceMetadata.interferenceCoordinationGroup == STRING
    input.Body.displayName == STRING
    input.Body.fccId == STRING
    input.Body.grantRangeAllowlists[_].highFrequencyMhz == NUMBER
    input.Body.grantRangeAllowlists[_].lowFrequencyMhz == NUMBER
    input.Body.grants[_].channelType == enum_SasPortalDeviceGrantChannelType[_]
    input.Body.grants[_].expireTime == STRING
    input.Body.grants[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.grants[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.grants[_].grantId == STRING
    input.Body.grants[_].lastHeartbeatTransmitExpireTime == STRING
    input.Body.grants[_].maxEirp == NUMBER
    input.Body.grants[_].moveList[_].dpaId == STRING
    input.Body.grants[_].moveList[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.grants[_].moveList[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.grants[_].state == enum_SasPortalDeviceGrantState[_]
    input.Body.grants[_].suspensionReason[_] == STRING
    input.Body.name == STRING
    input.Body.preloadedConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.preloadedConfig.airInterface.supportedSpec == STRING
    input.Body.preloadedConfig.callSign == STRING
    input.Body.preloadedConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.preloadedConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.preloadedConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.preloadedConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.preloadedConfig.installationParams.antennaGain == INTEGER
    input.Body.preloadedConfig.installationParams.antennaModel == STRING
    input.Body.preloadedConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.preloadedConfig.installationParams.eirpCapability == INTEGER
    input.Body.preloadedConfig.installationParams.height == NUMBER
    input.Body.preloadedConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.preloadedConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.preloadedConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.preloadedConfig.installationParams.latitude == NUMBER
    input.Body.preloadedConfig.installationParams.longitude == NUMBER
    input.Body.preloadedConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.preloadedConfig.isSigned == BOOLEAN
    input.Body.preloadedConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.preloadedConfig.model.firmwareVersion == STRING
    input.Body.preloadedConfig.model.hardwareVersion == STRING
    input.Body.preloadedConfig.model.name == STRING
    input.Body.preloadedConfig.model.softwareVersion == STRING
    input.Body.preloadedConfig.model.vendor == STRING
    input.Body.preloadedConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.preloadedConfig.updateTime == STRING
    input.Body.preloadedConfig.userId == STRING
    input.Body.serialNumber == STRING
    input.Body.state == enum_SasPortalDeviceState[_]
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.customers.devices.signDevice

enum_SasPortalDeviceAirInterfaceRadioTechnology := [ "RADIO_TECHNOLOGY_UNSPECIFIED", "E_UTRA", "CAMBIUM_NETWORKS", "FOUR_G_BBW_SAA_1", "NR", "DOODLE_CBRS", "CW", "REDLINE", "TARANA_WIRELESS" ]
enum_SasPortalDeviceConfigCategory := [ "DEVICE_CATEGORY_UNSPECIFIED", "DEVICE_CATEGORY_A", "DEVICE_CATEGORY_B" ]
enum_SasPortalDeviceConfigMeasurementCapabilities := [ "MEASUREMENT_CAPABILITY_UNSPECIFIED", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITH_GRANT", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITHOUT_GRANT" ]
enum_SasPortalDeviceConfigState := [ "DEVICE_CONFIG_STATE_UNSPECIFIED", "DRAFT", "FINAL" ]
enum_SasPortalDeviceGrantChannelType := [ "CHANNEL_TYPE_UNSPECIFIED", "CHANNEL_TYPE_GAA", "CHANNEL_TYPE_PAL" ]
enum_SasPortalDeviceGrantState := [ "GRANT_STATE_UNSPECIFIED", "GRANT_STATE_GRANTED", "GRANT_STATE_TERMINATED", "GRANT_STATE_SUSPENDED", "GRANT_STATE_AUTHORIZED", "GRANT_STATE_EXPIRED" ]
enum_SasPortalDeviceState := [ "DEVICE_STATE_UNSPECIFIED", "RESERVED", "REGISTERED", "DEREGISTERED" ]
enum_SasPortalInstallationParamsHeightType := [ "HEIGHT_TYPE_UNSPECIFIED", "HEIGHT_TYPE_AGL", "HEIGHT_TYPE_AMSL" ]

valid {
    input.Body.device.activeConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.device.activeConfig.airInterface.supportedSpec == STRING
    input.Body.device.activeConfig.callSign == STRING
    input.Body.device.activeConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.device.activeConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.device.activeConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.device.activeConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.device.activeConfig.installationParams.antennaGain == INTEGER
    input.Body.device.activeConfig.installationParams.antennaModel == STRING
    input.Body.device.activeConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.device.activeConfig.installationParams.eirpCapability == INTEGER
    input.Body.device.activeConfig.installationParams.height == NUMBER
    input.Body.device.activeConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.device.activeConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.device.activeConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.device.activeConfig.installationParams.latitude == NUMBER
    input.Body.device.activeConfig.installationParams.longitude == NUMBER
    input.Body.device.activeConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.device.activeConfig.isSigned == BOOLEAN
    input.Body.device.activeConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.device.activeConfig.model.firmwareVersion == STRING
    input.Body.device.activeConfig.model.hardwareVersion == STRING
    input.Body.device.activeConfig.model.name == STRING
    input.Body.device.activeConfig.model.softwareVersion == STRING
    input.Body.device.activeConfig.model.vendor == STRING
    input.Body.device.activeConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.device.activeConfig.updateTime == STRING
    input.Body.device.activeConfig.userId == STRING
    input.Body.device.deviceMetadata.antennaModel == STRING
    input.Body.device.deviceMetadata.commonChannelGroup == STRING
    input.Body.device.deviceMetadata.interferenceCoordinationGroup == STRING
    input.Body.device.displayName == STRING
    input.Body.device.fccId == STRING
    input.Body.device.grantRangeAllowlists[_].highFrequencyMhz == NUMBER
    input.Body.device.grantRangeAllowlists[_].lowFrequencyMhz == NUMBER
    input.Body.device.grants[_].channelType == enum_SasPortalDeviceGrantChannelType[_]
    input.Body.device.grants[_].expireTime == STRING
    input.Body.device.grants[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.device.grants[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.device.grants[_].grantId == STRING
    input.Body.device.grants[_].lastHeartbeatTransmitExpireTime == STRING
    input.Body.device.grants[_].maxEirp == NUMBER
    input.Body.device.grants[_].moveList[_].dpaId == STRING
    input.Body.device.grants[_].moveList[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.device.grants[_].moveList[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.device.grants[_].state == enum_SasPortalDeviceGrantState[_]
    input.Body.device.grants[_].suspensionReason[_] == STRING
    input.Body.device.name == STRING
    input.Body.device.preloadedConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.device.preloadedConfig.airInterface.supportedSpec == STRING
    input.Body.device.preloadedConfig.callSign == STRING
    input.Body.device.preloadedConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.device.preloadedConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.device.preloadedConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.device.preloadedConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.device.preloadedConfig.installationParams.antennaGain == INTEGER
    input.Body.device.preloadedConfig.installationParams.antennaModel == STRING
    input.Body.device.preloadedConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.device.preloadedConfig.installationParams.eirpCapability == INTEGER
    input.Body.device.preloadedConfig.installationParams.height == NUMBER
    input.Body.device.preloadedConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.device.preloadedConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.device.preloadedConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.device.preloadedConfig.installationParams.latitude == NUMBER
    input.Body.device.preloadedConfig.installationParams.longitude == NUMBER
    input.Body.device.preloadedConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.device.preloadedConfig.isSigned == BOOLEAN
    input.Body.device.preloadedConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.device.preloadedConfig.model.firmwareVersion == STRING
    input.Body.device.preloadedConfig.model.hardwareVersion == STRING
    input.Body.device.preloadedConfig.model.name == STRING
    input.Body.device.preloadedConfig.model.softwareVersion == STRING
    input.Body.device.preloadedConfig.model.vendor == STRING
    input.Body.device.preloadedConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.device.preloadedConfig.updateTime == STRING
    input.Body.device.preloadedConfig.userId == STRING
    input.Body.device.serialNumber == STRING
    input.Body.device.state == enum_SasPortalDeviceState[_]
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.customers.devices.updateSigned

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

prod_tt_sasportal.customers.get

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

prod_tt_sasportal.customers.list

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

prod_tt_sasportal.customers.listGcpProjectDeployments

valid {
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.customers.listLegacyOrganizations

valid {
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.customers.migrateOrganization

valid {
    input.Body.organizationId == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.customers.nodes.create

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

prod_tt_sasportal.customers.nodes.delete

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

prod_tt_sasportal.customers.nodes.deployments.create

valid {
    input.Body.displayName == STRING
    input.Body.sasUserIds[_] == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.customers.nodes.deployments.list

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

prod_tt_sasportal.customers.nodes.devices.create

enum_SasPortalDeviceAirInterfaceRadioTechnology := [ "RADIO_TECHNOLOGY_UNSPECIFIED", "E_UTRA", "CAMBIUM_NETWORKS", "FOUR_G_BBW_SAA_1", "NR", "DOODLE_CBRS", "CW", "REDLINE", "TARANA_WIRELESS" ]
enum_SasPortalDeviceConfigCategory := [ "DEVICE_CATEGORY_UNSPECIFIED", "DEVICE_CATEGORY_A", "DEVICE_CATEGORY_B" ]
enum_SasPortalDeviceConfigMeasurementCapabilities := [ "MEASUREMENT_CAPABILITY_UNSPECIFIED", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITH_GRANT", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITHOUT_GRANT" ]
enum_SasPortalDeviceConfigState := [ "DEVICE_CONFIG_STATE_UNSPECIFIED", "DRAFT", "FINAL" ]
enum_SasPortalDeviceGrantChannelType := [ "CHANNEL_TYPE_UNSPECIFIED", "CHANNEL_TYPE_GAA", "CHANNEL_TYPE_PAL" ]
enum_SasPortalDeviceGrantState := [ "GRANT_STATE_UNSPECIFIED", "GRANT_STATE_GRANTED", "GRANT_STATE_TERMINATED", "GRANT_STATE_SUSPENDED", "GRANT_STATE_AUTHORIZED", "GRANT_STATE_EXPIRED" ]
enum_SasPortalDeviceState := [ "DEVICE_STATE_UNSPECIFIED", "RESERVED", "REGISTERED", "DEREGISTERED" ]
enum_SasPortalInstallationParamsHeightType := [ "HEIGHT_TYPE_UNSPECIFIED", "HEIGHT_TYPE_AGL", "HEIGHT_TYPE_AMSL" ]

valid {
    input.Body.activeConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.activeConfig.airInterface.supportedSpec == STRING
    input.Body.activeConfig.callSign == STRING
    input.Body.activeConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.activeConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.activeConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.activeConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.activeConfig.installationParams.antennaGain == INTEGER
    input.Body.activeConfig.installationParams.antennaModel == STRING
    input.Body.activeConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.activeConfig.installationParams.eirpCapability == INTEGER
    input.Body.activeConfig.installationParams.height == NUMBER
    input.Body.activeConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.activeConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.activeConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.activeConfig.installationParams.latitude == NUMBER
    input.Body.activeConfig.installationParams.longitude == NUMBER
    input.Body.activeConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.activeConfig.isSigned == BOOLEAN
    input.Body.activeConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.activeConfig.model.firmwareVersion == STRING
    input.Body.activeConfig.model.hardwareVersion == STRING
    input.Body.activeConfig.model.name == STRING
    input.Body.activeConfig.model.softwareVersion == STRING
    input.Body.activeConfig.model.vendor == STRING
    input.Body.activeConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.activeConfig.updateTime == STRING
    input.Body.activeConfig.userId == STRING
    input.Body.deviceMetadata.antennaModel == STRING
    input.Body.deviceMetadata.commonChannelGroup == STRING
    input.Body.deviceMetadata.interferenceCoordinationGroup == STRING
    input.Body.displayName == STRING
    input.Body.fccId == STRING
    input.Body.grantRangeAllowlists[_].highFrequencyMhz == NUMBER
    input.Body.grantRangeAllowlists[_].lowFrequencyMhz == NUMBER
    input.Body.grants[_].channelType == enum_SasPortalDeviceGrantChannelType[_]
    input.Body.grants[_].expireTime == STRING
    input.Body.grants[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.grants[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.grants[_].grantId == STRING
    input.Body.grants[_].lastHeartbeatTransmitExpireTime == STRING
    input.Body.grants[_].maxEirp == NUMBER
    input.Body.grants[_].moveList[_].dpaId == STRING
    input.Body.grants[_].moveList[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.grants[_].moveList[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.grants[_].state == enum_SasPortalDeviceGrantState[_]
    input.Body.grants[_].suspensionReason[_] == STRING
    input.Body.name == STRING
    input.Body.preloadedConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.preloadedConfig.airInterface.supportedSpec == STRING
    input.Body.preloadedConfig.callSign == STRING
    input.Body.preloadedConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.preloadedConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.preloadedConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.preloadedConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.preloadedConfig.installationParams.antennaGain == INTEGER
    input.Body.preloadedConfig.installationParams.antennaModel == STRING
    input.Body.preloadedConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.preloadedConfig.installationParams.eirpCapability == INTEGER
    input.Body.preloadedConfig.installationParams.height == NUMBER
    input.Body.preloadedConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.preloadedConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.preloadedConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.preloadedConfig.installationParams.latitude == NUMBER
    input.Body.preloadedConfig.installationParams.longitude == NUMBER
    input.Body.preloadedConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.preloadedConfig.isSigned == BOOLEAN
    input.Body.preloadedConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.preloadedConfig.model.firmwareVersion == STRING
    input.Body.preloadedConfig.model.hardwareVersion == STRING
    input.Body.preloadedConfig.model.name == STRING
    input.Body.preloadedConfig.model.softwareVersion == STRING
    input.Body.preloadedConfig.model.vendor == STRING
    input.Body.preloadedConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.preloadedConfig.updateTime == STRING
    input.Body.preloadedConfig.userId == STRING
    input.Body.serialNumber == STRING
    input.Body.state == enum_SasPortalDeviceState[_]
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.customers.nodes.devices.createSigned

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

prod_tt_sasportal.customers.nodes.devices.list

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

prod_tt_sasportal.customers.nodes.get

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

prod_tt_sasportal.customers.nodes.list

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

prod_tt_sasportal.customers.nodes.move

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

prod_tt_sasportal.customers.nodes.nodes.create

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

prod_tt_sasportal.customers.nodes.nodes.list

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

prod_tt_sasportal.customers.nodes.patch

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

prod_tt_sasportal.customers.patch

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

prod_tt_sasportal.customers.provisionDeployment

valid {
    input.Body.newDeploymentDisplayName == STRING
    input.Body.newOrganizationDisplayName == STRING
    input.Body.organizationId == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.customers.setupSasAnalytics

valid {
    input.Body.userId == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.deployments.devices.delete

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

prod_tt_sasportal.deployments.devices.get

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

prod_tt_sasportal.deployments.devices.move

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

prod_tt_sasportal.deployments.devices.patch

enum_SasPortalDeviceAirInterfaceRadioTechnology := [ "RADIO_TECHNOLOGY_UNSPECIFIED", "E_UTRA", "CAMBIUM_NETWORKS", "FOUR_G_BBW_SAA_1", "NR", "DOODLE_CBRS", "CW", "REDLINE", "TARANA_WIRELESS" ]
enum_SasPortalDeviceConfigCategory := [ "DEVICE_CATEGORY_UNSPECIFIED", "DEVICE_CATEGORY_A", "DEVICE_CATEGORY_B" ]
enum_SasPortalDeviceConfigMeasurementCapabilities := [ "MEASUREMENT_CAPABILITY_UNSPECIFIED", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITH_GRANT", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITHOUT_GRANT" ]
enum_SasPortalDeviceConfigState := [ "DEVICE_CONFIG_STATE_UNSPECIFIED", "DRAFT", "FINAL" ]
enum_SasPortalDeviceGrantChannelType := [ "CHANNEL_TYPE_UNSPECIFIED", "CHANNEL_TYPE_GAA", "CHANNEL_TYPE_PAL" ]
enum_SasPortalDeviceGrantState := [ "GRANT_STATE_UNSPECIFIED", "GRANT_STATE_GRANTED", "GRANT_STATE_TERMINATED", "GRANT_STATE_SUSPENDED", "GRANT_STATE_AUTHORIZED", "GRANT_STATE_EXPIRED" ]
enum_SasPortalDeviceState := [ "DEVICE_STATE_UNSPECIFIED", "RESERVED", "REGISTERED", "DEREGISTERED" ]
enum_SasPortalInstallationParamsHeightType := [ "HEIGHT_TYPE_UNSPECIFIED", "HEIGHT_TYPE_AGL", "HEIGHT_TYPE_AMSL" ]

valid {
    input.Body.activeConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.activeConfig.airInterface.supportedSpec == STRING
    input.Body.activeConfig.callSign == STRING
    input.Body.activeConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.activeConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.activeConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.activeConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.activeConfig.installationParams.antennaGain == INTEGER
    input.Body.activeConfig.installationParams.antennaModel == STRING
    input.Body.activeConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.activeConfig.installationParams.eirpCapability == INTEGER
    input.Body.activeConfig.installationParams.height == NUMBER
    input.Body.activeConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.activeConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.activeConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.activeConfig.installationParams.latitude == NUMBER
    input.Body.activeConfig.installationParams.longitude == NUMBER
    input.Body.activeConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.activeConfig.isSigned == BOOLEAN
    input.Body.activeConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.activeConfig.model.firmwareVersion == STRING
    input.Body.activeConfig.model.hardwareVersion == STRING
    input.Body.activeConfig.model.name == STRING
    input.Body.activeConfig.model.softwareVersion == STRING
    input.Body.activeConfig.model.vendor == STRING
    input.Body.activeConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.activeConfig.updateTime == STRING
    input.Body.activeConfig.userId == STRING
    input.Body.deviceMetadata.antennaModel == STRING
    input.Body.deviceMetadata.commonChannelGroup == STRING
    input.Body.deviceMetadata.interferenceCoordinationGroup == STRING
    input.Body.displayName == STRING
    input.Body.fccId == STRING
    input.Body.grantRangeAllowlists[_].highFrequencyMhz == NUMBER
    input.Body.grantRangeAllowlists[_].lowFrequencyMhz == NUMBER
    input.Body.grants[_].channelType == enum_SasPortalDeviceGrantChannelType[_]
    input.Body.grants[_].expireTime == STRING
    input.Body.grants[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.grants[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.grants[_].grantId == STRING
    input.Body.grants[_].lastHeartbeatTransmitExpireTime == STRING
    input.Body.grants[_].maxEirp == NUMBER
    input.Body.grants[_].moveList[_].dpaId == STRING
    input.Body.grants[_].moveList[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.grants[_].moveList[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.grants[_].state == enum_SasPortalDeviceGrantState[_]
    input.Body.grants[_].suspensionReason[_] == STRING
    input.Body.name == STRING
    input.Body.preloadedConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.preloadedConfig.airInterface.supportedSpec == STRING
    input.Body.preloadedConfig.callSign == STRING
    input.Body.preloadedConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.preloadedConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.preloadedConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.preloadedConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.preloadedConfig.installationParams.antennaGain == INTEGER
    input.Body.preloadedConfig.installationParams.antennaModel == STRING
    input.Body.preloadedConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.preloadedConfig.installationParams.eirpCapability == INTEGER
    input.Body.preloadedConfig.installationParams.height == NUMBER
    input.Body.preloadedConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.preloadedConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.preloadedConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.preloadedConfig.installationParams.latitude == NUMBER
    input.Body.preloadedConfig.installationParams.longitude == NUMBER
    input.Body.preloadedConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.preloadedConfig.isSigned == BOOLEAN
    input.Body.preloadedConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.preloadedConfig.model.firmwareVersion == STRING
    input.Body.preloadedConfig.model.hardwareVersion == STRING
    input.Body.preloadedConfig.model.name == STRING
    input.Body.preloadedConfig.model.softwareVersion == STRING
    input.Body.preloadedConfig.model.vendor == STRING
    input.Body.preloadedConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.preloadedConfig.updateTime == STRING
    input.Body.preloadedConfig.userId == STRING
    input.Body.serialNumber == STRING
    input.Body.state == enum_SasPortalDeviceState[_]
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.deployments.devices.signDevice

enum_SasPortalDeviceAirInterfaceRadioTechnology := [ "RADIO_TECHNOLOGY_UNSPECIFIED", "E_UTRA", "CAMBIUM_NETWORKS", "FOUR_G_BBW_SAA_1", "NR", "DOODLE_CBRS", "CW", "REDLINE", "TARANA_WIRELESS" ]
enum_SasPortalDeviceConfigCategory := [ "DEVICE_CATEGORY_UNSPECIFIED", "DEVICE_CATEGORY_A", "DEVICE_CATEGORY_B" ]
enum_SasPortalDeviceConfigMeasurementCapabilities := [ "MEASUREMENT_CAPABILITY_UNSPECIFIED", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITH_GRANT", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITHOUT_GRANT" ]
enum_SasPortalDeviceConfigState := [ "DEVICE_CONFIG_STATE_UNSPECIFIED", "DRAFT", "FINAL" ]
enum_SasPortalDeviceGrantChannelType := [ "CHANNEL_TYPE_UNSPECIFIED", "CHANNEL_TYPE_GAA", "CHANNEL_TYPE_PAL" ]
enum_SasPortalDeviceGrantState := [ "GRANT_STATE_UNSPECIFIED", "GRANT_STATE_GRANTED", "GRANT_STATE_TERMINATED", "GRANT_STATE_SUSPENDED", "GRANT_STATE_AUTHORIZED", "GRANT_STATE_EXPIRED" ]
enum_SasPortalDeviceState := [ "DEVICE_STATE_UNSPECIFIED", "RESERVED", "REGISTERED", "DEREGISTERED" ]
enum_SasPortalInstallationParamsHeightType := [ "HEIGHT_TYPE_UNSPECIFIED", "HEIGHT_TYPE_AGL", "HEIGHT_TYPE_AMSL" ]

valid {
    input.Body.device.activeConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.device.activeConfig.airInterface.supportedSpec == STRING
    input.Body.device.activeConfig.callSign == STRING
    input.Body.device.activeConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.device.activeConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.device.activeConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.device.activeConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.device.activeConfig.installationParams.antennaGain == INTEGER
    input.Body.device.activeConfig.installationParams.antennaModel == STRING
    input.Body.device.activeConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.device.activeConfig.installationParams.eirpCapability == INTEGER
    input.Body.device.activeConfig.installationParams.height == NUMBER
    input.Body.device.activeConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.device.activeConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.device.activeConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.device.activeConfig.installationParams.latitude == NUMBER
    input.Body.device.activeConfig.installationParams.longitude == NUMBER
    input.Body.device.activeConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.device.activeConfig.isSigned == BOOLEAN
    input.Body.device.activeConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.device.activeConfig.model.firmwareVersion == STRING
    input.Body.device.activeConfig.model.hardwareVersion == STRING
    input.Body.device.activeConfig.model.name == STRING
    input.Body.device.activeConfig.model.softwareVersion == STRING
    input.Body.device.activeConfig.model.vendor == STRING
    input.Body.device.activeConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.device.activeConfig.updateTime == STRING
    input.Body.device.activeConfig.userId == STRING
    input.Body.device.deviceMetadata.antennaModel == STRING
    input.Body.device.deviceMetadata.commonChannelGroup == STRING
    input.Body.device.deviceMetadata.interferenceCoordinationGroup == STRING
    input.Body.device.displayName == STRING
    input.Body.device.fccId == STRING
    input.Body.device.grantRangeAllowlists[_].highFrequencyMhz == NUMBER
    input.Body.device.grantRangeAllowlists[_].lowFrequencyMhz == NUMBER
    input.Body.device.grants[_].channelType == enum_SasPortalDeviceGrantChannelType[_]
    input.Body.device.grants[_].expireTime == STRING
    input.Body.device.grants[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.device.grants[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.device.grants[_].grantId == STRING
    input.Body.device.grants[_].lastHeartbeatTransmitExpireTime == STRING
    input.Body.device.grants[_].maxEirp == NUMBER
    input.Body.device.grants[_].moveList[_].dpaId == STRING
    input.Body.device.grants[_].moveList[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.device.grants[_].moveList[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.device.grants[_].state == enum_SasPortalDeviceGrantState[_]
    input.Body.device.grants[_].suspensionReason[_] == STRING
    input.Body.device.name == STRING
    input.Body.device.preloadedConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.device.preloadedConfig.airInterface.supportedSpec == STRING
    input.Body.device.preloadedConfig.callSign == STRING
    input.Body.device.preloadedConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.device.preloadedConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.device.preloadedConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.device.preloadedConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.device.preloadedConfig.installationParams.antennaGain == INTEGER
    input.Body.device.preloadedConfig.installationParams.antennaModel == STRING
    input.Body.device.preloadedConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.device.preloadedConfig.installationParams.eirpCapability == INTEGER
    input.Body.device.preloadedConfig.installationParams.height == NUMBER
    input.Body.device.preloadedConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.device.preloadedConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.device.preloadedConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.device.preloadedConfig.installationParams.latitude == NUMBER
    input.Body.device.preloadedConfig.installationParams.longitude == NUMBER
    input.Body.device.preloadedConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.device.preloadedConfig.isSigned == BOOLEAN
    input.Body.device.preloadedConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.device.preloadedConfig.model.firmwareVersion == STRING
    input.Body.device.preloadedConfig.model.hardwareVersion == STRING
    input.Body.device.preloadedConfig.model.name == STRING
    input.Body.device.preloadedConfig.model.softwareVersion == STRING
    input.Body.device.preloadedConfig.model.vendor == STRING
    input.Body.device.preloadedConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.device.preloadedConfig.updateTime == STRING
    input.Body.device.preloadedConfig.userId == STRING
    input.Body.device.serialNumber == STRING
    input.Body.device.state == enum_SasPortalDeviceState[_]
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.deployments.devices.updateSigned

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

prod_tt_sasportal.deployments.get

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

prod_tt_sasportal.installer.generateSecret

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

prod_tt_sasportal.installer.validate

valid {
    input.Body.encodedSecret == STRING
    input.Body.installerId == STRING
    input.Body.secret == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.nodes.deployments.delete

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

prod_tt_sasportal.nodes.deployments.devices.create

enum_SasPortalDeviceAirInterfaceRadioTechnology := [ "RADIO_TECHNOLOGY_UNSPECIFIED", "E_UTRA", "CAMBIUM_NETWORKS", "FOUR_G_BBW_SAA_1", "NR", "DOODLE_CBRS", "CW", "REDLINE", "TARANA_WIRELESS" ]
enum_SasPortalDeviceConfigCategory := [ "DEVICE_CATEGORY_UNSPECIFIED", "DEVICE_CATEGORY_A", "DEVICE_CATEGORY_B" ]
enum_SasPortalDeviceConfigMeasurementCapabilities := [ "MEASUREMENT_CAPABILITY_UNSPECIFIED", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITH_GRANT", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITHOUT_GRANT" ]
enum_SasPortalDeviceConfigState := [ "DEVICE_CONFIG_STATE_UNSPECIFIED", "DRAFT", "FINAL" ]
enum_SasPortalDeviceGrantChannelType := [ "CHANNEL_TYPE_UNSPECIFIED", "CHANNEL_TYPE_GAA", "CHANNEL_TYPE_PAL" ]
enum_SasPortalDeviceGrantState := [ "GRANT_STATE_UNSPECIFIED", "GRANT_STATE_GRANTED", "GRANT_STATE_TERMINATED", "GRANT_STATE_SUSPENDED", "GRANT_STATE_AUTHORIZED", "GRANT_STATE_EXPIRED" ]
enum_SasPortalDeviceState := [ "DEVICE_STATE_UNSPECIFIED", "RESERVED", "REGISTERED", "DEREGISTERED" ]
enum_SasPortalInstallationParamsHeightType := [ "HEIGHT_TYPE_UNSPECIFIED", "HEIGHT_TYPE_AGL", "HEIGHT_TYPE_AMSL" ]

valid {
    input.Body.activeConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.activeConfig.airInterface.supportedSpec == STRING
    input.Body.activeConfig.callSign == STRING
    input.Body.activeConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.activeConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.activeConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.activeConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.activeConfig.installationParams.antennaGain == INTEGER
    input.Body.activeConfig.installationParams.antennaModel == STRING
    input.Body.activeConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.activeConfig.installationParams.eirpCapability == INTEGER
    input.Body.activeConfig.installationParams.height == NUMBER
    input.Body.activeConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.activeConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.activeConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.activeConfig.installationParams.latitude == NUMBER
    input.Body.activeConfig.installationParams.longitude == NUMBER
    input.Body.activeConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.activeConfig.isSigned == BOOLEAN
    input.Body.activeConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.activeConfig.model.firmwareVersion == STRING
    input.Body.activeConfig.model.hardwareVersion == STRING
    input.Body.activeConfig.model.name == STRING
    input.Body.activeConfig.model.softwareVersion == STRING
    input.Body.activeConfig.model.vendor == STRING
    input.Body.activeConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.activeConfig.updateTime == STRING
    input.Body.activeConfig.userId == STRING
    input.Body.deviceMetadata.antennaModel == STRING
    input.Body.deviceMetadata.commonChannelGroup == STRING
    input.Body.deviceMetadata.interferenceCoordinationGroup == STRING
    input.Body.displayName == STRING
    input.Body.fccId == STRING
    input.Body.grantRangeAllowlists[_].highFrequencyMhz == NUMBER
    input.Body.grantRangeAllowlists[_].lowFrequencyMhz == NUMBER
    input.Body.grants[_].channelType == enum_SasPortalDeviceGrantChannelType[_]
    input.Body.grants[_].expireTime == STRING
    input.Body.grants[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.grants[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.grants[_].grantId == STRING
    input.Body.grants[_].lastHeartbeatTransmitExpireTime == STRING
    input.Body.grants[_].maxEirp == NUMBER
    input.Body.grants[_].moveList[_].dpaId == STRING
    input.Body.grants[_].moveList[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.grants[_].moveList[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.grants[_].state == enum_SasPortalDeviceGrantState[_]
    input.Body.grants[_].suspensionReason[_] == STRING
    input.Body.name == STRING
    input.Body.preloadedConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.preloadedConfig.airInterface.supportedSpec == STRING
    input.Body.preloadedConfig.callSign == STRING
    input.Body.preloadedConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.preloadedConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.preloadedConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.preloadedConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.preloadedConfig.installationParams.antennaGain == INTEGER
    input.Body.preloadedConfig.installationParams.antennaModel == STRING
    input.Body.preloadedConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.preloadedConfig.installationParams.eirpCapability == INTEGER
    input.Body.preloadedConfig.installationParams.height == NUMBER
    input.Body.preloadedConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.preloadedConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.preloadedConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.preloadedConfig.installationParams.latitude == NUMBER
    input.Body.preloadedConfig.installationParams.longitude == NUMBER
    input.Body.preloadedConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.preloadedConfig.isSigned == BOOLEAN
    input.Body.preloadedConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.preloadedConfig.model.firmwareVersion == STRING
    input.Body.preloadedConfig.model.hardwareVersion == STRING
    input.Body.preloadedConfig.model.name == STRING
    input.Body.preloadedConfig.model.softwareVersion == STRING
    input.Body.preloadedConfig.model.vendor == STRING
    input.Body.preloadedConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.preloadedConfig.updateTime == STRING
    input.Body.preloadedConfig.userId == STRING
    input.Body.serialNumber == STRING
    input.Body.state == enum_SasPortalDeviceState[_]
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.nodes.deployments.devices.createSigned

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

prod_tt_sasportal.nodes.deployments.devices.list

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

prod_tt_sasportal.nodes.deployments.get

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

prod_tt_sasportal.nodes.deployments.list

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

prod_tt_sasportal.nodes.deployments.move

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

prod_tt_sasportal.nodes.deployments.patch

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

prod_tt_sasportal.nodes.devices.create

enum_SasPortalDeviceAirInterfaceRadioTechnology := [ "RADIO_TECHNOLOGY_UNSPECIFIED", "E_UTRA", "CAMBIUM_NETWORKS", "FOUR_G_BBW_SAA_1", "NR", "DOODLE_CBRS", "CW", "REDLINE", "TARANA_WIRELESS" ]
enum_SasPortalDeviceConfigCategory := [ "DEVICE_CATEGORY_UNSPECIFIED", "DEVICE_CATEGORY_A", "DEVICE_CATEGORY_B" ]
enum_SasPortalDeviceConfigMeasurementCapabilities := [ "MEASUREMENT_CAPABILITY_UNSPECIFIED", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITH_GRANT", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITHOUT_GRANT" ]
enum_SasPortalDeviceConfigState := [ "DEVICE_CONFIG_STATE_UNSPECIFIED", "DRAFT", "FINAL" ]
enum_SasPortalDeviceGrantChannelType := [ "CHANNEL_TYPE_UNSPECIFIED", "CHANNEL_TYPE_GAA", "CHANNEL_TYPE_PAL" ]
enum_SasPortalDeviceGrantState := [ "GRANT_STATE_UNSPECIFIED", "GRANT_STATE_GRANTED", "GRANT_STATE_TERMINATED", "GRANT_STATE_SUSPENDED", "GRANT_STATE_AUTHORIZED", "GRANT_STATE_EXPIRED" ]
enum_SasPortalDeviceState := [ "DEVICE_STATE_UNSPECIFIED", "RESERVED", "REGISTERED", "DEREGISTERED" ]
enum_SasPortalInstallationParamsHeightType := [ "HEIGHT_TYPE_UNSPECIFIED", "HEIGHT_TYPE_AGL", "HEIGHT_TYPE_AMSL" ]

valid {
    input.Body.activeConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.activeConfig.airInterface.supportedSpec == STRING
    input.Body.activeConfig.callSign == STRING
    input.Body.activeConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.activeConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.activeConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.activeConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.activeConfig.installationParams.antennaGain == INTEGER
    input.Body.activeConfig.installationParams.antennaModel == STRING
    input.Body.activeConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.activeConfig.installationParams.eirpCapability == INTEGER
    input.Body.activeConfig.installationParams.height == NUMBER
    input.Body.activeConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.activeConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.activeConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.activeConfig.installationParams.latitude == NUMBER
    input.Body.activeConfig.installationParams.longitude == NUMBER
    input.Body.activeConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.activeConfig.isSigned == BOOLEAN
    input.Body.activeConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.activeConfig.model.firmwareVersion == STRING
    input.Body.activeConfig.model.hardwareVersion == STRING
    input.Body.activeConfig.model.name == STRING
    input.Body.activeConfig.model.softwareVersion == STRING
    input.Body.activeConfig.model.vendor == STRING
    input.Body.activeConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.activeConfig.updateTime == STRING
    input.Body.activeConfig.userId == STRING
    input.Body.deviceMetadata.antennaModel == STRING
    input.Body.deviceMetadata.commonChannelGroup == STRING
    input.Body.deviceMetadata.interferenceCoordinationGroup == STRING
    input.Body.displayName == STRING
    input.Body.fccId == STRING
    input.Body.grantRangeAllowlists[_].highFrequencyMhz == NUMBER
    input.Body.grantRangeAllowlists[_].lowFrequencyMhz == NUMBER
    input.Body.grants[_].channelType == enum_SasPortalDeviceGrantChannelType[_]
    input.Body.grants[_].expireTime == STRING
    input.Body.grants[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.grants[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.grants[_].grantId == STRING
    input.Body.grants[_].lastHeartbeatTransmitExpireTime == STRING
    input.Body.grants[_].maxEirp == NUMBER
    input.Body.grants[_].moveList[_].dpaId == STRING
    input.Body.grants[_].moveList[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.grants[_].moveList[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.grants[_].state == enum_SasPortalDeviceGrantState[_]
    input.Body.grants[_].suspensionReason[_] == STRING
    input.Body.name == STRING
    input.Body.preloadedConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.preloadedConfig.airInterface.supportedSpec == STRING
    input.Body.preloadedConfig.callSign == STRING
    input.Body.preloadedConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.preloadedConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.preloadedConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.preloadedConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.preloadedConfig.installationParams.antennaGain == INTEGER
    input.Body.preloadedConfig.installationParams.antennaModel == STRING
    input.Body.preloadedConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.preloadedConfig.installationParams.eirpCapability == INTEGER
    input.Body.preloadedConfig.installationParams.height == NUMBER
    input.Body.preloadedConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.preloadedConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.preloadedConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.preloadedConfig.installationParams.latitude == NUMBER
    input.Body.preloadedConfig.installationParams.longitude == NUMBER
    input.Body.preloadedConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.preloadedConfig.isSigned == BOOLEAN
    input.Body.preloadedConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.preloadedConfig.model.firmwareVersion == STRING
    input.Body.preloadedConfig.model.hardwareVersion == STRING
    input.Body.preloadedConfig.model.name == STRING
    input.Body.preloadedConfig.model.softwareVersion == STRING
    input.Body.preloadedConfig.model.vendor == STRING
    input.Body.preloadedConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.preloadedConfig.updateTime == STRING
    input.Body.preloadedConfig.userId == STRING
    input.Body.serialNumber == STRING
    input.Body.state == enum_SasPortalDeviceState[_]
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.nodes.devices.createSigned

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

prod_tt_sasportal.nodes.devices.delete

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

prod_tt_sasportal.nodes.devices.get

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

prod_tt_sasportal.nodes.devices.list

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

prod_tt_sasportal.nodes.devices.move

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

prod_tt_sasportal.nodes.devices.patch

enum_SasPortalDeviceAirInterfaceRadioTechnology := [ "RADIO_TECHNOLOGY_UNSPECIFIED", "E_UTRA", "CAMBIUM_NETWORKS", "FOUR_G_BBW_SAA_1", "NR", "DOODLE_CBRS", "CW", "REDLINE", "TARANA_WIRELESS" ]
enum_SasPortalDeviceConfigCategory := [ "DEVICE_CATEGORY_UNSPECIFIED", "DEVICE_CATEGORY_A", "DEVICE_CATEGORY_B" ]
enum_SasPortalDeviceConfigMeasurementCapabilities := [ "MEASUREMENT_CAPABILITY_UNSPECIFIED", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITH_GRANT", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITHOUT_GRANT" ]
enum_SasPortalDeviceConfigState := [ "DEVICE_CONFIG_STATE_UNSPECIFIED", "DRAFT", "FINAL" ]
enum_SasPortalDeviceGrantChannelType := [ "CHANNEL_TYPE_UNSPECIFIED", "CHANNEL_TYPE_GAA", "CHANNEL_TYPE_PAL" ]
enum_SasPortalDeviceGrantState := [ "GRANT_STATE_UNSPECIFIED", "GRANT_STATE_GRANTED", "GRANT_STATE_TERMINATED", "GRANT_STATE_SUSPENDED", "GRANT_STATE_AUTHORIZED", "GRANT_STATE_EXPIRED" ]
enum_SasPortalDeviceState := [ "DEVICE_STATE_UNSPECIFIED", "RESERVED", "REGISTERED", "DEREGISTERED" ]
enum_SasPortalInstallationParamsHeightType := [ "HEIGHT_TYPE_UNSPECIFIED", "HEIGHT_TYPE_AGL", "HEIGHT_TYPE_AMSL" ]

valid {
    input.Body.activeConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.activeConfig.airInterface.supportedSpec == STRING
    input.Body.activeConfig.callSign == STRING
    input.Body.activeConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.activeConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.activeConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.activeConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.activeConfig.installationParams.antennaGain == INTEGER
    input.Body.activeConfig.installationParams.antennaModel == STRING
    input.Body.activeConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.activeConfig.installationParams.eirpCapability == INTEGER
    input.Body.activeConfig.installationParams.height == NUMBER
    input.Body.activeConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.activeConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.activeConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.activeConfig.installationParams.latitude == NUMBER
    input.Body.activeConfig.installationParams.longitude == NUMBER
    input.Body.activeConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.activeConfig.isSigned == BOOLEAN
    input.Body.activeConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.activeConfig.model.firmwareVersion == STRING
    input.Body.activeConfig.model.hardwareVersion == STRING
    input.Body.activeConfig.model.name == STRING
    input.Body.activeConfig.model.softwareVersion == STRING
    input.Body.activeConfig.model.vendor == STRING
    input.Body.activeConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.activeConfig.updateTime == STRING
    input.Body.activeConfig.userId == STRING
    input.Body.deviceMetadata.antennaModel == STRING
    input.Body.deviceMetadata.commonChannelGroup == STRING
    input.Body.deviceMetadata.interferenceCoordinationGroup == STRING
    input.Body.displayName == STRING
    input.Body.fccId == STRING
    input.Body.grantRangeAllowlists[_].highFrequencyMhz == NUMBER
    input.Body.grantRangeAllowlists[_].lowFrequencyMhz == NUMBER
    input.Body.grants[_].channelType == enum_SasPortalDeviceGrantChannelType[_]
    input.Body.grants[_].expireTime == STRING
    input.Body.grants[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.grants[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.grants[_].grantId == STRING
    input.Body.grants[_].lastHeartbeatTransmitExpireTime == STRING
    input.Body.grants[_].maxEirp == NUMBER
    input.Body.grants[_].moveList[_].dpaId == STRING
    input.Body.grants[_].moveList[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.grants[_].moveList[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.grants[_].state == enum_SasPortalDeviceGrantState[_]
    input.Body.grants[_].suspensionReason[_] == STRING
    input.Body.name == STRING
    input.Body.preloadedConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.preloadedConfig.airInterface.supportedSpec == STRING
    input.Body.preloadedConfig.callSign == STRING
    input.Body.preloadedConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.preloadedConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.preloadedConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.preloadedConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.preloadedConfig.installationParams.antennaGain == INTEGER
    input.Body.preloadedConfig.installationParams.antennaModel == STRING
    input.Body.preloadedConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.preloadedConfig.installationParams.eirpCapability == INTEGER
    input.Body.preloadedConfig.installationParams.height == NUMBER
    input.Body.preloadedConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.preloadedConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.preloadedConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.preloadedConfig.installationParams.latitude == NUMBER
    input.Body.preloadedConfig.installationParams.longitude == NUMBER
    input.Body.preloadedConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.preloadedConfig.isSigned == BOOLEAN
    input.Body.preloadedConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.preloadedConfig.model.firmwareVersion == STRING
    input.Body.preloadedConfig.model.hardwareVersion == STRING
    input.Body.preloadedConfig.model.name == STRING
    input.Body.preloadedConfig.model.softwareVersion == STRING
    input.Body.preloadedConfig.model.vendor == STRING
    input.Body.preloadedConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.preloadedConfig.updateTime == STRING
    input.Body.preloadedConfig.userId == STRING
    input.Body.serialNumber == STRING
    input.Body.state == enum_SasPortalDeviceState[_]
    input.ReqMap.name == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.nodes.devices.signDevice

enum_SasPortalDeviceAirInterfaceRadioTechnology := [ "RADIO_TECHNOLOGY_UNSPECIFIED", "E_UTRA", "CAMBIUM_NETWORKS", "FOUR_G_BBW_SAA_1", "NR", "DOODLE_CBRS", "CW", "REDLINE", "TARANA_WIRELESS" ]
enum_SasPortalDeviceConfigCategory := [ "DEVICE_CATEGORY_UNSPECIFIED", "DEVICE_CATEGORY_A", "DEVICE_CATEGORY_B" ]
enum_SasPortalDeviceConfigMeasurementCapabilities := [ "MEASUREMENT_CAPABILITY_UNSPECIFIED", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITH_GRANT", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITHOUT_GRANT" ]
enum_SasPortalDeviceConfigState := [ "DEVICE_CONFIG_STATE_UNSPECIFIED", "DRAFT", "FINAL" ]
enum_SasPortalDeviceGrantChannelType := [ "CHANNEL_TYPE_UNSPECIFIED", "CHANNEL_TYPE_GAA", "CHANNEL_TYPE_PAL" ]
enum_SasPortalDeviceGrantState := [ "GRANT_STATE_UNSPECIFIED", "GRANT_STATE_GRANTED", "GRANT_STATE_TERMINATED", "GRANT_STATE_SUSPENDED", "GRANT_STATE_AUTHORIZED", "GRANT_STATE_EXPIRED" ]
enum_SasPortalDeviceState := [ "DEVICE_STATE_UNSPECIFIED", "RESERVED", "REGISTERED", "DEREGISTERED" ]
enum_SasPortalInstallationParamsHeightType := [ "HEIGHT_TYPE_UNSPECIFIED", "HEIGHT_TYPE_AGL", "HEIGHT_TYPE_AMSL" ]

valid {
    input.Body.device.activeConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.device.activeConfig.airInterface.supportedSpec == STRING
    input.Body.device.activeConfig.callSign == STRING
    input.Body.device.activeConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.device.activeConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.device.activeConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.device.activeConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.device.activeConfig.installationParams.antennaGain == INTEGER
    input.Body.device.activeConfig.installationParams.antennaModel == STRING
    input.Body.device.activeConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.device.activeConfig.installationParams.eirpCapability == INTEGER
    input.Body.device.activeConfig.installationParams.height == NUMBER
    input.Body.device.activeConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.device.activeConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.device.activeConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.device.activeConfig.installationParams.latitude == NUMBER
    input.Body.device.activeConfig.installationParams.longitude == NUMBER
    input.Body.device.activeConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.device.activeConfig.isSigned == BOOLEAN
    input.Body.device.activeConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.device.activeConfig.model.firmwareVersion == STRING
    input.Body.device.activeConfig.model.hardwareVersion == STRING
    input.Body.device.activeConfig.model.name == STRING
    input.Body.device.activeConfig.model.softwareVersion == STRING
    input.Body.device.activeConfig.model.vendor == STRING
    input.Body.device.activeConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.device.activeConfig.updateTime == STRING
    input.Body.device.activeConfig.userId == STRING
    input.Body.device.deviceMetadata.antennaModel == STRING
    input.Body.device.deviceMetadata.commonChannelGroup == STRING
    input.Body.device.deviceMetadata.interferenceCoordinationGroup == STRING
    input.Body.device.displayName == STRING
    input.Body.device.fccId == STRING
    input.Body.device.grantRangeAllowlists[_].highFrequencyMhz == NUMBER
    input.Body.device.grantRangeAllowlists[_].lowFrequencyMhz == NUMBER
    input.Body.device.grants[_].channelType == enum_SasPortalDeviceGrantChannelType[_]
    input.Body.device.grants[_].expireTime == STRING
    input.Body.device.grants[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.device.grants[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.device.grants[_].grantId == STRING
    input.Body.device.grants[_].lastHeartbeatTransmitExpireTime == STRING
    input.Body.device.grants[_].maxEirp == NUMBER
    input.Body.device.grants[_].moveList[_].dpaId == STRING
    input.Body.device.grants[_].moveList[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.device.grants[_].moveList[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.device.grants[_].state == enum_SasPortalDeviceGrantState[_]
    input.Body.device.grants[_].suspensionReason[_] == STRING
    input.Body.device.name == STRING
    input.Body.device.preloadedConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.device.preloadedConfig.airInterface.supportedSpec == STRING
    input.Body.device.preloadedConfig.callSign == STRING
    input.Body.device.preloadedConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.device.preloadedConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.device.preloadedConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.device.preloadedConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.device.preloadedConfig.installationParams.antennaGain == INTEGER
    input.Body.device.preloadedConfig.installationParams.antennaModel == STRING
    input.Body.device.preloadedConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.device.preloadedConfig.installationParams.eirpCapability == INTEGER
    input.Body.device.preloadedConfig.installationParams.height == NUMBER
    input.Body.device.preloadedConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.device.preloadedConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.device.preloadedConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.device.preloadedConfig.installationParams.latitude == NUMBER
    input.Body.device.preloadedConfig.installationParams.longitude == NUMBER
    input.Body.device.preloadedConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.device.preloadedConfig.isSigned == BOOLEAN
    input.Body.device.preloadedConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.device.preloadedConfig.model.firmwareVersion == STRING
    input.Body.device.preloadedConfig.model.hardwareVersion == STRING
    input.Body.device.preloadedConfig.model.name == STRING
    input.Body.device.preloadedConfig.model.softwareVersion == STRING
    input.Body.device.preloadedConfig.model.vendor == STRING
    input.Body.device.preloadedConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.device.preloadedConfig.updateTime == STRING
    input.Body.device.preloadedConfig.userId == STRING
    input.Body.device.serialNumber == STRING
    input.Body.device.state == enum_SasPortalDeviceState[_]
    input.ReqMap.name == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.nodes.devices.updateSigned

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

prod_tt_sasportal.nodes.get

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

prod_tt_sasportal.nodes.nodes.create

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

prod_tt_sasportal.nodes.nodes.delete

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

prod_tt_sasportal.nodes.nodes.deployments.create

valid {
    input.Body.displayName == STRING
    input.Body.sasUserIds[_] == STRING
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.nodes.nodes.deployments.list

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

prod_tt_sasportal.nodes.nodes.devices.create

enum_SasPortalDeviceAirInterfaceRadioTechnology := [ "RADIO_TECHNOLOGY_UNSPECIFIED", "E_UTRA", "CAMBIUM_NETWORKS", "FOUR_G_BBW_SAA_1", "NR", "DOODLE_CBRS", "CW", "REDLINE", "TARANA_WIRELESS" ]
enum_SasPortalDeviceConfigCategory := [ "DEVICE_CATEGORY_UNSPECIFIED", "DEVICE_CATEGORY_A", "DEVICE_CATEGORY_B" ]
enum_SasPortalDeviceConfigMeasurementCapabilities := [ "MEASUREMENT_CAPABILITY_UNSPECIFIED", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITH_GRANT", "MEASUREMENT_CAPABILITY_RECEIVED_POWER_WITHOUT_GRANT" ]
enum_SasPortalDeviceConfigState := [ "DEVICE_CONFIG_STATE_UNSPECIFIED", "DRAFT", "FINAL" ]
enum_SasPortalDeviceGrantChannelType := [ "CHANNEL_TYPE_UNSPECIFIED", "CHANNEL_TYPE_GAA", "CHANNEL_TYPE_PAL" ]
enum_SasPortalDeviceGrantState := [ "GRANT_STATE_UNSPECIFIED", "GRANT_STATE_GRANTED", "GRANT_STATE_TERMINATED", "GRANT_STATE_SUSPENDED", "GRANT_STATE_AUTHORIZED", "GRANT_STATE_EXPIRED" ]
enum_SasPortalDeviceState := [ "DEVICE_STATE_UNSPECIFIED", "RESERVED", "REGISTERED", "DEREGISTERED" ]
enum_SasPortalInstallationParamsHeightType := [ "HEIGHT_TYPE_UNSPECIFIED", "HEIGHT_TYPE_AGL", "HEIGHT_TYPE_AMSL" ]

valid {
    input.Body.activeConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.activeConfig.airInterface.supportedSpec == STRING
    input.Body.activeConfig.callSign == STRING
    input.Body.activeConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.activeConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.activeConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.activeConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.activeConfig.installationParams.antennaGain == INTEGER
    input.Body.activeConfig.installationParams.antennaModel == STRING
    input.Body.activeConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.activeConfig.installationParams.eirpCapability == INTEGER
    input.Body.activeConfig.installationParams.height == NUMBER
    input.Body.activeConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.activeConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.activeConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.activeConfig.installationParams.latitude == NUMBER
    input.Body.activeConfig.installationParams.longitude == NUMBER
    input.Body.activeConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.activeConfig.isSigned == BOOLEAN
    input.Body.activeConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.activeConfig.model.firmwareVersion == STRING
    input.Body.activeConfig.model.hardwareVersion == STRING
    input.Body.activeConfig.model.name == STRING
    input.Body.activeConfig.model.softwareVersion == STRING
    input.Body.activeConfig.model.vendor == STRING
    input.Body.activeConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.activeConfig.updateTime == STRING
    input.Body.activeConfig.userId == STRING
    input.Body.deviceMetadata.antennaModel == STRING
    input.Body.deviceMetadata.commonChannelGroup == STRING
    input.Body.deviceMetadata.interferenceCoordinationGroup == STRING
    input.Body.displayName == STRING
    input.Body.fccId == STRING
    input.Body.grantRangeAllowlists[_].highFrequencyMhz == NUMBER
    input.Body.grantRangeAllowlists[_].lowFrequencyMhz == NUMBER
    input.Body.grants[_].channelType == enum_SasPortalDeviceGrantChannelType[_]
    input.Body.grants[_].expireTime == STRING
    input.Body.grants[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.grants[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.grants[_].grantId == STRING
    input.Body.grants[_].lastHeartbeatTransmitExpireTime == STRING
    input.Body.grants[_].maxEirp == NUMBER
    input.Body.grants[_].moveList[_].dpaId == STRING
    input.Body.grants[_].moveList[_].frequencyRange.highFrequencyMhz == NUMBER
    input.Body.grants[_].moveList[_].frequencyRange.lowFrequencyMhz == NUMBER
    input.Body.grants[_].state == enum_SasPortalDeviceGrantState[_]
    input.Body.grants[_].suspensionReason[_] == STRING
    input.Body.name == STRING
    input.Body.preloadedConfig.airInterface.radioTechnology == enum_SasPortalDeviceAirInterfaceRadioTechnology[_]
    input.Body.preloadedConfig.airInterface.supportedSpec == STRING
    input.Body.preloadedConfig.callSign == STRING
    input.Body.preloadedConfig.category == enum_SasPortalDeviceConfigCategory[_]
    input.Body.preloadedConfig.installationParams.antennaAzimuth == INTEGER
    input.Body.preloadedConfig.installationParams.antennaBeamwidth == INTEGER
    input.Body.preloadedConfig.installationParams.antennaDowntilt == INTEGER
    input.Body.preloadedConfig.installationParams.antennaGain == INTEGER
    input.Body.preloadedConfig.installationParams.antennaModel == STRING
    input.Body.preloadedConfig.installationParams.cpeCbsdIndication == BOOLEAN
    input.Body.preloadedConfig.installationParams.eirpCapability == INTEGER
    input.Body.preloadedConfig.installationParams.height == NUMBER
    input.Body.preloadedConfig.installationParams.heightType == enum_SasPortalInstallationParamsHeightType[_]
    input.Body.preloadedConfig.installationParams.horizontalAccuracy == NUMBER
    input.Body.preloadedConfig.installationParams.indoorDeployment == BOOLEAN
    input.Body.preloadedConfig.installationParams.latitude == NUMBER
    input.Body.preloadedConfig.installationParams.longitude == NUMBER
    input.Body.preloadedConfig.installationParams.verticalAccuracy == NUMBER
    input.Body.preloadedConfig.isSigned == BOOLEAN
    input.Body.preloadedConfig.measurementCapabilities[_] == enum_SasPortalDeviceConfigMeasurementCapabilities[_]
    input.Body.preloadedConfig.model.firmwareVersion == STRING
    input.Body.preloadedConfig.model.hardwareVersion == STRING
    input.Body.preloadedConfig.model.name == STRING
    input.Body.preloadedConfig.model.softwareVersion == STRING
    input.Body.preloadedConfig.model.vendor == STRING
    input.Body.preloadedConfig.state == enum_SasPortalDeviceConfigState[_]
    input.Body.preloadedConfig.updateTime == STRING
    input.Body.preloadedConfig.userId == STRING
    input.Body.serialNumber == STRING
    input.Body.state == enum_SasPortalDeviceState[_]
    input.ReqMap.parent == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.nodes.nodes.devices.createSigned

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

prod_tt_sasportal.nodes.nodes.devices.list

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

prod_tt_sasportal.nodes.nodes.get

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

prod_tt_sasportal.nodes.nodes.list

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

prod_tt_sasportal.nodes.nodes.move

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

prod_tt_sasportal.nodes.nodes.nodes.create

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

prod_tt_sasportal.nodes.nodes.nodes.list

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

prod_tt_sasportal.nodes.nodes.patch

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

prod_tt_sasportal.policies.get

valid {
    input.Body.resource == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.policies.set

valid {
    input.Body.disableNotification == BOOLEAN
    input.Body.policy.assignments[_].members[_] == STRING
    input.Body.policy.assignments[_].role == STRING
    input.Body.policy.etag == STRING
    input.Body.resource == STRING
    input.ProviderMetadata.Region == STRING
}

prod_tt_sasportal.policies.test

valid {
    input.Body.permissions[_] == STRING
    input.Body.resource == STRING
    input.ProviderMetadata.Region == STRING
}