IVS-REALTIME

CreateEncoderConfiguration

valid {
    input.Body.name == STRING
    input.Body.video.width == INTEGER
    input.Body.video.height == INTEGER
    input.Body.video.framerate == FLOAT
    input.Body.video.bitrate == INTEGER
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateIngestConfiguration

enum_IngestProtocol := [ "RTMP", "RTMPS" ]

valid {
    input.Body.name == STRING
    input.Body.stageArn == STRING
    input.Body.userId == STRING
    input.Body.attributes.STRING == STRING
    input.Body.ingestProtocol == enum_IngestProtocol[_]
    input.Body.insecureIngest == BOOLEAN
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateParticipantToken

enum_ParticipantTokenCapability := [ "PUBLISH", "SUBSCRIBE" ]

valid {
    input.Body.stageArn == STRING
    input.Body.duration == INTEGER
    input.Body.userId == STRING
    input.Body.attributes.STRING == STRING
    input.Body.capabilities[_] == enum_ParticipantTokenCapability[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateStage

enum_ParticipantRecordingMediaType := [ "AUDIO_VIDEO", "AUDIO_ONLY", "NONE" ]
enum_ParticipantTokenCapability := [ "PUBLISH", "SUBSCRIBE" ]
enum_ThumbnailRecordingMode := [ "INTERVAL", "DISABLED" ]
enum_ThumbnailStorageType := [ "SEQUENTIAL", "LATEST" ]

valid {
    input.Body.name == STRING
    input.Body.participantTokenConfigurations[_].duration == INTEGER
    input.Body.participantTokenConfigurations[_].userId == STRING
    input.Body.participantTokenConfigurations[_].attributes.STRING == STRING
    input.Body.participantTokenConfigurations[_].capabilities[_] == enum_ParticipantTokenCapability[_]
    input.Body.tags.STRING == STRING
    input.Body.autoParticipantRecordingConfiguration.storageConfigurationArn == STRING
    input.Body.autoParticipantRecordingConfiguration.mediaTypes[_] == enum_ParticipantRecordingMediaType[_]
    input.Body.autoParticipantRecordingConfiguration.thumbnailConfiguration.targetIntervalSeconds == INTEGER
    input.Body.autoParticipantRecordingConfiguration.thumbnailConfiguration.storage[_] == enum_ThumbnailStorageType[_]
    input.Body.autoParticipantRecordingConfiguration.thumbnailConfiguration.recordingMode == enum_ThumbnailRecordingMode[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateStorageConfiguration

valid {
    input.Body.name == STRING
    input.Body.s3.bucketName == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteEncoderConfiguration

valid {
    input.Body.arn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteIngestConfiguration

valid {
    input.Body.arn == STRING
    input.Body.force == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeletePublicKey

valid {
    input.Body.arn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteStage

valid {
    input.Body.arn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteStorageConfiguration

valid {
    input.Body.arn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DisconnectParticipant

valid {
    input.Body.stageArn == STRING
    input.Body.participantId == STRING
    input.Body.reason == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetComposition

valid {
    input.Body.arn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetEncoderConfiguration

valid {
    input.Body.arn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetIngestConfiguration

valid {
    input.Body.arn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetParticipant

valid {
    input.Body.stageArn == STRING
    input.Body.sessionId == STRING
    input.Body.participantId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetPublicKey

valid {
    input.Body.arn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetStage

valid {
    input.Body.arn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetStageSession

valid {
    input.Body.stageArn == STRING
    input.Body.sessionId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetStorageConfiguration

valid {
    input.Body.arn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ImportPublicKey

valid {
    input.Body.publicKeyMaterial == STRING
    input.Body.name == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListCompositions

valid {
    input.Body.filterByStageArn == STRING
    input.Body.filterByEncoderConfigurationArn == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListEncoderConfigurations

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

ListIngestConfigurations

enum_IngestConfigurationState := [ "ACTIVE", "INACTIVE" ]

valid {
    input.Body.filterByStageArn == STRING
    input.Body.filterByState == enum_IngestConfigurationState[_]
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListParticipantEvents

valid {
    input.Body.stageArn == STRING
    input.Body.sessionId == STRING
    input.Body.participantId == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListParticipants

enum_ParticipantRecordingFilterByRecordingState := [ "STARTING", "ACTIVE", "STOPPING", "STOPPED", "FAILED" ]
enum_ParticipantState := [ "CONNECTED", "DISCONNECTED" ]

valid {
    input.Body.stageArn == STRING
    input.Body.sessionId == STRING
    input.Body.filterByUserId == STRING
    input.Body.filterByPublished == BOOLEAN
    input.Body.filterByState == enum_ParticipantState[_]
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.filterByRecordingState == enum_ParticipantRecordingFilterByRecordingState[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListPublicKeys

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

ListStageSessions

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

ListStages

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

ListStorageConfigurations

valid {
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    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
}

StartComposition

enum_PipBehavior := [ "STATIC", "DYNAMIC" ]
enum_PipPosition := [ "TOP_LEFT", "TOP_RIGHT", "BOTTOM_LEFT", "BOTTOM_RIGHT" ]
enum_RecordingConfigurationFormat := [ "HLS" ]
enum_ThumbnailStorageType := [ "SEQUENTIAL", "LATEST" ]
enum_VideoAspectRatio := [ "AUTO", "VIDEO", "SQUARE", "PORTRAIT" ]
enum_VideoFillMode := [ "FILL", "COVER", "CONTAIN" ]

valid {
    input.Body.stageArn == STRING
    input.Body.idempotencyToken == STRING
    input.Body.layout.grid.featuredParticipantAttribute == STRING
    input.Body.layout.grid.omitStoppedVideo == BOOLEAN
    input.Body.layout.grid.videoAspectRatio == enum_VideoAspectRatio[_]
    input.Body.layout.grid.videoFillMode == enum_VideoFillMode[_]
    input.Body.layout.grid.gridGap == INTEGER
    input.Body.layout.pip.featuredParticipantAttribute == STRING
    input.Body.layout.pip.omitStoppedVideo == BOOLEAN
    input.Body.layout.pip.videoFillMode == enum_VideoFillMode[_]
    input.Body.layout.pip.gridGap == INTEGER
    input.Body.layout.pip.pipParticipantAttribute == STRING
    input.Body.layout.pip.pipBehavior == enum_PipBehavior[_]
    input.Body.layout.pip.pipOffset == INTEGER
    input.Body.layout.pip.pipPosition == enum_PipPosition[_]
    input.Body.layout.pip.pipWidth == INTEGER
    input.Body.layout.pip.pipHeight == INTEGER
    input.Body.destinations[_].name == STRING
    input.Body.destinations[_].channel.channelArn == STRING
    input.Body.destinations[_].channel.encoderConfigurationArn == STRING
    input.Body.destinations[_].s3.storageConfigurationArn == STRING
    input.Body.destinations[_].s3.encoderConfigurationArns[_] == STRING
    input.Body.destinations[_].s3.recordingConfiguration.format == enum_RecordingConfigurationFormat[_]
    input.Body.destinations[_].s3.thumbnailConfigurations[_].targetIntervalSeconds == INTEGER
    input.Body.destinations[_].s3.thumbnailConfigurations[_].storage[_] == enum_ThumbnailStorageType[_]
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StopComposition

valid {
    input.Body.arn == 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
}

UpdateIngestConfiguration

valid {
    input.Body.arn == STRING
    input.Body.stageArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateStage

enum_ParticipantRecordingMediaType := [ "AUDIO_VIDEO", "AUDIO_ONLY", "NONE" ]
enum_ThumbnailRecordingMode := [ "INTERVAL", "DISABLED" ]
enum_ThumbnailStorageType := [ "SEQUENTIAL", "LATEST" ]

valid {
    input.Body.arn == STRING
    input.Body.name == STRING
    input.Body.autoParticipantRecordingConfiguration.storageConfigurationArn == STRING
    input.Body.autoParticipantRecordingConfiguration.mediaTypes[_] == enum_ParticipantRecordingMediaType[_]
    input.Body.autoParticipantRecordingConfiguration.thumbnailConfiguration.targetIntervalSeconds == INTEGER
    input.Body.autoParticipantRecordingConfiguration.thumbnailConfiguration.storage[_] == enum_ThumbnailStorageType[_]
    input.Body.autoParticipantRecordingConfiguration.thumbnailConfiguration.recordingMode == enum_ThumbnailRecordingMode[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}