// Code generated by smithy-go-codegen DO NOT EDIT.

package types

import (
	smithydocument "github.com/aws/smithy-go/document"
)

// Create maintenance setting for a flow
type AddMaintenance struct {

	// A day of a week when the maintenance will happen. Use
	// Monday/Tuesday/Wednesday/Thursday/Friday/Saturday/Sunday.
	//
	// This member is required.
	MaintenanceDay MaintenanceDay

	// UTC time when the maintenance will happen. Use 24-hour HH:MM format. Minutes
	// must be 00. Example: 13:00. The default value is 02:00.
	//
	// This member is required.
	MaintenanceStartHour *string

	noSmithyDocumentSerde
}

// The media stream that you want to add to the flow.
type AddMediaStreamRequest struct {

	// A unique identifier for the media stream.
	//
	// This member is required.
	MediaStreamId int32

	// A name that helps you distinguish one media stream from another.
	//
	// This member is required.
	MediaStreamName *string

	// The type of media stream.
	//
	// This member is required.
	MediaStreamType MediaStreamType

	// The attributes that you want to assign to the new media stream.
	Attributes *MediaStreamAttributesRequest

	// The sample rate (in Hz) for the stream. If the media stream type is video or
	// ancillary data, set this value to 90000. If the media stream type is audio, set
	// this value to either 48000 or 96000.
	ClockRate int32

	// A description that can help you quickly identify what your media stream is used
	// for.
	Description *string

	// The resolution of the video.
	VideoFormat *string

	noSmithyDocumentSerde
}

// The output that you want to add to this flow.
type AddOutputRequest struct {

	// The protocol to use for the output.
	//
	// This member is required.
	Protocol Protocol

	// The range of IP addresses that should be allowed to initiate output requests to
	// this flow. These IP addresses should be in the form of a Classless Inter-Domain
	// Routing (CIDR) block; for example, 10.0.0.0/16.
	CidrAllowList []string

	// A description of the output. This description appears only on the AWS Elemental
	// MediaConnect console and will not be seen by the end user.
	Description *string

	// The IP address from which video will be sent to output destinations.
	Destination *string

	// The type of key used for the encryption. If no keyType is provided, the service
	// will use the default setting (static-key).
	Encryption *Encryption

	// The maximum latency in milliseconds. This parameter applies only to RIST-based,
	// Zixi-based, and Fujitsu-based streams.
	MaxLatency int32

	// The media streams that are associated with the output, and the parameters for
	// those associations.
	MediaStreamOutputConfigurations []MediaStreamOutputConfigurationRequest

	// The minimum latency in milliseconds for SRT-based streams. In streams that use
	// the SRT protocol, this value that you set on your MediaConnect source or output
	// represents the minimal potential latency of that connection. The latency of the
	// stream is set to the highest number between the sender’s minimum latency and the
	// receiver’s minimum latency.
	MinLatency int32

	// The name of the output. This value must be unique within the current flow.
	Name *string

	// The port to use when content is distributed to this output.
	Port int32

	// The remote ID for the Zixi-pull output stream.
	RemoteId *string

	// The port that the flow uses to send outbound requests to initiate connection
	// with the sender.
	SenderControlPort int32

	// The smoothing latency in milliseconds for RIST, RTP, and RTP-FEC streams.
	SmoothingLatency int32

	// The stream ID that you want to use for this transport. This parameter applies
	// only to Zixi-based streams.
	StreamId *string

	// The name of the VPC interface attachment to use for this output.
	VpcInterfaceAttachment *VpcInterfaceAttachment

	noSmithyDocumentSerde
}

// The transport parameters that are associated with an outbound media stream.
type DestinationConfiguration struct {

	// The IP address where contents of the media stream will be sent.
	//
	// This member is required.
	DestinationIp *string

	// The port to use when the content of the media stream is distributed to the
	// output.
	//
	// This member is required.
	DestinationPort int32

	// The VPC interface that is used for the media stream associated with the output.
	//
	// This member is required.
	Interface *Interface

	// The IP address that the receiver requires in order to establish a connection
	// with the flow. This value is represented by the elastic network interface IP
	// address of the VPC. This field applies only to outputs that use the CDI or ST
	// 2110 JPEG XS protocol.
	//
	// This member is required.
	OutboundIp *string

	noSmithyDocumentSerde
}

// The transport parameters that you want to associate with an outbound media
// stream.
type DestinationConfigurationRequest struct {

	// The IP address where you want MediaConnect to send contents of the media stream.
	//
	// This member is required.
	DestinationIp *string

	// The port that you want MediaConnect to use when it distributes the media stream
	// to the output.
	//
	// This member is required.
	DestinationPort int32

	// The VPC interface that you want to use for the media stream associated with the
	// output.
	//
	// This member is required.
	Interface *InterfaceRequest

	noSmithyDocumentSerde
}

// A collection of parameters that determine how MediaConnect will convert the
// content. These fields only apply to outputs on flows that have a CDI source.
type EncodingParameters struct {

	// A value that is used to calculate compression for an output. The bitrate of the
	// output is calculated as follows: Output bitrate = (1 / compressionFactor) *
	// (source bitrate) This property only applies to outputs that use the ST 2110 JPEG
	// XS protocol, with a flow source that uses the CDI protocol. Valid values are
	// floating point numbers in the range of 3.0 to 10.0, inclusive.
	//
	// This member is required.
	CompressionFactor float64

	// A setting on the encoder that drives compression settings. This property only
	// applies to video media streams associated with outputs that use the ST 2110 JPEG
	// XS protocol, with a flow source that uses the CDI protocol.
	//
	// This member is required.
	EncoderProfile EncoderProfile

	noSmithyDocumentSerde
}

// A collection of parameters that determine how MediaConnect will convert the
// content. These fields only apply to outputs on flows that have a CDI source.
type EncodingParametersRequest struct {

	// A value that is used to calculate compression for an output. The bitrate of the
	// output is calculated as follows: Output bitrate = (1 / compressionFactor) *
	// (source bitrate) This property only applies to outputs that use the ST 2110 JPEG
	// XS protocol, with a flow source that uses the CDI protocol. Valid values are
	// floating point numbers in the range of 3.0 to 10.0, inclusive.
	//
	// This member is required.
	CompressionFactor float64

	// A setting on the encoder that drives compression settings. This property only
	// applies to video media streams associated with outputs that use the ST 2110 JPEG
	// XS protocol, if at least one source on the flow uses the CDI protocol.
	//
	// This member is required.
	EncoderProfile EncoderProfile

	noSmithyDocumentSerde
}

// Information about the encryption of the flow.
type Encryption struct {

	// The ARN of the role that you created during setup (when you set up AWS Elemental
	// MediaConnect as a trusted entity).
	//
	// This member is required.
	RoleArn *string

	// The type of algorithm that is used for the encryption (such as aes128, aes192,
	// or aes256).
	Algorithm Algorithm

	// A 128-bit, 16-byte hex value represented by a 32-character string, to be used
	// with the key for encrypting content. This parameter is not valid for static key
	// encryption.
	ConstantInitializationVector *string

	// The value of one of the devices that you configured with your digital rights
	// management (DRM) platform key provider. This parameter is required for SPEKE
	// encryption and is not valid for static key encryption.
	DeviceId *string

	// The type of key that is used for the encryption. If no keyType is provided, the
	// service will use the default setting (static-key).
	KeyType KeyType

	// The AWS Region that the API Gateway proxy endpoint was created in. This
	// parameter is required for SPEKE encryption and is not valid for static key
	// encryption.
	Region *string

	// An identifier for the content. The service sends this value to the key server to
	// identify the current endpoint. The resource ID is also known as the content ID.
	// This parameter is required for SPEKE encryption and is not valid for static key
	// encryption.
	ResourceId *string

	// The ARN of the secret that you created in AWS Secrets Manager to store the
	// encryption key. This parameter is required for static key encryption and is not
	// valid for SPEKE encryption.
	SecretArn *string

	// The URL from the API Gateway proxy that you set up to talk to your key server.
	// This parameter is required for SPEKE encryption and is not valid for static key
	// encryption.
	Url *string

	noSmithyDocumentSerde
}

// The settings for a flow entitlement.
type Entitlement struct {

	// The ARN of the entitlement.
	//
	// This member is required.
	EntitlementArn *string

	// The name of the entitlement.
	//
	// This member is required.
	Name *string

	// The AWS account IDs that you want to share your content with. The receiving
	// accounts (subscribers) will be allowed to create their own flow using your
	// content as the source.
	//
	// This member is required.
	Subscribers []string

	// Percentage from 0-100 of the data transfer cost to be billed to the subscriber.
	DataTransferSubscriberFeePercent int32

	// A description of the entitlement.
	Description *string

	// The type of encryption that will be used on the output that is associated with
	// this entitlement.
	Encryption *Encryption

	// An indication of whether the entitlement is enabled.
	EntitlementStatus EntitlementStatus

	noSmithyDocumentSerde
}

// The settings for source failover.
type FailoverConfig struct {

	// The type of failover you choose for this flow. MERGE combines the source streams
	// into a single stream, allowing graceful recovery from any single-source loss.
	// FAILOVER allows switching between different streams.
	FailoverMode FailoverMode

	// Search window time to look for dash-7 packets
	RecoveryWindow int32

	// The priority you want to assign to a source. You can have a primary stream and a
	// backup stream or two equally prioritized streams.
	SourcePriority *SourcePriority

	State State

	noSmithyDocumentSerde
}

// The settings for a flow, including its source, outputs, and entitlements.
type Flow struct {

	// The Availability Zone that you want to create the flow in. These options are
	// limited to the Availability Zones within the current AWS.
	//
	// This member is required.
	AvailabilityZone *string

	// The entitlements in this flow.
	//
	// This member is required.
	Entitlements []Entitlement

	// The Amazon Resource Name (ARN), a unique identifier for any AWS resource, of the
	// flow.
	//
	// This member is required.
	FlowArn *string

	// The name of the flow.
	//
	// This member is required.
	Name *string

	// The outputs in this flow.
	//
	// This member is required.
	Outputs []Output

	// The settings for the source of the flow.
	//
	// This member is required.
	Source *Source

	// The current status of the flow.
	//
	// This member is required.
	Status Status

	// A description of the flow. This value is not used or seen outside of the current
	// AWS Elemental MediaConnect account.
	Description *string

	// The IP address from which video will be sent to output destinations.
	EgressIp *string

	// The maintenance setting of a flow
	Maintenance *Maintenance

	// The media streams that are associated with the flow. After you associate a media
	// stream with a source, you can also associate it with outputs on the flow.
	MediaStreams []MediaStream

	// The settings for source failover.
	SourceFailoverConfig *FailoverConfig

	Sources []Source

	// The VPC Interfaces for this flow.
	VpcInterfaces []VpcInterface

	noSmithyDocumentSerde
}

// FMTP
type Fmtp struct {

	// The format of the audio channel.
	ChannelOrder *string

	// The format that is used for the representation of color.
	Colorimetry Colorimetry

	// The frame rate for the video stream, in frames/second. For example: 60000/1001.
	// If you specify a whole number, MediaConnect uses a ratio of N/1. For example, if
	// you specify 60, MediaConnect uses 60/1 as the exactFramerate.
	ExactFramerate *string

	// The pixel aspect ratio (PAR) of the video.
	Par *string

	// The encoding range of the video.
	Range Range

	// The type of compression that was used to smooth the video’s appearance
	ScanMode ScanMode

	// The transfer characteristic system (TCS) that is used in the video.
	Tcs Tcs

	noSmithyDocumentSerde
}

// The settings that you want to use to define the media stream.
type FmtpRequest struct {

	// The format of the audio channel.
	ChannelOrder *string

	// The format that is used for the representation of color.
	Colorimetry Colorimetry

	// The frame rate for the video stream, in frames/second. For example: 60000/1001.
	// If you specify a whole number, MediaConnect uses a ratio of N/1. For example, if
	// you specify 60, MediaConnect uses 60/1 as the exactFramerate.
	ExactFramerate *string

	// The pixel aspect ratio (PAR) of the video.
	Par *string

	// The encoding range of the video.
	Range Range

	// The type of compression that was used to smooth the video’s appearance.
	ScanMode ScanMode

	// The transfer characteristic system (TCS) that is used in the video.
	Tcs Tcs

	noSmithyDocumentSerde
}

// The entitlements that you want to grant on a flow.
type GrantEntitlementRequest struct {

	// The AWS account IDs that you want to share your content with. The receiving
	// accounts (subscribers) will be allowed to create their own flows using your
	// content as the source.
	//
	// This member is required.
	Subscribers []string

	// Percentage from 0-100 of the data transfer cost to be billed to the subscriber.
	DataTransferSubscriberFeePercent int32

	// A description of the entitlement. This description appears only on the AWS
	// Elemental MediaConnect console and will not be seen by the subscriber or end
	// user.
	Description *string

	// The type of encryption that will be used on the output that is associated with
	// this entitlement.
	Encryption *Encryption

	// An indication of whether the new entitlement should be enabled or disabled as
	// soon as it is created. If you don’t specify the entitlementStatus field in your
	// request, MediaConnect sets it to ENABLED.
	EntitlementStatus EntitlementStatus

	// The name of the entitlement. This value must be unique within the current flow.
	Name *string

	noSmithyDocumentSerde
}

// The transport parameters that are associated with an incoming media stream.
type InputConfiguration struct {

	// The IP address that the flow listens on for incoming content for a media stream.
	//
	// This member is required.
	InputIp *string

	// The port that the flow listens on for an incoming media stream.
	//
	// This member is required.
	InputPort int32

	// The VPC interface where the media stream comes in from.
	//
	// This member is required.
	Interface *Interface

	noSmithyDocumentSerde
}

// The transport parameters that you want to associate with an incoming media
// stream.
type InputConfigurationRequest struct {

	// The port that you want the flow to listen on for an incoming media stream.
	//
	// This member is required.
	InputPort int32

	// The VPC interface that you want to use for the incoming media stream.
	//
	// This member is required.
	Interface *InterfaceRequest

	noSmithyDocumentSerde
}

// The VPC interface that is used for the media stream associated with the source
// or output.
type Interface struct {

	// The name of the VPC interface.
	//
	// This member is required.
	Name *string

	noSmithyDocumentSerde
}

// The VPC interface that you want to designate where the media stream is coming
// from or going to.
type InterfaceRequest struct {

	// The name of the VPC interface.
	//
	// This member is required.
	Name *string

	noSmithyDocumentSerde
}

// An entitlement that has been granted to you from other AWS accounts.
type ListedEntitlement struct {

	// The ARN of the entitlement.
	//
	// This member is required.
	EntitlementArn *string

	// The name of the entitlement.
	//
	// This member is required.
	EntitlementName *string

	// Percentage from 0-100 of the data transfer cost to be billed to the subscriber.
	DataTransferSubscriberFeePercent int32

	noSmithyDocumentSerde
}

// Provides a summary of a flow, including its ARN, Availability Zone, and source
// type.
type ListedFlow struct {

	// The Availability Zone that the flow was created in.
	//
	// This member is required.
	AvailabilityZone *string

	// A description of the flow.
	//
	// This member is required.
	Description *string

	// The ARN of the flow.
	//
	// This member is required.
	FlowArn *string

	// The name of the flow.
	//
	// This member is required.
	Name *string

	// The type of source. This value is either owned (originated somewhere other than
	// an AWS Elemental MediaConnect flow owned by another AWS account) or entitled
	// (originated at an AWS Elemental MediaConnect flow owned by another AWS account).
	//
	// This member is required.
	SourceType SourceType

	// The current status of the flow.
	//
	// This member is required.
	Status Status

	// The maintenance setting of a flow
	Maintenance *Maintenance

	noSmithyDocumentSerde
}

// The maintenance setting of a flow
type Maintenance struct {

	// A day of a week when the maintenance will happen. Use
	// Monday/Tuesday/Wednesday/Thursday/Friday/Saturday/Sunday.
	MaintenanceDay MaintenanceDay

	// The Maintenance has to be performed before this deadline in ISO UTC format.
	// Example: 2021-01-30T08:30:00Z.
	MaintenanceDeadline *string

	// A scheduled date in ISO UTC format when the maintenance will happen. Use
	// YYYY-MM-DD format. Example: 2021-01-30.
	MaintenanceScheduledDate *string

	// UTC time when the maintenance will happen. Use 24-hour HH:MM format. Minutes
	// must be 00. Example: 13:00. The default value is 02:00.
	MaintenanceStartHour *string

	noSmithyDocumentSerde
}

// A single track or stream of media that contains video, audio, or ancillary data.
// After you add a media stream to a flow, you can associate it with sources and
// outputs on that flow, as long as they use the CDI protocol or the ST 2110 JPEG
// XS protocol. Each source or output can consist of one or many media streams.
type MediaStream struct {

	// The format type number (sometimes referred to as RTP payload type) of the media
	// stream. MediaConnect assigns this value to the media stream. For ST 2110 JPEG XS
	// outputs, you need to provide this value to the receiver.
	//
	// This member is required.
	Fmt int32

	// A unique identifier for the media stream.
	//
	// This member is required.
	MediaStreamId int32

	// A name that helps you distinguish one media stream from another.
	//
	// This member is required.
	MediaStreamName *string

	// The type of media stream.
	//
	// This member is required.
	MediaStreamType MediaStreamType

	// Attributes that are related to the media stream.
	Attributes *MediaStreamAttributes

	// The sample rate for the stream. This value is measured in Hz.
	ClockRate int32

	// A description that can help you quickly identify what your media stream is used
	// for.
	Description *string

	// The resolution of the video.
	VideoFormat *string

	noSmithyDocumentSerde
}

// Attributes that are related to the media stream.
type MediaStreamAttributes struct {

	// A set of parameters that define the media stream.
	//
	// This member is required.
	Fmtp *Fmtp

	// The audio language, in a format that is recognized by the receiver.
	Lang *string

	noSmithyDocumentSerde
}

// Attributes that are related to the media stream.
type MediaStreamAttributesRequest struct {

	// The settings that you want to use to define the media stream.
	Fmtp *FmtpRequest

	// The audio language, in a format that is recognized by the receiver.
	Lang *string

	noSmithyDocumentSerde
}

// The media stream that is associated with the output, and the parameters for that
// association.
type MediaStreamOutputConfiguration struct {

	// The format that was used to encode the data. For ancillary data streams, set the
	// encoding name to smpte291. For audio streams, set the encoding name to pcm. For
	// video, 2110 streams, set the encoding name to raw. For video, JPEG XS streams,
	// set the encoding name to jxsv.
	//
	// This member is required.
	EncodingName EncodingName

	// The name of the media stream.
	//
	// This member is required.
	MediaStreamName *string

	// The transport parameters that are associated with each outbound media stream.
	DestinationConfigurations []DestinationConfiguration

	// Encoding parameters
	EncodingParameters *EncodingParameters

	noSmithyDocumentSerde
}

// The media stream that you want to associate with the output, and the parameters
// for that association.
type MediaStreamOutputConfigurationRequest struct {

	// The format that will be used to encode the data. For ancillary data streams, set
	// the encoding name to smpte291. For audio streams, set the encoding name to pcm.
	// For video, 2110 streams, set the encoding name to raw. For video, JPEG XS
	// streams, set the encoding name to jxsv.
	//
	// This member is required.
	EncodingName EncodingName

	// The name of the media stream that is associated with the output.
	//
	// This member is required.
	MediaStreamName *string

	// The transport parameters that you want to associate with the media stream.
	DestinationConfigurations []DestinationConfigurationRequest

	// A collection of parameters that determine how MediaConnect will convert the
	// content. These fields only apply to outputs on flows that have a CDI source.
	EncodingParameters *EncodingParametersRequest

	noSmithyDocumentSerde
}

// The media stream that is associated with the source, and the parameters for that
// association.
type MediaStreamSourceConfiguration struct {

	// The format that was used to encode the data. For ancillary data streams, set the
	// encoding name to smpte291. For audio streams, set the encoding name to pcm. For
	// video, 2110 streams, set the encoding name to raw. For video, JPEG XS streams,
	// set the encoding name to jxsv.
	//
	// This member is required.
	EncodingName EncodingName

	// The name of the media stream.
	//
	// This member is required.
	MediaStreamName *string

	// The transport parameters that are associated with an incoming media stream.
	InputConfigurations []InputConfiguration

	noSmithyDocumentSerde
}

// The definition of a media stream that you want to associate with the source.
type MediaStreamSourceConfigurationRequest struct {

	// The format you want to use to encode the data. For ancillary data streams, set
	// the encoding name to smpte291. For audio streams, set the encoding name to pcm.
	// For video, 2110 streams, set the encoding name to raw. For video, JPEG XS
	// streams, set the encoding name to jxsv.
	//
	// This member is required.
	EncodingName EncodingName

	// The name of the media stream.
	//
	// This member is required.
	MediaStreamName *string

	// The transport parameters that you want to associate with the media stream.
	InputConfigurations []InputConfigurationRequest

	noSmithyDocumentSerde
}

// Messages that provide the state of the flow.
type Messages struct {

	// A list of errors that might have been generated from processes on this flow.
	//
	// This member is required.
	Errors []string

	noSmithyDocumentSerde
}

// A savings plan that reserves a certain amount of outbound bandwidth usage at a
// discounted rate each month over a period of time.
type Offering struct {

	// The type of currency that is used for billing. The currencyCode used for all
	// reservations is US dollars.
	//
	// This member is required.
	CurrencyCode *string

	// The length of time that your reservation would be active.
	//
	// This member is required.
	Duration int32

	// The unit of measurement for the duration of the offering.
	//
	// This member is required.
	DurationUnits DurationUnits

	// The Amazon Resource Name (ARN) that MediaConnect assigns to the offering.
	//
	// This member is required.
	OfferingArn *string

	// A description of the offering.
	//
	// This member is required.
	OfferingDescription *string

	// The cost of a single unit. This value, in combination with priceUnits, makes up
	// the rate.
	//
	// This member is required.
	PricePerUnit *string

	// The unit of measurement that is used for billing. This value, in combination
	// with pricePerUnit, makes up the rate.
	//
	// This member is required.
	PriceUnits PriceUnits

	// A definition of the amount of outbound bandwidth that you would be reserving if
	// you purchase the offering.
	//
	// This member is required.
	ResourceSpecification *ResourceSpecification

	noSmithyDocumentSerde
}

// The settings for an output.
type Output struct {

	// The name of the output. This value must be unique within the current flow.
	//
	// This member is required.
	Name *string

	// The ARN of the output.
	//
	// This member is required.
	OutputArn *string

	// Percentage from 0-100 of the data transfer cost to be billed to the subscriber.
	DataTransferSubscriberFeePercent int32

	// A description of the output.
	Description *string

	// The address where you want to send the output.
	Destination *string

	// The type of key used for the encryption. If no keyType is provided, the service
	// will use the default setting (static-key).
	Encryption *Encryption

	// The ARN of the entitlement on the originator''s flow. This value is relevant
	// only on entitled flows.
	EntitlementArn *string

	// The IP address that the receiver requires in order to establish a connection
	// with the flow. For public networking, the ListenerAddress is represented by the
	// elastic IP address of the flow. For private networking, the ListenerAddress is
	// represented by the elastic network interface IP address of the VPC. This field
	// applies only to outputs that use the Zixi pull or SRT listener protocol.
	ListenerAddress *string

	// The input ARN of the AWS Elemental MediaLive channel. This parameter is relevant
	// only for outputs that were added by creating a MediaLive input.
	MediaLiveInputArn *string

	// The configuration for each media stream that is associated with the output.
	MediaStreamOutputConfigurations []MediaStreamOutputConfiguration

	// The port to use when content is distributed to this output.
	Port int32

	// Attributes related to the transport stream that are used in the output.
	Transport *Transport

	// The name of the VPC interface attachment to use for this output.
	VpcInterfaceAttachment *VpcInterfaceAttachment

	noSmithyDocumentSerde
}

// A pricing agreement for a discounted rate for a specific outbound bandwidth that
// your MediaConnect account will use each month over a specific time period. The
// discounted rate in the reservation applies to outbound bandwidth for all flows
// from your account until your account reaches the amount of bandwidth in your
// reservation. If you use more outbound bandwidth than the agreed upon amount in a
// single month, the overage is charged at the on-demand rate.
type Reservation struct {

	// The type of currency that is used for billing. The currencyCode used for your
	// reservation is US dollars.
	//
	// This member is required.
	CurrencyCode *string

	// The length of time that this reservation is active. MediaConnect defines this
	// value in the offering.
	//
	// This member is required.
	Duration int32

	// The unit of measurement for the duration of the reservation. MediaConnect
	// defines this value in the offering.
	//
	// This member is required.
	DurationUnits DurationUnits

	// The day and time that this reservation expires. This value is calculated based
	// on the start date and time that you set and the offering's duration.
	//
	// This member is required.
	End *string

	// The Amazon Resource Name (ARN) that MediaConnect assigns to the offering.
	//
	// This member is required.
	OfferingArn *string

	// A description of the offering. MediaConnect defines this value in the offering.
	//
	// This member is required.
	OfferingDescription *string

	// The cost of a single unit. This value, in combination with priceUnits, makes up
	// the rate. MediaConnect defines this value in the offering.
	//
	// This member is required.
	PricePerUnit *string

	// The unit of measurement that is used for billing. This value, in combination
	// with pricePerUnit, makes up the rate. MediaConnect defines this value in the
	// offering.
	//
	// This member is required.
	PriceUnits PriceUnits

	// The Amazon Resource Name (ARN) that MediaConnect assigns to the reservation when
	// you purchase an offering.
	//
	// This member is required.
	ReservationArn *string

	// The name that you assigned to the reservation when you purchased the offering.
	//
	// This member is required.
	ReservationName *string

	// The status of your reservation.
	//
	// This member is required.
	ReservationState ReservationState

	// A definition of the amount of outbound bandwidth that you would be reserving if
	// you purchase the offering. MediaConnect defines the values that make up the
	// resourceSpecification in the offering.
	//
	// This member is required.
	ResourceSpecification *ResourceSpecification

	// The day and time that the reservation becomes active. You set this value when
	// you purchase the offering.
	//
	// This member is required.
	Start *string

	noSmithyDocumentSerde
}

// A definition of what is being billed for, including the type and amount.
type ResourceSpecification struct {

	// The type of resource and the unit that is being billed for.
	//
	// This member is required.
	ResourceType ResourceType

	// The amount of outbound bandwidth that is discounted in the offering.
	ReservedBitrate int32

	noSmithyDocumentSerde
}

// The settings for the source of the flow.
type SetSourceRequest struct {

	// The type of encryption that is used on the content ingested from this source.
	Decryption *Encryption

	// A description for the source. This value is not used or seen outside of the
	// current AWS Elemental MediaConnect account.
	Description *string

	// The ARN of the entitlement that allows you to subscribe to this flow. The
	// entitlement is set by the flow originator, and the ARN is generated as part of
	// the originator's flow.
	EntitlementArn *string

	// The port that the flow will be listening on for incoming content.
	IngestPort int32

	// The smoothing max bitrate for RIST, RTP, and RTP-FEC streams.
	MaxBitrate int32

	// The maximum latency in milliseconds. This parameter applies only to RIST-based,
	// Zixi-based, and Fujitsu-based streams.
	MaxLatency int32

	// The size of the buffer (in milliseconds) to use to sync incoming source data.
	MaxSyncBuffer int32

	// The media streams that are associated with the source, and the parameters for
	// those associations.
	MediaStreamSourceConfigurations []MediaStreamSourceConfigurationRequest

	// The minimum latency in milliseconds for SRT-based streams. In streams that use
	// the SRT protocol, this value that you set on your MediaConnect source or output
	// represents the minimal potential latency of that connection. The latency of the
	// stream is set to the highest number between the sender’s minimum latency and the
	// receiver’s minimum latency.
	MinLatency int32

	// The name of the source.
	Name *string

	// The protocol that is used by the source.
	Protocol Protocol

	// The port that the flow uses to send outbound requests to initiate connection
	// with the sender.
	SenderControlPort int32

	// The IP address that the flow communicates with to initiate connection with the
	// sender.
	SenderIpAddress *string

	// Source IP or domain name for SRT-caller protocol.
	SourceListenerAddress *string

	// Source port for SRT-caller protocol.
	SourceListenerPort int32

	// The stream ID that you want to use for this transport. This parameter applies
	// only to Zixi-based streams.
	StreamId *string

	// The name of the VPC interface to use for this source.
	VpcInterfaceName *string

	// The range of IP addresses that should be allowed to contribute content to your
	// source. These IP addresses should be in the form of a Classless Inter-Domain
	// Routing (CIDR) block; for example, 10.0.0.0/16.
	WhitelistCidr *string

	noSmithyDocumentSerde
}

// The settings for the source of the flow.
type Source struct {

	// The name of the source.
	//
	// This member is required.
	Name *string

	// The ARN of the source.
	//
	// This member is required.
	SourceArn *string

	// Percentage from 0-100 of the data transfer cost to be billed to the subscriber.
	DataTransferSubscriberFeePercent int32

	// The type of encryption that is used on the content ingested from this source.
	Decryption *Encryption

	// A description for the source. This value is not used or seen outside of the
	// current AWS Elemental MediaConnect account.
	Description *string

	// The ARN of the entitlement that allows you to subscribe to content that comes
	// from another AWS account. The entitlement is set by the content originator and
	// the ARN is generated as part of the originator's flow.
	EntitlementArn *string

	// The IP address that the flow will be listening on for incoming content.
	IngestIp *string

	// The port that the flow will be listening on for incoming content.
	IngestPort int32

	// The media streams that are associated with the source, and the parameters for
	// those associations.
	MediaStreamSourceConfigurations []MediaStreamSourceConfiguration

	// The port that the flow uses to send outbound requests to initiate connection
	// with the sender.
	SenderControlPort int32

	// The IP address that the flow communicates with to initiate connection with the
	// sender.
	SenderIpAddress *string

	// Attributes related to the transport stream that are used in the source.
	Transport *Transport

	// The name of the VPC interface that is used for this source.
	VpcInterfaceName *string

	// The range of IP addresses that should be allowed to contribute content to your
	// source. These IP addresses should be in the form of a Classless Inter-Domain
	// Routing (CIDR) block; for example, 10.0.0.0/16.
	WhitelistCidr *string

	noSmithyDocumentSerde
}

// The priority you want to assign to a source. You can have a primary stream and a
// backup stream or two equally prioritized streams.
type SourcePriority struct {

	// The name of the source you choose as the primary source for this flow.
	PrimarySource *string

	noSmithyDocumentSerde
}

// Attributes related to the transport stream that are used in a source or output.
type Transport struct {

	// The protocol that is used by the source or output.
	//
	// This member is required.
	Protocol Protocol

	// The range of IP addresses that should be allowed to initiate output requests to
	// this flow. These IP addresses should be in the form of a Classless Inter-Domain
	// Routing (CIDR) block; for example, 10.0.0.0/16.
	CidrAllowList []string

	// The smoothing max bitrate for RIST, RTP, and RTP-FEC streams.
	MaxBitrate int32

	// The maximum latency in milliseconds. This parameter applies only to RIST-based,
	// Zixi-based, and Fujitsu-based streams.
	MaxLatency int32

	// The size of the buffer (in milliseconds) to use to sync incoming source data.
	MaxSyncBuffer int32

	// The minimum latency in milliseconds for SRT-based streams. In streams that use
	// the SRT protocol, this value that you set on your MediaConnect source or output
	// represents the minimal potential latency of that connection. The latency of the
	// stream is set to the highest number between the sender’s minimum latency and the
	// receiver’s minimum latency.
	MinLatency int32

	// The remote ID for the Zixi-pull stream.
	RemoteId *string

	// The port that the flow uses to send outbound requests to initiate connection
	// with the sender.
	SenderControlPort int32

	// The IP address that the flow communicates with to initiate connection with the
	// sender.
	SenderIpAddress *string

	// The smoothing latency in milliseconds for RIST, RTP, and RTP-FEC streams.
	SmoothingLatency int32

	// Source IP or domain name for SRT-caller protocol.
	SourceListenerAddress *string

	// Source port for SRT-caller protocol.
	SourceListenerPort int32

	// The stream ID that you want to use for this transport. This parameter applies
	// only to Zixi-based streams.
	StreamId *string

	noSmithyDocumentSerde
}

// Information about the encryption of the flow.
type UpdateEncryption struct {

	// The type of algorithm that is used for the encryption (such as aes128, aes192,
	// or aes256).
	Algorithm Algorithm

	// A 128-bit, 16-byte hex value represented by a 32-character string, to be used
	// with the key for encrypting content. This parameter is not valid for static key
	// encryption.
	ConstantInitializationVector *string

	// The value of one of the devices that you configured with your digital rights
	// management (DRM) platform key provider. This parameter is required for SPEKE
	// encryption and is not valid for static key encryption.
	DeviceId *string

	// The type of key that is used for the encryption. If no keyType is provided, the
	// service will use the default setting (static-key).
	KeyType KeyType

	// The AWS Region that the API Gateway proxy endpoint was created in. This
	// parameter is required for SPEKE encryption and is not valid for static key
	// encryption.
	Region *string

	// An identifier for the content. The service sends this value to the key server to
	// identify the current endpoint. The resource ID is also known as the content ID.
	// This parameter is required for SPEKE encryption and is not valid for static key
	// encryption.
	ResourceId *string

	// The ARN of the role that you created during setup (when you set up AWS Elemental
	// MediaConnect as a trusted entity).
	RoleArn *string

	// The ARN of the secret that you created in AWS Secrets Manager to store the
	// encryption key. This parameter is required for static key encryption and is not
	// valid for SPEKE encryption.
	SecretArn *string

	// The URL from the API Gateway proxy that you set up to talk to your key server.
	// This parameter is required for SPEKE encryption and is not valid for static key
	// encryption.
	Url *string

	noSmithyDocumentSerde
}

// The settings for source failover.
type UpdateFailoverConfig struct {

	// The type of failover you choose for this flow. MERGE combines the source streams
	// into a single stream, allowing graceful recovery from any single-source loss.
	// FAILOVER allows switching between different streams.
	FailoverMode FailoverMode

	// Recovery window time to look for dash-7 packets
	RecoveryWindow int32

	// The priority you want to assign to a source. You can have a primary stream and a
	// backup stream or two equally prioritized streams.
	SourcePriority *SourcePriority

	State State

	noSmithyDocumentSerde
}

// Update maintenance setting for a flow
type UpdateMaintenance struct {

	// A day of a week when the maintenance will happen. use
	// Monday/Tuesday/Wednesday/Thursday/Friday/Saturday/Sunday.
	MaintenanceDay MaintenanceDay

	// A scheduled date in ISO UTC format when the maintenance will happen. Use
	// YYYY-MM-DD format. Example: 2021-01-30.
	MaintenanceScheduledDate *string

	// UTC time when the maintenance will happen. Use 24-hour HH:MM format. Minutes
	// must be 00. Example: 13:00. The default value is 02:00.
	MaintenanceStartHour *string

	noSmithyDocumentSerde
}

// The settings for a VPC Source.
type VpcInterface struct {

	// Immutable and has to be a unique against other VpcInterfaces in this Flow.
	//
	// This member is required.
	Name *string

	// IDs of the network interfaces created in customer's account by MediaConnect.
	//
	// This member is required.
	NetworkInterfaceIds []string

	// The type of network interface.
	//
	// This member is required.
	NetworkInterfaceType NetworkInterfaceType

	// Role Arn MediaConnect can assumes to create ENIs in customer's account
	//
	// This member is required.
	RoleArn *string

	// Security Group IDs to be used on ENI.
	//
	// This member is required.
	SecurityGroupIds []string

	// Subnet must be in the AZ of the Flow
	//
	// This member is required.
	SubnetId *string

	noSmithyDocumentSerde
}

// The settings for attaching a VPC interface to an output.
type VpcInterfaceAttachment struct {

	// The name of the VPC interface to use for this output.
	VpcInterfaceName *string

	noSmithyDocumentSerde
}

// Desired VPC Interface for a Flow
type VpcInterfaceRequest struct {

	// The name of the VPC Interface. This value must be unique within the current
	// flow.
	//
	// This member is required.
	Name *string

	// Role Arn MediaConnect can assumes to create ENIs in customer's account
	//
	// This member is required.
	RoleArn *string

	// Security Group IDs to be used on ENI.
	//
	// This member is required.
	SecurityGroupIds []string

	// Subnet must be in the AZ of the Flow
	//
	// This member is required.
	SubnetId *string

	// The type of network interface. If this value is not included in the request,
	// MediaConnect uses ENA as the networkInterfaceType.
	NetworkInterfaceType NetworkInterfaceType

	noSmithyDocumentSerde
}

type noSmithyDocumentSerde = smithydocument.NoSerde
