GROUNDSTATION

CancelContact

valid {
    input.ReqMap.contactId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateConfig

enum_BandwidthUnits := [ "GHz", "MHz", "kHz" ]
enum_Criticality := [ "PREFERRED", "REMOVED", "REQUIRED" ]
enum_EirpUnits := [ "dBW" ]
enum_FrequencyUnits := [ "GHz", "MHz", "kHz" ]
enum_Polarization := [ "LEFT_HAND", "NONE", "RIGHT_HAND" ]

valid {
    input.Body.configData.antennaDownlinkConfig.spectrumConfig.bandwidth.units == enum_BandwidthUnits[_]
    input.Body.configData.antennaDownlinkConfig.spectrumConfig.bandwidth.value == DOUBLE
    input.Body.configData.antennaDownlinkConfig.spectrumConfig.centerFrequency.units == enum_FrequencyUnits[_]
    input.Body.configData.antennaDownlinkConfig.spectrumConfig.centerFrequency.value == DOUBLE
    input.Body.configData.antennaDownlinkConfig.spectrumConfig.polarization == enum_Polarization[_]
    input.Body.configData.antennaDownlinkDemodDecodeConfig.decodeConfig.unvalidatedJSON == STRING
    input.Body.configData.antennaDownlinkDemodDecodeConfig.demodulationConfig.unvalidatedJSON == STRING
    input.Body.configData.antennaDownlinkDemodDecodeConfig.spectrumConfig.bandwidth.units == enum_BandwidthUnits[_]
    input.Body.configData.antennaDownlinkDemodDecodeConfig.spectrumConfig.bandwidth.value == DOUBLE
    input.Body.configData.antennaDownlinkDemodDecodeConfig.spectrumConfig.centerFrequency.units == enum_FrequencyUnits[_]
    input.Body.configData.antennaDownlinkDemodDecodeConfig.spectrumConfig.centerFrequency.value == DOUBLE
    input.Body.configData.antennaDownlinkDemodDecodeConfig.spectrumConfig.polarization == enum_Polarization[_]
    input.Body.configData.antennaUplinkConfig.spectrumConfig.centerFrequency.units == enum_FrequencyUnits[_]
    input.Body.configData.antennaUplinkConfig.spectrumConfig.centerFrequency.value == DOUBLE
    input.Body.configData.antennaUplinkConfig.spectrumConfig.polarization == enum_Polarization[_]
    input.Body.configData.antennaUplinkConfig.targetEirp.units == enum_EirpUnits[_]
    input.Body.configData.antennaUplinkConfig.targetEirp.value == DOUBLE
    input.Body.configData.antennaUplinkConfig.transmitDisabled == BOOLEAN
    input.Body.configData.dataflowEndpointConfig.dataflowEndpointName == STRING
    input.Body.configData.dataflowEndpointConfig.dataflowEndpointRegion == STRING
    input.Body.configData.s3RecordingConfig.bucketArn == STRING
    input.Body.configData.s3RecordingConfig.prefix == STRING
    input.Body.configData.s3RecordingConfig.roleArn == STRING
    input.Body.configData.trackingConfig.autotrack == enum_Criticality[_]
    input.Body.configData.uplinkEchoConfig.antennaUplinkConfigArn == STRING
    input.Body.configData.uplinkEchoConfig.enabled == BOOLEAN
    input.Body.name == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateDataflowEndpointGroup

enum_AgentStatus := [ "SUCCESS", "FAILED", "ACTIVE", "INACTIVE" ]
enum_AuditResults := [ "HEALTHY", "UNHEALTHY" ]
enum_CapabilityHealth := [ "UNHEALTHY", "HEALTHY" ]
enum_CapabilityHealthReason := [ "NO_REGISTERED_AGENT", "INVALID_IP_OWNERSHIP", "NOT_AUTHORIZED_TO_CREATE_SLR", "UNVERIFIED_IP_OWNERSHIP", "INITIALIZING_DATAPLANE", "DATAPLANE_FAILURE", "HEALTHY" ]
enum_EndpointStatus := [ "created", "creating", "deleted", "deleting", "failed" ]

valid {
    input.Body.contactPostPassDurationSeconds == INTEGER
    input.Body.contactPrePassDurationSeconds == INTEGER
    input.Body.endpointDetails[_].awsGroundStationAgentEndpoint.agentStatus == enum_AgentStatus[_]
    input.Body.endpointDetails[_].awsGroundStationAgentEndpoint.auditResults == enum_AuditResults[_]
    input.Body.endpointDetails[_].awsGroundStationAgentEndpoint.egressAddress.mtu == INTEGER
    input.Body.endpointDetails[_].awsGroundStationAgentEndpoint.egressAddress.socketAddress.name == STRING
    input.Body.endpointDetails[_].awsGroundStationAgentEndpoint.egressAddress.socketAddress.port == INTEGER
    input.Body.endpointDetails[_].awsGroundStationAgentEndpoint.ingressAddress.mtu == INTEGER
    input.Body.endpointDetails[_].awsGroundStationAgentEndpoint.ingressAddress.socketAddress.name == STRING
    input.Body.endpointDetails[_].awsGroundStationAgentEndpoint.ingressAddress.socketAddress.portRange.maximum == INTEGER
    input.Body.endpointDetails[_].awsGroundStationAgentEndpoint.ingressAddress.socketAddress.portRange.minimum == INTEGER
    input.Body.endpointDetails[_].awsGroundStationAgentEndpoint.name == STRING
    input.Body.endpointDetails[_].endpoint.address.name == STRING
    input.Body.endpointDetails[_].endpoint.address.port == INTEGER
    input.Body.endpointDetails[_].endpoint.mtu == INTEGER
    input.Body.endpointDetails[_].endpoint.name == STRING
    input.Body.endpointDetails[_].endpoint.status == enum_EndpointStatus[_]
    input.Body.endpointDetails[_].healthReasons[_] == enum_CapabilityHealthReason[_]
    input.Body.endpointDetails[_].healthStatus == enum_CapabilityHealth[_]
    input.Body.endpointDetails[_].securityDetails.roleArn == STRING
    input.Body.endpointDetails[_].securityDetails.securityGroupIds[_] == STRING
    input.Body.endpointDetails[_].securityDetails.subnetIds[_] == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateEphemeris

valid {
    input.Body.enabled == BOOLEAN
    input.Body.ephemeris.oem.oemData == STRING
    input.Body.ephemeris.oem.s3Object.bucket == STRING
    input.Body.ephemeris.oem.s3Object.key == STRING
    input.Body.ephemeris.oem.s3Object.version == STRING
    input.Body.ephemeris.tle.s3Object.bucket == STRING
    input.Body.ephemeris.tle.s3Object.key == STRING
    input.Body.ephemeris.tle.s3Object.version == STRING
    input.Body.ephemeris.tle.tleData[_].tleLine1 == STRING
    input.Body.ephemeris.tle.tleData[_].tleLine2 == STRING
    input.Body.ephemeris.tle.tleData[_].validTimeRange.endTime == TIMESTAMP
    input.Body.ephemeris.tle.tleData[_].validTimeRange.startTime == TIMESTAMP
    input.Body.expirationTime == TIMESTAMP
    input.Body.kmsKeyArn == STRING
    input.Body.name == STRING
    input.Body.priority == INTEGER
    input.Body.satelliteId == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateMissionProfile

valid {
    input.Body.contactPostPassDurationSeconds == INTEGER
    input.Body.contactPrePassDurationSeconds == INTEGER
    input.Body.dataflowEdges[_][_] == STRING
    input.Body.minimumViableContactDurationSeconds == INTEGER
    input.Body.name == STRING
    input.Body.streamsKmsKey.kmsAliasArn == STRING
    input.Body.streamsKmsKey.kmsAliasName == STRING
    input.Body.streamsKmsKey.kmsKeyArn == STRING
    input.Body.streamsKmsRole == STRING
    input.Body.tags.STRING == STRING
    input.Body.trackingConfigArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteConfig

enum_ConfigCapabilityType := [ "antenna-downlink", "antenna-downlink-demod-decode", "antenna-uplink", "dataflow-endpoint", "tracking", "uplink-echo", "s3-recording" ]

valid {
    input.ReqMap.configId == STRING
    input.ReqMap.configType == enum_ConfigCapabilityType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteDataflowEndpointGroup

valid {
    input.ReqMap.dataflowEndpointGroupId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteEphemeris

valid {
    input.ReqMap.ephemerisId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteMissionProfile

valid {
    input.ReqMap.missionProfileId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeContact

valid {
    input.ReqMap.contactId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeEphemeris

valid {
    input.ReqMap.ephemerisId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetAgentConfiguration

valid {
    input.ReqMap.agentId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetConfig

enum_ConfigCapabilityType := [ "antenna-downlink", "antenna-downlink-demod-decode", "antenna-uplink", "dataflow-endpoint", "tracking", "uplink-echo", "s3-recording" ]

valid {
    input.ReqMap.configId == STRING
    input.ReqMap.configType == enum_ConfigCapabilityType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetDataflowEndpointGroup

valid {
    input.ReqMap.dataflowEndpointGroupId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetMinuteUsage

valid {
    input.Body.month == INTEGER
    input.Body.year == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetMissionProfile

valid {
    input.ReqMap.missionProfileId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetSatellite

valid {
    input.ReqMap.satelliteId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListConfigs

valid {
    input.Qs.maxResults == INTEGER
    input.Qs.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListContacts

enum_ContactStatus := [ "AVAILABLE", "AWS_CANCELLED", "AWS_FAILED", "CANCELLED", "CANCELLING", "COMPLETED", "FAILED", "FAILED_TO_SCHEDULE", "PASS", "POSTPASS", "PREPASS", "SCHEDULED", "SCHEDULING" ]

valid {
    input.Body.endTime == TIMESTAMP
    input.Body.groundStation == STRING
    input.Body.maxResults == INTEGER
    input.Body.missionProfileArn == STRING
    input.Body.nextToken == STRING
    input.Body.satelliteArn == STRING
    input.Body.startTime == TIMESTAMP
    input.Body.statusList[_] == enum_ContactStatus[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListDataflowEndpointGroups

valid {
    input.Qs.maxResults == INTEGER
    input.Qs.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListEphemerides

enum_EphemerisStatus := [ "VALIDATING", "INVALID", "ERROR", "ENABLED", "DISABLED", "EXPIRED" ]

valid {
    input.Body.endTime == TIMESTAMP
    input.Body.satelliteId == STRING
    input.Body.startTime == TIMESTAMP
    input.Body.statusList[_] == enum_EphemerisStatus[_]
    input.Qs.maxResults == INTEGER
    input.Qs.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListGroundStations

valid {
    input.Qs.maxResults == INTEGER
    input.Qs.nextToken == STRING
    input.Qs.satelliteId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListMissionProfiles

valid {
    input.Qs.maxResults == INTEGER
    input.Qs.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListSatellites

valid {
    input.Qs.maxResults == INTEGER
    input.Qs.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTagsForResource

valid {
    input.ReqMap.resourceArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RegisterAgent

valid {
    input.Body.agentDetails.agentCpuCores[_] == INTEGER
    input.Body.agentDetails.agentVersion == STRING
    input.Body.agentDetails.componentVersions[_].componentType == STRING
    input.Body.agentDetails.componentVersions[_].versions[_] == STRING
    input.Body.agentDetails.instanceId == STRING
    input.Body.agentDetails.instanceType == STRING
    input.Body.agentDetails.reservedCpuCores[_] == INTEGER
    input.Body.discoveryData.capabilityArns[_] == STRING
    input.Body.discoveryData.privateIpAddresses[_] == STRING
    input.Body.discoveryData.publicIpAddresses[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ReserveContact

valid {
    input.Body.endTime == TIMESTAMP
    input.Body.groundStation == STRING
    input.Body.missionProfileArn == STRING
    input.Body.satelliteArn == STRING
    input.Body.startTime == TIMESTAMP
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

TagResource

valid {
    input.Body.tags.STRING == STRING
    input.ReqMap.resourceArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UntagResource

valid {
    input.ReqMap.resourceArn == STRING
    input.Qs.tagKeys[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateAgentStatus

enum_AgentStatus := [ "SUCCESS", "FAILED", "ACTIVE", "INACTIVE" ]

valid {
    input.Body.aggregateStatus.signatureMap.STRING == BOOLEAN
    input.Body.aggregateStatus.status == enum_AgentStatus[_]
    input.Body.componentStatuses[_].bytesReceived == LONG
    input.Body.componentStatuses[_].bytesSent == LONG
    input.Body.componentStatuses[_].capabilityArn == STRING
    input.Body.componentStatuses[_].componentType == STRING
    input.Body.componentStatuses[_].dataflowId == STRING
    input.Body.componentStatuses[_].packetsDropped == LONG
    input.Body.componentStatuses[_].status == enum_AgentStatus[_]
    input.Body.taskId == STRING
    input.ReqMap.agentId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateConfig

enum_BandwidthUnits := [ "GHz", "MHz", "kHz" ]
enum_ConfigCapabilityType := [ "antenna-downlink", "antenna-downlink-demod-decode", "antenna-uplink", "dataflow-endpoint", "tracking", "uplink-echo", "s3-recording" ]
enum_Criticality := [ "PREFERRED", "REMOVED", "REQUIRED" ]
enum_EirpUnits := [ "dBW" ]
enum_FrequencyUnits := [ "GHz", "MHz", "kHz" ]
enum_Polarization := [ "LEFT_HAND", "NONE", "RIGHT_HAND" ]

valid {
    input.Body.configData.antennaDownlinkConfig.spectrumConfig.bandwidth.units == enum_BandwidthUnits[_]
    input.Body.configData.antennaDownlinkConfig.spectrumConfig.bandwidth.value == DOUBLE
    input.Body.configData.antennaDownlinkConfig.spectrumConfig.centerFrequency.units == enum_FrequencyUnits[_]
    input.Body.configData.antennaDownlinkConfig.spectrumConfig.centerFrequency.value == DOUBLE
    input.Body.configData.antennaDownlinkConfig.spectrumConfig.polarization == enum_Polarization[_]
    input.Body.configData.antennaDownlinkDemodDecodeConfig.decodeConfig.unvalidatedJSON == STRING
    input.Body.configData.antennaDownlinkDemodDecodeConfig.demodulationConfig.unvalidatedJSON == STRING
    input.Body.configData.antennaDownlinkDemodDecodeConfig.spectrumConfig.bandwidth.units == enum_BandwidthUnits[_]
    input.Body.configData.antennaDownlinkDemodDecodeConfig.spectrumConfig.bandwidth.value == DOUBLE
    input.Body.configData.antennaDownlinkDemodDecodeConfig.spectrumConfig.centerFrequency.units == enum_FrequencyUnits[_]
    input.Body.configData.antennaDownlinkDemodDecodeConfig.spectrumConfig.centerFrequency.value == DOUBLE
    input.Body.configData.antennaDownlinkDemodDecodeConfig.spectrumConfig.polarization == enum_Polarization[_]
    input.Body.configData.antennaUplinkConfig.spectrumConfig.centerFrequency.units == enum_FrequencyUnits[_]
    input.Body.configData.antennaUplinkConfig.spectrumConfig.centerFrequency.value == DOUBLE
    input.Body.configData.antennaUplinkConfig.spectrumConfig.polarization == enum_Polarization[_]
    input.Body.configData.antennaUplinkConfig.targetEirp.units == enum_EirpUnits[_]
    input.Body.configData.antennaUplinkConfig.targetEirp.value == DOUBLE
    input.Body.configData.antennaUplinkConfig.transmitDisabled == BOOLEAN
    input.Body.configData.dataflowEndpointConfig.dataflowEndpointName == STRING
    input.Body.configData.dataflowEndpointConfig.dataflowEndpointRegion == STRING
    input.Body.configData.s3RecordingConfig.bucketArn == STRING
    input.Body.configData.s3RecordingConfig.prefix == STRING
    input.Body.configData.s3RecordingConfig.roleArn == STRING
    input.Body.configData.trackingConfig.autotrack == enum_Criticality[_]
    input.Body.configData.uplinkEchoConfig.antennaUplinkConfigArn == STRING
    input.Body.configData.uplinkEchoConfig.enabled == BOOLEAN
    input.Body.name == STRING
    input.ReqMap.configId == STRING
    input.ReqMap.configType == enum_ConfigCapabilityType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateEphemeris

valid {
    input.Body.enabled == BOOLEAN
    input.Body.name == STRING
    input.Body.priority == INTEGER
    input.ReqMap.ephemerisId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateMissionProfile

valid {
    input.Body.contactPostPassDurationSeconds == INTEGER
    input.Body.contactPrePassDurationSeconds == INTEGER
    input.Body.dataflowEdges[_][_] == STRING
    input.Body.minimumViableContactDurationSeconds == INTEGER
    input.Body.name == STRING
    input.Body.streamsKmsKey.kmsAliasArn == STRING
    input.Body.streamsKmsKey.kmsAliasName == STRING
    input.Body.streamsKmsKey.kmsKeyArn == STRING
    input.Body.streamsKmsRole == STRING
    input.Body.trackingConfigArn == STRING
    input.ReqMap.missionProfileId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}